/// <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));
        }
示例#2
0
        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);
            }


        }
示例#3
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);
            }
        }
示例#4
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);
            }
        }
示例#5
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();
         }
     }
 }
示例#7
0
 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();
             }
         }
     }
 }
示例#9
0
 /// <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);
        }
示例#12
0
 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();
     }
 }
示例#13
0
        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);
            }
        }
示例#14
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;
            }
        }
示例#16
0
 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);
     }
     
 }
示例#17
0
        /// <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);
        }
示例#18
0
        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);
            }
        }
示例#19
0
        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);
            }
        }
示例#20
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();
        }
示例#21
0
        /// <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);
        }
示例#22
0
        /// <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);
        }
示例#23
0
        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);
        }
示例#24
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;
                }
            }
        }
示例#25
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">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();
                    }
                }
            }
        }