private void OnPrint(object sender, RoutedEventArgs e) { var printDialog = new PrintDialog(); if (printDialog.ShowDialog() == true) { var flowDocument = DocReader.Document; // Save all the existing settings. var pageHeight = flowDocument.PageHeight; var pageWidth = flowDocument.PageWidth; var pagePadding = flowDocument.PagePadding; var columnGap = flowDocument.ColumnGap; var columnWidth = flowDocument.ColumnWidth; // Make the FlowDocument page match the printed page. flowDocument.PageHeight = printDialog.PrintableAreaHeight; flowDocument.PageWidth = printDialog.PrintableAreaWidth; flowDocument.PagePadding = new Thickness(50); // Use two columns. flowDocument.ColumnGap = 25; flowDocument.ColumnWidth = (flowDocument.PageWidth - flowDocument.ColumnGap - flowDocument.PagePadding.Left - flowDocument.PagePadding.Right) / 2; var document = flowDocument; DocReader.Document = null; var paginator = new HeaderedFlowDocumentPaginator(document); printDialog.PrintDocument(paginator, "A Flow Document"); DocReader.Document = document; // Reapply the old settings. flowDocument.PageHeight = pageHeight; flowDocument.PageWidth = pageWidth; flowDocument.PagePadding = pagePadding; flowDocument.ColumnGap = columnGap; flowDocument.ColumnWidth = columnWidth; } }
private void cmdPrint_Click(object sender, RoutedEventArgs e) { PrintDialog printDialog = new PrintDialog(); if (printDialog.ShowDialog() == true) { // Save all the existing settings. double pageHeight = docReader.Document.PageHeight; double pageWidth = docReader.Document.PageWidth; Thickness pagePadding = docReader.Document.PagePadding; double columnGap = docReader.Document.ColumnGap; double columnWidth = docReader.Document.ColumnWidth; // Make the FlowDocument page match the printed page. docReader.Document.PageHeight = printDialog.PrintableAreaHeight; docReader.Document.PageWidth = printDialog.PrintableAreaWidth; docReader.Document.PagePadding = new Thickness(50); // Use two columns. docReader.Document.ColumnGap = 25; docReader.Document.ColumnWidth = (docReader.Document.PageWidth - docReader.Document.ColumnGap - docReader.Document.PagePadding.Left - docReader.Document.PagePadding.Right) / 2; FlowDocument document = docReader.Document; docReader.Document = null; HeaderedFlowDocumentPaginator paginator = new HeaderedFlowDocumentPaginator(document); printDialog.PrintDocument(paginator, "A Flow Document"); docReader.Document = document; // Reapply the old settings. docReader.Document.PageHeight = pageHeight; docReader.Document.PageWidth = pageWidth; docReader.Document.PagePadding = pagePadding; docReader.Document.ColumnGap = columnGap; docReader.Document.ColumnWidth = columnWidth; } }