Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added PrintPreview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
94 changes: 92 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -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) (SfTreeGrid) with [PdfViewerControl](https://help.syncfusion.com/wpf/pdf-viewer/printing-pdf-files).

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;
}
```

![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](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.

``` 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);
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;
}

/// <summary>
/// ExportNodes to PDF
/// </summary>
/// <param name="treeGrid"></param>
/// <param name="nodes"></param>
/// <param name="pdfGrid"></param>
/// <param name="pdfExportingOptions"></param>
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);
}
}
}
}
}
```