From a50a4554bbeacf4db3daf735d7aa39a8665d37ed Mon Sep 17 00:00:00 2001 From: Sreemon Premkumar M Date: Tue, 19 Aug 2025 03:25:43 +0530 Subject: [PATCH 1/2] ES-975464 - Resolve the ReadMe file length issue in this sample repository --- README.md | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6cb8c5a..5267d87 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,92 @@ -# How to print wpf treegrid with pdfviewercontrol? -This sample illustrates how to print wpf treegrid with pdfviewercontrol +# How to print wpf treegrid with pdfviewercontrol + +This sample illustrates how to print [WPF TreeGrid](https://www.syncfusion.com/wpf-controls/treegrid) with [PdfViewerControl](https://help.syncfusion.com/wpf/pdf-viewer/printing-pdf-files). + +## Default Printing + +The printing feature can be achieved by exporting the `TreeGrid` to PDF and printing the exported PDF using the `PdfViewerControl`. + +``` c# +var options = new TreeGridPdfExportingOptions(); +FileStream fileStream = new FileStream("Sample.pdf", FileMode.Create); +var document = treeGrid.ExportToPdf(options); +MemoryStream stream = new MemoryStream(); +document.Save(stream); +PdfViewerControl pdfViewer = new PdfViewerControl(); +pdfViewer.Load(stream); +Window window = new Window(); +window.Content = pdfViewer; +window.Loaded += Window_Loaded; +window.Show(); + +private void Window_Loaded(object sender, RoutedEventArgs e) +{ + var toolbar = pdfViewer.Template.FindName("PART_Toolbar", pdfViewer) as DocumentToolbar; + // Get an instance of the open and save file buttons using its template name. + Button openButton = (Button)toolbar.Template.FindName("PART_ButtonOpen", toolbar); + Button saveButton = (Button)toolbar.Template.FindName("PART_ButtonSave", toolbar); + + // Set visibility of the button to collapsed. + openButton.Visibility = System.Windows.Visibility.Collapsed; + saveButton.Visibility = Visibility.Collapsed; +} +``` + +## Custom Printing + +You can print only the parent and expanded child nodes by overriding the `ExportNodesToPdf` method of the `TreeGridToPdfConverter` class. + +```c# +var options = new TreeGridPdfExportingOptions(); +options.AllowIndentColumn = true; +options.FitAllColumnsInOnePage = true; + +var document = treeGrid.ExportToPdf(options, true); + +PdfViewerControl pdfViewer = new PdfViewerControl(); +MemoryStream stream = new MemoryStream(); +document.Save(stream); +PdfLoadedDocument ldoc = new PdfLoadedDocument(stream); +pdfViewer.Load(ldoc); +// If you want to show the pdf viewer window, enable the following line. +MainWindow pdfPage = new MainWindow(); +pdfPage.Content = pdfViewer; +pdfPage.Show(); +pdfViewer.Print(true); + +public class TreeGridCustomPdfConverter : TreeGridToPdfConverter +{ + internal bool _excludeNonExpandedNodes; + public TreeGridCustomPdfConverter(bool excludeNonExpandedNodes) :base() + { + _excludeNonExpandedNodes = excludeNonExpandedNodes; + } + /// + /// ExportNodes to PDF + /// + /// + /// + /// + /// + protected override void ExportNodesToPdf(SfTreeGrid treeGrid, TreeNodes nodes, PdfGrid pdfGrid, TreeGridPdfExportingOptions pdfExportingOptions) + { + if (!_excludeNonExpandedNodes) + { + base.ExportNodesToPdf(treeGrid, nodes, pdfGrid, pdfExportingOptions); + } + else + { + for (int i = 0; i < nodes.Count; i++) + { + TreeNode node = nodes[i]; + ExportNodeToPdf(treeGrid, node, pdfGrid, pdfExportingOptions); + if (node.IsExpanded && node.HasChildNodes) + { + node.PopulateChildNodes(); + ExportNodesToPdf(treeGrid, node.ChildNodes, pdfGrid, pdfExportingOptions); + } + } + } + } +} +``` \ No newline at end of file From a08c6dea095466a1312c59d5e688daa8411df257 Mon Sep 17 00:00:00 2001 From: SreemonPremkumarMuthukrishnan Date: Tue, 4 Nov 2025 00:00:11 +0530 Subject: [PATCH 2/2] ES-975464 - Addressed the concerns --- PrintPreview.png | Bin 0 -> 50591 bytes README.md | 20 ++++++++++---------- 2 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 PrintPreview.png diff --git a/PrintPreview.png b/PrintPreview.png new file mode 100644 index 0000000000000000000000000000000000000000..2c68c69e67870c848bf758eb53164e4f865e0d98 GIT binary patch literal 50591 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 5267d87..bd6e08a 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ -# How to print wpf treegrid with pdfviewercontrol +# How to Print WPF TreeGrid with PdfViewerControl? -This sample illustrates how to print [WPF TreeGrid](https://www.syncfusion.com/wpf-controls/treegrid) with [PdfViewerControl](https://help.syncfusion.com/wpf/pdf-viewer/printing-pdf-files). +This sample illustrates how to print [WPF TreeGrid](https://www.syncfusion.com/wpf-controls/treegrid) (SfTreeGrid) with [PdfViewerControl](https://help.syncfusion.com/wpf/pdf-viewer/printing-pdf-files). -## Default Printing - -The printing feature can be achieved by exporting the `TreeGrid` to PDF and printing the exported PDF using the `PdfViewerControl`. +The printing feature can be achieved by exporting the **TreeGrid** to PDF and printing the exported PDF using the **PdfViewerControl**. ``` c# var options = new TreeGridPdfExportingOptions(); @@ -32,17 +30,17 @@ private void Window_Loaded(object sender, RoutedEventArgs e) } ``` -## Custom Printing +![Printing TreeGrid with PdfViewerControl](PrintPreview.png) + +### Print Parent and Expanded Child Nodes: -You can print only the parent and expanded child nodes by overriding the `ExportNodesToPdf` method of the `TreeGridToPdfConverter` class. +You can print only the parent and expanded child nodes by overriding the [ExportNodesToPdf](https://help.syncfusion.com/cr/wpf/Syncfusion.UI.Xaml.TreeGrid.Converter.TreeGridToPdfConverter.html#Syncfusion_UI_Xaml_TreeGrid_Converter_TreeGridToPdfConverter_ExportNodesToPdf_Syncfusion_UI_Xaml_TreeGrid_SfTreeGrid_Syncfusion_UI_Xaml_TreeGrid_TreeNodes_Syncfusion_Pdf_Grid_PdfGrid_Syncfusion_UI_Xaml_TreeGrid_Converter_TreeGridPdfExportingOptions_) method of the [TreeGridToPdfConverter](https://help.syncfusion.com/cr/wpf/Syncfusion.UI.Xaml.TreeGrid.Converter.TreeGridToPdfConverter.html) class. -```c# +``` csharp var options = new TreeGridPdfExportingOptions(); options.AllowIndentColumn = true; options.FitAllColumnsInOnePage = true; - var document = treeGrid.ExportToPdf(options, true); - PdfViewerControl pdfViewer = new PdfViewerControl(); MemoryStream stream = new MemoryStream(); document.Save(stream); @@ -57,10 +55,12 @@ pdfViewer.Print(true); public class TreeGridCustomPdfConverter : TreeGridToPdfConverter { internal bool _excludeNonExpandedNodes; + public TreeGridCustomPdfConverter(bool excludeNonExpandedNodes) :base() { _excludeNonExpandedNodes = excludeNonExpandedNodes; } + /// /// ExportNodes to PDF ///