public void Print_WPF_Preview(FrameworkElement wpf_Element) { string sPrintFilename = "report.xps"; if (File.Exists(sPrintFilename) == true) { File.Delete(sPrintFilename); } XpsDocument doc = new XpsDocument(sPrintFilename, FileAccess.ReadWrite); XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); SerializerWriterCollator outputDocument = writer.CreateVisualsCollator(); outputDocument.BeginBatchWrite(); outputDocument.Write(wpf_Element); outputDocument.EndBatchWrite(); FixedDocumentSequence preview = doc.GetFixedDocumentSequence(); //prozor koji trea da otvorimo //trea ga prikazati PrintWindow printWindow = new PrintWindow(preview); printWindow.Show(); doc.Close(); writer = null; outputDocument = null; doc = null; }
public static void PrintWpfPreview(FrameworkElement element) { string printFileName = "print_preview.xps"; if (File.Exists(printFileName)) { File.Delete(printFileName); } //System.Printing.PrintDocumentImageableArea ia = null; using XpsDocument doc = new XpsDocument(printFileName, FileAccess.ReadWrite); XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); SerializerWriterCollator outputDocument = writer.CreateVisualsCollator(); outputDocument.BeginBatchWrite(); outputDocument.Write(element); outputDocument.EndBatchWrite(); FixedDocumentSequence preview = doc.GetFixedDocumentSequence(); DocumentPaginator paginator = preview.DocumentPaginator; preview.DocumentPaginator.PageSize = new Size(200, 100); var a = preview.DocumentPaginator.PageCount; PrintWindow printWindow = new PrintWindow(preview); printWindow.Show(); doc.Close(); writer = null; outputDocument = null; }
private static void printKundeinfo(SerializerWriterCollator batchPrinter, FrameworkElement kundeinfoKontroll, Size outputSize, double leftMargin, double topMargin) { Size elementSize = new Size(outputSize.Width, outputSize.Height); Rect rec = new Rect(new Point(leftMargin, topMargin), elementSize); kundeinfoKontroll.Arrange(rec); batchPrinter.Write(kundeinfoKontroll); }
private static void printKundeinfoToPdf(SerializerWriterCollator batchPrinter, FrameworkElement kundeinfoKontroll, Size outputSize, double leftMargin, double topMargin) { Size elementSize = new Size(outputSize.Width + leftMargin + leftMargin, outputSize.Height + topMargin + topMargin); Rect rec = new Rect(new Point(leftMargin, topMargin), elementSize); kundeinfoKontroll.ClipToBounds = true; kundeinfoKontroll.Clip = new RectangleGeometry(new Rect(outputSize)); kundeinfoKontroll.Measure(elementSize); kundeinfoKontroll.Arrange(rec); batchPrinter.Write(kundeinfoKontroll); }
/// <summary> /// Create a SerializerWriterCollator to gobble up multiple Visuals /// </summary> public override SerializerWriterCollator CreateVisualsCollator(PrintTicket documentSequencePT, PrintTicket documentPT) { CheckDisposed(); SerializerWriterCollator collator = _xpsDocumentWriter.CreateVisualsCollator(documentSequencePT, documentPT); // swc will close these _xpsDocument = null; _xpsDocumentWriter = null; _package = null; return(collator); }
/// <summary> /// Create a SerializerWriterCollator to gobble up multiple Visuals /// </summary> public override SerializerWriterCollator CreateVisualsCollator() { CheckDisposed(); SerializerWriterCollator collator = _xpsDocumentWriter.CreateVisualsCollator(); // swc will close these _xpsDocument = null; _xpsDocumentWriter = null; _package = null; return(collator); }
private static void Print(FrameworkElement kundeInfo, ScrollViewer scrollViewer) { if (kundeInfo == null && scrollViewer == null) { return; } PrintDocumentImageableArea area = null; PageRangeSelection selection = PageRangeSelection.AllPages; PageRange range = new PageRange(); XpsDocumentWriter xpsdw1 = PrintQueue.CreateXpsDocumentWriter("Corinor prisforslag", ref area, ref selection, ref range); if (xpsdw1 == null) { return; } //TODO: DEBUG //if (File.Exists("D:\\test.xps")) File.Delete("D:\\test.xps"); //XpsDocument _xpsDocument = new XpsDocument("D:\\test.xps", FileAccess.ReadWrite); //XpsDocumentWriter xpsdw = XpsDocument.CreateXpsDocumentWriter(_xpsDocument); Thickness Margins = new Thickness(96); double leftMargin = Margins.Left - area.OriginWidth; double topMargin = Margins.Top - area.OriginHeight; double rightMargin = Margins.Right - (area.MediaSizeWidth - area.ExtentWidth - area.OriginWidth); double bottomMargin = Margins.Bottom - (area.MediaSizeHeight - area.ExtentHeight - area.OriginHeight); Size outputSize = new Size( area.MediaSizeWidth - leftMargin - rightMargin, area.MediaSizeHeight - topMargin - bottomMargin); SerializerWriterCollator batchPrinter = xpsdw1.CreateVisualsCollator(); batchPrinter.BeginBatchWrite(); if (kundeInfo != null) { printKundeinfo(batchPrinter, kundeInfo, outputSize, leftMargin, topMargin); } if (scrollViewer != null && scrollViewer.Content != null) { printScrollViewer(batchPrinter, scrollViewer, outputSize, leftMargin, topMargin); } batchPrinter.EndBatchWrite(); //TODO: Debug //_xpsDocument.Close(); }
private static void printScrollViewer(SerializerWriterCollator batchPrinter, ScrollViewer scrollViewer, Size outputSize, double leftMargin, double topMargin)//, PrintDocumentImageableArea area) { //if (scrollViewer == null || scrollViewer.Content == null || !(scrollViewer.Content is FrameworkElement)) return; FrameworkElement element = scrollViewer.Content as FrameworkElement; //Husker properties bool originalClipToBounds = element.ClipToBounds; Geometry originalClip = element.Clip; Thickness originalMargin = element.Margin; Size elementSize = new Size(outputSize.Width, element.ActualHeight); Size orginalSize = new Size(element.ActualWidth, element.ActualHeight); element.ClipToBounds = true; element.Clip = new RectangleGeometry(new Rect(outputSize)); element.Measure(elementSize); element.Arrange(new Rect(new Point(leftMargin, topMargin), elementSize)); batchPrinter.Write(element); double currHeight = outputSize.Height; while (currHeight < element.ActualHeight) { elementSize.Height -= outputSize.Height; element.Margin = new Thickness(0, -currHeight, 0, 0); element.Clip = new RectangleGeometry(new Rect(new Point(0, currHeight), outputSize)); element.Measure(elementSize); element.Arrange(new Rect(new Point(leftMargin, topMargin), elementSize)); batchPrinter.Write(element); currHeight += outputSize.Height; } //Rydder opp element.ClipToBounds = originalClipToBounds; element.Clip = originalClip; element.Margin = originalMargin; element.Arrange(new Rect(new Point(0, 0), orginalSize)); }
public static void Print_WPF_Preview(FrameworkElement wpf_Element) { string sPrintFilename = "print_preview.xps"; if (File.Exists(sPrintFilename) == true) { File.Delete(sPrintFilename); } // - <create xps document> - XpsDocument doc = new XpsDocument(sPrintFilename, FileAccess.ReadWrite); XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); SerializerWriterCollator preview_Document = writer.CreateVisualsCollator(); preview_Document.BeginBatchWrite(); preview_Document.Write(wpf_Element); // * this or wpf xaml control preview_Document.EndBatchWrite(); // - </ create xps document> - FixedDocumentSequence preview = doc.GetFixedDocumentSequence(); // - </Open> - // - </Open preview window> - var window = new Window(); window.Content = new DocumentViewer { Document = preview }; window.ShowDialog(); doc.Close(); }
private static string PrintToPDF(FrameworkElement kundeInfo, ScrollViewer scrollViewer, string lagreTilUrl, bool liggende) { if (kundeInfo == null && scrollViewer == null) { return(""); } string prisforslagXPSuri = Path.Combine(Hjelpeklasser.GlobaleUrier.standardMappe2(), "Prisforslag.xps"); string prisforslagPDFuri = Path.Combine(Hjelpeklasser.GlobaleUrier.standardMappe2(), "Prisforslag.pdf"); if (!string.IsNullOrEmpty(lagreTilUrl)) { prisforslagPDFuri = lagreTilUrl; } if (File.Exists(prisforslagXPSuri)) { File.Delete(prisforslagXPSuri); } XpsDocument _xpsDocument = new XpsDocument(prisforslagXPSuri, FileAccess.ReadWrite); XpsDocumentWriter xpsdw = XpsDocument.CreateXpsDocumentWriter(_xpsDocument); Size docSize; if (liggende) { docSize = new Size(1122.24, 793.59874015748028); } else { docSize = new Size(793.59874015748028, 1122.24); } double leftMargin = 84.5; //Margins.Left - area.OriginWidth; double topMargin = 84.5; ///Margins.Top - area.OriginHeight; double rightMargin = 84.5; //Margins.Right - (docSize.Width - area.ExtentWidth - area.OriginWidth); double bottomMargin = 84.5; //Margins.Bottom - (docSize.Height - area.ExtentHeight - area.OriginHeight); Size outputSize = new Size( docSize.Width - leftMargin - rightMargin, docSize.Height - topMargin - bottomMargin); SerializerWriterCollator batchPrinter = xpsdw.CreateVisualsCollator(); batchPrinter.BeginBatchWrite(); if (kundeInfo != null) { printKundeinfoToPdf(batchPrinter, kundeInfo, outputSize, leftMargin, topMargin); } if (scrollViewer != null && scrollViewer.Content != null) { printScrollViewer(batchPrinter, scrollViewer, outputSize, leftMargin, topMargin); } batchPrinter.EndBatchWrite(); _xpsDocument.Close(); PdfSharp.Xps.XpsConverter.Convert(prisforslagXPSuri, prisforslagPDFuri, 0); return(prisforslagPDFuri); }