/// <summary> /// Helper method to create page header or footer from flow document template /// </summary> /// <param name="data">enumerable report data</param> /// <param name="fileName">file to save XPS to</param> /// <returns></returns> public XpsDocument CreateXpsDocument(IEnumerable <ReportData> data, string fileName) { if (data == null) { throw new ArgumentNullException("data"); } int count = 0; ReportData firstData = null; foreach (ReportData rd in data) { if (firstData == null) { firstData = rd; } count++; } if (count == 1) { return(CreateXpsDocument(firstData)); // we have only one ReportData object -> use the normal ReportPaginator instead } Package pkg = Package.Open(fileName, FileMode.Create, FileAccess.ReadWrite); string pack = "pack://report.xps"; PackageStore.RemovePackage(new Uri(pack)); PackageStore.AddPackage(new Uri(pack), pkg); XpsDocument doc = new XpsDocument(pkg, _xpsCompressionOption, pack); XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false); MultipleReportPaginator rp = new MultipleReportPaginator(this, data); rsm.SaveAsXaml(rp); rsm.Commit(); pkg.Close(); return(new XpsDocument(fileName, FileAccess.Read)); }
private void SaveToFile() { if (Directory.Exists(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\renderedData") == false) { Directory.CreateDirectory(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\renderedData"); } string destination = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\renderedData\\" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + " " + DateTime.Now.Hour + "-" + DateTime.Now.Minute + "-" + DateTime.Now.Second + " " + Environment.UserName + " 2dView"; using (var stream = new FileStream(destination+".xps", FileMode.Create)) { using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { using (var xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { var rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); var paginator = ((IDocumentPaginatorSource)FlowDocViewer.Document).DocumentPaginator; rsm.SaveAsXaml(paginator); rsm.Commit(); } } stream.Position = 0; var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(stream); XpsConverter.Convert(pdfXpsDoc, destination + ".pdf", 0); } }
private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { PrintDialog printDialog = new PrintDialog(); using (var stream = new MemoryStream()) { using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { using (var xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { var rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); var paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator; rsm.SaveAsXaml(paginator); rsm.Commit(); PrintQueue queue = printDialog.PrintQueue; XpsDocumentWriter writer = PrintQueue.CreateXpsDocumentWriter(queue); // using (FileStream fs = File.Open(filePath, FileMode.Open)) { // FlowDocument flowDocument = (FlowDocument)XamlReader.Load(fs); writer.Write(paginator); } } } stream.Position = 0; var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(stream); PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, "doc.pdf", 0); } }
public void CreatePdf(string filename) { using (var stream = new MemoryStream()) { using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { using (var xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { using (XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false)) { var flowDoc = new FlowDocument { ColumnWidth = 1189 }; var paginator = ((IDocumentPaginatorSource)flowDoc).DocumentPaginator; paginator.PageSize = new Size(842, 595); while (panel.Children.Count != 0) { var page = panel.Children[0] as FrameworkElement; if (page is PageQuest) { paginator.PageSize = new Size(615, 862); page.Height = 862; page.Width = 615; } else { page.Height = 605; page.Width = 852; } double scale = Math.Min((paginator.PageSize.Width - 50) / page.ActualWidth, (paginator.PageSize.Height - 20) / page.ActualHeight); page.LayoutTransform = new ScaleTransform(scale, scale); var wp = VisualTreeHelper.GetParent(page); if (wp != null) { (wp as WrapPanel).Children.Remove(page); } var para = new Paragraph(); para.Inlines.Add((FrameworkElement)page); flowDoc.Blocks.Add(para); } rsm.SaveAsXaml(paginator); rsm.Commit(); } } } stream.Position = 0; var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(stream); PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, filename, 0); } }
public void ExportXps(string filename) { using var package = System.IO.Packaging.Package.Open(filename, FileMode.Create); using var xpsDocument = new XpsDocument(package); using var manager = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false); var paginator = ((IDocumentPaginatorSource)_document).DocumentPaginator; manager.SaveAsXaml(paginator); manager.Commit(); }
/// <summary> /// /// </summary> /// <param name="path"></param> /// <param name="paginator"></param> public static void CreateXPSDocument(string path, DocumentPaginator paginator) { using (Package container = Package.Open(path, FileMode.Create)) { using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum)) { XpsSerializationManager xpsSM = new XpsSerializationManager( new XpsPackagingPolicy(xpsDoc), false); xpsSM.SaveAsXaml(paginator); xpsSM.Commit(); } } }
public void Convert(System.Windows.Documents.FlowDocument document, Stream documentStream) { using (var package = Package.Open(documentStream, FileMode.Create, FileAccess.ReadWrite)) { using (var xpsDocument = new XpsDocument(package, CompressionOption.Maximum)) { var serializer = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false); var paginator = ((IDocumentPaginatorSource)document).DocumentPaginator; serializer.SaveAsXaml(paginator); serializer.Commit(); } } }
/// <summary> /// Converting the current report's content to a ByteArray. /// It's suitable for storing the XPS content of the rpt in a database. /// </summary> /// <param name="doc">Retrieve it from xps.GetFixedDocumentSequence() or documentViewer.Document</param> /// <returns></returns> public static byte[] Export(this FixedDocumentSequence doc) { using (var ms = new MemoryStream()) { using (var package = Package.Open(ms, FileMode.CreateNew)) { using (var xpsd = new XpsDocument(package, CompressionOption.Maximum)) { var xpsSm = new XpsSerializationManager(new XpsPackagingPolicy(xpsd), false); xpsSm.SaveAsXaml(doc.DocumentPaginator); xpsSm.Commit(); return ms.ToArray(); } } } }
/// <summary> /// Converting the current report's content to a ByteArray. /// It's suitable for storing the XPS content of the rpt in a database. /// </summary> /// <param name="doc">Retrieve it from xps.GetFixedDocumentSequence() or documentViewer.Document</param> /// <returns></returns> public static byte[] Export(this FixedDocumentSequence doc) { using (var ms = new MemoryStream()) { using (var package = Package.Open(ms, FileMode.CreateNew)) { using (var xpsd = new XpsDocument(package, CompressionOption.Maximum)) { var xpsSm = new XpsSerializationManager(new XpsPackagingPolicy(xpsd), false); xpsSm.SaveAsXaml(doc.DocumentPaginator); xpsSm.Commit(); return(ms.ToArray()); } } } }
/// <summary> /// Helper method to create page header or footer from flow document template /// </summary> /// <param name="data">report data</param> /// <param name="fileName">file to save XPS to</param> /// <returns></returns> public XpsDocument CreateXpsDocument(ReportData data, string fileName) { Package pkg = Package.Open(fileName, FileMode.Create, FileAccess.ReadWrite); string pack = "pack://report.xps"; PackageStore.RemovePackage(new Uri(pack)); PackageStore.AddPackage(new Uri(pack), pkg); XpsDocument doc = new XpsDocument(pkg, _xpsCompressionOption, pack); XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false); ReportPaginator rp = new ReportPaginator(this, data); rsm.SaveAsXaml(rp); rsm.Commit(); pkg.Close(); return(new XpsDocument(fileName, FileAccess.Read)); }
public static MemoryStream FlowDocumentToXPS(FlowDocument flowDocument, int width, int height) { MemoryStream stream = new MemoryStream(); using (Package package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { using (XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator; paginator.PageSize = new System.Windows.Size(width, height); rsm.SaveAsXaml(paginator); rsm.Commit(); } } stream.Position = 0; return(stream); }
private void SaveDocument([NotNull] IDocumentPaginatorSource document) { using (var package = Package.Open(_output, FileMode.Create, FileAccess.ReadWrite)) using (var xps = new XpsDocument(package, CompressionOption.Maximum)) using (var policy = new XpsPackagingPolicy(xps)) using (var serializer = new XpsSerializationManager(policy, false)) { //document.DocumentPaginator.PageSize = new System.Windows.Size(100, 100); serializer.SaveAsXaml(document.DocumentPaginator); serializer.Commit(); } if (_leaveOpen) { _output.Flush(); } else { _output.Dispose(); } }
private void ButtonBase_OnClick(object sender, RoutedEventArgs e) { using (var stream = new MemoryStream()) { using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { using (var xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { var rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); var paginator = ((IDocumentPaginatorSource)DocViewer.Document).DocumentPaginator; rsm.SaveAsXaml(paginator); rsm.Commit(); } } stream.Position = 0; var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(stream); PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, "doc.pdf", 0); } }
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if (!(values.Length > 1 && values[0] is FlowDocument)) { throw new InvalidOperationException("Seule les valeurs de type FlowDocument peuvent êtres converties (FlowDocumentToXpsConverter). Cette erreur est critique."); } if (!(values.Length > 1 && values[1] is SumUpViewModel) && !(values[1] == null)) { throw new InvalidOperationException("Une valeur (position 2) de type SumUpViewModel doit être fournie (FlowDocumentToXpsConverter. Cette erreur est critique"); } if (values[1] != null) { FlowDocument flowDoc = ((FlowDocument)values[0]); flowDoc.DataContext = values[1]; string xpsDir = ConfigurationManager.AppSettings["XpsOutDir"]; if (!Directory.Exists(xpsDir)) { Directory.CreateDirectory(xpsDir); } using (FileStream fs = File.Open($"{xpsDir}flowDocument.xps", FileMode.Create, FileAccess.ReadWrite, FileShare.Read)) { using (Package package = Package.Open(fs, FileMode.Create, FileAccess.ReadWrite)) { XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.Maximum); XpsSerializationManager xpsSerializationManager = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDoc).DocumentPaginator; xpsSerializationManager.SaveAsXaml(paginator); xpsSerializationManager.Commit(); return(xpsDoc); } } } else { return(null); } }
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { if(!(values.Length > 1 && values[0] is FlowDocument)) { throw new InvalidOperationException("Seule les valeurs de type FlowDocument peuvent êtres converties (FlowDocumentToXpsConverter). Cette erreur est critique."); } if(!(values.Length > 1 && values[1] is SumUpViewModel) && !(values[1] == null)) { throw new InvalidOperationException("Une valeur (position 2) de type SumUpViewModel doit être fournie (FlowDocumentToXpsConverter. Cette erreur est critique"); } if (values[1] != null) { FlowDocument flowDoc = ((FlowDocument)values[0]); flowDoc.DataContext = values[1]; string xpsDir = ConfigurationManager.AppSettings["XpsOutDir"]; if (!Directory.Exists(xpsDir)) { Directory.CreateDirectory(xpsDir); } using (FileStream fs = File.Open($"{xpsDir}flowDocument.xps", FileMode.Create, FileAccess.ReadWrite, FileShare.Read)) { using (Package package = Package.Open(fs, FileMode.Create, FileAccess.ReadWrite)) { XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.Maximum); XpsSerializationManager xpsSerializationManager = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDoc).DocumentPaginator; xpsSerializationManager.SaveAsXaml(paginator); xpsSerializationManager.Commit(); return xpsDoc; } } } else { return null; } }
/// <summary> /// Helper method to create page header or footer from flow document template /// </summary> /// <param name="data">report data</param> /// <returns></returns> public XpsDocument CreateXpsDocument(ReportData data, Action <int, int> PageGeneratedCallBack = null) { MemoryStream ms = new MemoryStream(); Package pkg = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite); string pack = String.Format("pack://report{0}.xps", this.ReportName); PackageStore.RemovePackage(new Uri(pack)); PackageStore.AddPackage(new Uri(pack), pkg); XpsDocument doc = new XpsDocument(pkg, CompressionOption.NotCompressed, pack); XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false); //DocumentPaginator paginator = ((IDocumentPaginatorSource)CreateFlowDocument()).DocumentPaginator; ReportPaginator rp = new ReportPaginator(this, data, PageGeneratedCallBack); rsm.SaveAsXaml(rp); rsm.Commit(); //pkg.Close(); return(doc); }
private static void CreateXps(FlowDocument tempFlow, string tempFile, PrintSettings settings) { //flowDocument, out exceptions, CheckGreyMark(mark, blackAndWhite), showNumber, face, blackAndWhite ? Brushes.Black : brush, useLeading, fontSize, from, till, useOldNumbering, blackAndWhite ? Brushes.Transparent : backBrush // var stream = new MemoryStream(); using (Package package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { XpsDocument xpsDoc; using (xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { var rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); DocumentPaginator paginator = ((IDocumentPaginatorSource)tempFlow).DocumentPaginator; paginator = new DocumentPaginatorWrapper(paginator) { ContentPageSize = new Size(paginator.PageSize.Width, paginator.PageSize.Height), ContentMargin = new Size(48, 48), Mark = settings.UseWatermark ? CheckGreyMark(settings.Watermark, settings.UseBlackAndWhite):null, FooterTypeface = new Typeface(settings.PageCountElement.FontFamily, FontStyles.Normal, FontWeights.Normal, FontStretches.Normal), ForegroundBrush = settings.UseBlackAndWhite ? Brushes.Black : settings.PageCountElement.ForgroundBrush, ShowNumbering = settings.ShowPageNumber, UseLeadingZero = settings.PageCountElement.UseLeadingZero, FooterFontSize = settings.PageCountElement.FontSize, FirstPritedPage = settings.From, LastPrintedPage = settings.Till, UseOldNumbering = settings.UseOldNumbering, BackgroundBrush = settings.UseBlackAndWhite ? Brushes.White : settings.BackgroundBrush }; ((DocumentPaginatorWrapper)paginator).ComputeValues(); rsm.SaveAsXaml(paginator); rsm.Commit(); } } stream.Position = 0; using (var fileStream = new FileStream(tempFile, FileMode.CreateNew, FileAccess.ReadWrite)) { stream.CopyTo(fileStream); } }
public static void GenPDFFromFlowDocument(FlowDocument flowDocument, string inFileName = null) { string fileName = inFileName == null?DateTime.Now.Ticks.ToString() + ".pdf" : inFileName; using (var stream = new MemoryStream()) { using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { using (var xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { var rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); var paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator; rsm.SaveAsXaml(paginator); rsm.Commit(); } } stream.Position = 0; var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(stream); PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, fileName, 0); } }
public void FlowDocumentToXps(DocumentPaginator paginator, string filename, string reportName, bool overWrite) { XpsDocument document; if (overWrite) { document = new XpsDocument(filename, FileAccess.Write); } else { document = new XpsDocument(filename, FileAccess.ReadWrite); } XpsPackagingPolicy packagePolicy = new XpsPackagingPolicy(document); XpsSerializationManager serializationMgr = new XpsSerializationManager(packagePolicy, true); serializationMgr.Commit(); serializationMgr.SaveAsXaml(paginator); document.Close(); }
/// <summary> /// Helper method to create page header or footer from flow document template /// </summary> /// <param name="data">enumerable report data</param> /// <param name="fileName">file to save XPS to</param> /// <returns></returns> public XpsDocument CreateXpsDocument(IEnumerable<ReportData> data, string fileName) { if (data == null) throw new ArgumentNullException("data"); int count = 0; ReportData firstData = null; foreach (ReportData rd in data) { if (firstData == null) firstData = rd; count++; } if (count == 1) return CreateXpsDocument(firstData); // we have only one ReportData object -> use the normal ReportPaginator instead Package pkg = Package.Open(fileName, FileMode.Create, FileAccess.ReadWrite); string pack = "pack://report.xps"; PackageStore.RemovePackage(new Uri(pack)); PackageStore.AddPackage(new Uri(pack), pkg); XpsDocument doc = new XpsDocument(pkg, _xpsCompressionOption, pack); XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false); DocumentPaginator paginator = ((IDocumentPaginatorSource)CreateFlowDocument()).DocumentPaginator; MultipleReportPaginator rp = new MultipleReportPaginator(this, data); rsm.SaveAsXaml(rp); rsm.Commit(); pkg.Close(); return new XpsDocument(fileName, FileAccess.Read); }
/// <summary> /// Helper method to create page header or footer from flow document template /// </summary> /// <param name="data">report data</param> /// <param name="fileName">file to save XPS to</param> /// <returns></returns> public XpsDocument CreateXpsDocument(ReportData data, string fileName) { Package pkg = Package.Open(fileName, FileMode.Create, FileAccess.ReadWrite); string pack = "pack://report.xps"; PackageStore.RemovePackage(new Uri(pack)); PackageStore.AddPackage(new Uri(pack), pkg); XpsDocument doc = new XpsDocument(pkg, _xpsCompressionOption, pack); XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false); DocumentPaginator paginator = ((IDocumentPaginatorSource)CreateFlowDocument()).DocumentPaginator; ReportPaginator rp = new ReportPaginator(this, data); rsm.SaveAsXaml(rp); rsm.Commit(); pkg.Close(); return new XpsDocument(fileName, FileAccess.Read); }
public int SaveAsXps(string fileName) { object doc; FileInfo fileInfo = new FileInfo(fileName); using (FileStream file = fileInfo.OpenRead()) { System.Windows.Markup.ParserContext context = new System.Windows.Markup.ParserContext(); context.BaseUri = new Uri(fileInfo.FullName, UriKind.Absolute); doc = System.Windows.Markup.XamlReader.Load(file, context); } if (!(doc is IDocumentPaginatorSource)) { Console.WriteLine("DocumentPaginatorSource expected"); return(-1); } using (Package container = Package.Open(fileName + ".xps", FileMode.Create)) { using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum)) { xpsDoc.AddFixedDocumentSequence(); FixedDocumentSequence seq = xpsDoc.GetFixedDocumentSequence(); DocumentReference reference = new DocumentReference(); //reference.SetDocument(doc); seq.References.Add(reference); FixedDocument abc = new FixedDocument(); PageContent pagecnt = new PageContent(); abc.Pages.Add(pagecnt); XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); xpsDoc.AddFixedDocumentSequence(); FixedDocumentSequence aaa = xpsDoc.GetFixedDocumentSequence(); DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator; // 8 inch x 6 inch, with half inch margin //paginator = new DocumentPaginatorWrapper(paginator, new Size(21*96/2.54, 29.7*96/2.54), new Size(0*96/2.54, 0*96/2.54)); //PrintDialog ptdlg = new PrintDialog(); //ptdlg.ShowDialog(); //((IDocumentPaginatorSource)doc).DocumentPaginator.PageSize = new Size(ptdlg.PrintableAreaWidth, ptdlg.PrintableAreaHeight); //paginator = new DocumentPaginatorWrapper(paginator, new Size(ptdlg.PrintableAreaWidth, ptdlg.PrintableAreaHeight), new Size(0 * 96 / 2.54, 0 * 96 / 2.54)); rsm.SaveAsXaml(paginator); rsm.Commit(); xpsDoc.Close(); container.Close(); XpsDocument tempdoc = new XpsDocument(fileName + ".xps", FileAccess.Read); //viewer.Document = tempdoc.GetFixedDocumentSequence(); } } Console.WriteLine("{0} generated.", fileName + ".xps"); return(0); }
public void CreatePdf(string filename) { var WrapPan = VisualTreeHelper.GetParent(PrintPages[0]); using (var stream = new MemoryStream()) { using (var package = Package.Open(stream, FileMode.Create, FileAccess.ReadWrite)) { using (var xpsDoc = new XpsDocument(package, CompressionOption.Maximum)) { var rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false); int width = 0; int height = 0; var flowDoc = new FlowDocument(); flowDoc.ColumnWidth = 1189; var paginator = ((IDocumentPaginatorSource)flowDoc).DocumentPaginator; paginator.PageSize = new Size(1189, 841); foreach (var _pagge in PrintPages) { if (_pagge is DefaultPage) { var pp = new DefaultPage(); pp = (DefaultPage)_pagge; width = 842; height = 595; var wp = VisualTreeHelper.GetParent(pp); if (wp != null) { (wp as WrapPanel).Children.Remove(pp); } } if (_pagge is PageList) { width = 842; height = 595; var pp = new PageList(); pp = (PageList)_pagge; var wp = VisualTreeHelper.GetParent(pp); if (wp != null) { (wp as WrapPanel).Children.Remove(pp); } } if (_pagge is PageQuest) { height = 842; width = 595; var pp = new PageQuest(); pp = (PageQuest)_pagge; var wp = VisualTreeHelper.GetParent(pp); if (wp != null) { (wp as WrapPanel).Children.Remove(pp); } } if (_pagge is PageView) { width = 842; height = 595; var pp = new PageView(); pp = (PageView)_pagge; var wp = VisualTreeHelper.GetParent(pp); if (wp != null) { (wp as WrapPanel).Children.Remove(pp); } } _pagge.Width = width; _pagge.Height = height; double scale = Math.Min((1189 - 150) / _pagge.Width, (841 - 150) / _pagge.Height); _pagge.LayoutTransform = new ScaleTransform(scale, scale); var para = new Paragraph(); para.Inlines.Add(_pagge); flowDoc.Blocks.Add(para); } rsm.SaveAsXaml(paginator); rsm.Commit(); } } stream.Position = 0; var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(stream); PdfSharp.Xps.XpsConverter.Convert(pdfXpsDoc, filename, 0); (WrapPan as WrapPanel).Children.Clear(); foreach (var page in PrintPages) { var p = page.Parent; (p as InlineUIContainer).Child = null; } } }
public void FlowDocumentToXps(DocumentPaginator paginator, string filename, string reportName, bool overWrite) { XpsDocument document; if (overWrite) document = new XpsDocument(filename, FileAccess.Write); else document = new XpsDocument(filename, FileAccess.ReadWrite); XpsPackagingPolicy packagePolicy = new XpsPackagingPolicy(document); XpsSerializationManager serializationMgr = new XpsSerializationManager(packagePolicy, true); serializationMgr.Commit(); serializationMgr.SaveAsXaml(paginator); document.Close(); }
/// <summary> /// Helper method to create page header or footer from flow document template /// </summary> /// <param name="data">report data</param> /// <returns></returns> public XpsDocument CreateXpsDocument(ReportData data, Action<int,int> PageGeneratedCallBack = null) { MemoryStream ms = new MemoryStream(); Package pkg = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite); string pack = String.Format("pack://report{0}.xps", this.ReportName); PackageStore.RemovePackage(new Uri(pack)); PackageStore.AddPackage(new Uri(pack), pkg); XpsDocument doc = new XpsDocument(pkg, CompressionOption.NotCompressed, pack); XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false); //DocumentPaginator paginator = ((IDocumentPaginatorSource)CreateFlowDocument()).DocumentPaginator; ReportPaginator rp = new ReportPaginator(this, data, PageGeneratedCallBack); rsm.SaveAsXaml(rp); rsm.Commit(); //pkg.Close(); return doc; }
public override void ExportTable(SIDocument doc, string filename) { var current = (uint)0; var total = (uint)doc.Package.Rounds.Sum(round => round.Themes.Count); var document = new FlowDocument { PagePadding = new Thickness(0.0), ColumnWidth = double.PositiveInfinity, FontFamily = new FontFamily("Times New Roman") }; var packageCaption = new Paragraph { KeepWithNext = true, Margin = new Thickness(10.0, 5.0, 0.0, 0.0) }; var textP = new Run { FontSize = 30, FontWeight = FontWeights.Bold, Text = doc.Package.Name }; packageCaption.Inlines.Add(textP); document.Blocks.Add(packageCaption); foreach (var round in doc.Package.Rounds) { var caption = new Paragraph { KeepWithNext = true, Margin = new Thickness(10.0, 5.0, 0.0, 0.0) }; var textC = new Run { FontSize = 24, FontWeight = FontWeights.Bold, Text = round.Name }; caption.Inlines.Add(textC); document.Blocks.Add(caption); var table = new Table { CellSpacing = 0.0, BorderBrush = Brushes.Black, BorderThickness = new Thickness(0.0, 0.5, 0.0, 0.5) }; var rowGroup = new TableRowGroup(); var columnNumber = round.Themes.Max(theme => theme.Questions.Count); for (int i = 0; i < columnNumber; i++) { table.Columns.Add(new TableColumn()); } foreach (var theme in round.Themes) { var row = new TableRow(); foreach (var quest in theme.Questions) { var cell = new TableCell { BorderBrush = Brushes.Black, BorderThickness = new Thickness(0.5), TextAlignment = TextAlignment.Center }; var paragraph = new Paragraph { Margin = new Thickness(10.0), KeepTogether = true }; paragraph.Inlines.Add(string.Format(round.Type == RoundTypes.Standart ? "{0}, {1}" : "{0}", theme.Name, quest.Price)); paragraph.Inlines.Add(new LineBreak()); if (quest.Type.Name != QuestionTypes.Simple) { if (quest.Type.Name == QuestionTypes.Sponsored) { paragraph.Inlines.Add("ВОПРОС ОТ СПОНСОРА"); } else if (quest.Type.Name == QuestionTypes.Auction) { paragraph.Inlines.Add("ВОПРОС-АУКЦИОН"); } else if (quest.Type.Name == QuestionTypes.Cat) { paragraph.Inlines.Add("КОТ В МЕШКЕ"); paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add(string.Format("{0}, {1}", quest.Type[QuestionTypeParams.Cat_Theme], quest.Type[QuestionTypeParams.Cat_Cost])); } else if (quest.Type.Name == QuestionTypes.BagCat) { paragraph.Inlines.Add("КОТ В МЕШКЕ"); var knows = quest.Type[QuestionTypeParams.BagCat_Knows]; var cost = quest.Type[QuestionTypeParams.Cat_Cost]; if (cost == "0") { cost = "Минимум или максимум в раунде"; } if (knows == QuestionTypeParams.BagCat_Knows_Value_Never) { paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add(string.Format("Сумма начисляется без вопроса: {0}", cost)); continue; } paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add(string.Format("{0}, {1}", quest.Type[QuestionTypeParams.Cat_Theme], cost)); if (knows == QuestionTypeParams.BagCat_Knows_Value_Before) { paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add("Тема и стоимость оглашаются до передачи"); } if (quest.Type[QuestionTypeParams.BagCat_Self] == QuestionTypeParams.BagCat_Self_Value_True) { paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add("Кота можно оставить себе"); } } else // Неподдерживаемый тип { paragraph.Inlines.Add(quest.Type.Name); foreach (var param in quest.Type.Params) { paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add(string.Format(STR_Definition, param.Name, param.Value)); } } paragraph.Inlines.Add(new LineBreak()); } paragraph.Inlines.Add(new LineBreak()); paragraph.Inlines.Add(quest.Scenario.ToString()); cell.Blocks.Add(paragraph); row.Cells.Add(cell); } rowGroup.Rows.Add(row); current++; // прогресс current из total } table.RowGroups.Add(rowGroup); document.Blocks.Add(table); } using (var package = System.IO.Packaging.Package.Open(filename, FileMode.Create)) { using (var xpsDocument = new XpsDocument(package)) { using (var manager = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false)) { var paginator = ((IDocumentPaginatorSource)document).DocumentPaginator; paginator.PageSize = new Size(1056.0, 816.0); // A4 manager.SaveAsXaml(paginator); manager.Commit(); } } } }