示例#1
0
        private void ShowPrintPreview()
        {
            // We have to clone the FlowDocument before we use different pagination settings for the export.
            RichTextDocument document = (RichTextDocument)fileService.ActiveDocument;
            FlowDocument     clone    = document.CloneContent();

            clone.ColumnWidth = double.PositiveInfinity;

            // Create a package for the XPS document
            MemoryStream packageStream = new MemoryStream();

            package = Package.Open(packageStream, FileMode.Create, FileAccess.ReadWrite);

            // Create a XPS document with the path "pack://temp.xps"
            PackageStore.AddPackage(new Uri(PackagePath), package);
            xpsDocument = new XpsDocument(package, CompressionOption.SuperFast, PackagePath);

            // Serialize the XPS document
            XpsSerializationManager serializer = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false);
            DocumentPaginator       paginator  = ((IDocumentPaginatorSource)clone).DocumentPaginator;

            serializer.SaveAsXaml(paginator);

            // Get the fixed document sequence
            FixedDocumentSequence documentSequence = xpsDocument.GetFixedDocumentSequence();

            // Create and show the print preview view
            PrintPreviewViewModel printPreviewViewModel = printPreviewViewModelFactory.CreateExport().Value;

            printPreviewViewModel.Document = documentSequence;
            previousView = shellViewModel.ContentView;
            shellViewModel.ContentView           = printPreviewViewModel.View;
            shellViewModel.IsPrintPreviewVisible = true;
            printPreviewCommand.RaiseCanExecuteChanged();
        }
示例#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
        public static XpsDocument GetXpsDocument(FlowDocument document)
        {
            //Uri DocumentUri = new Uri("pack://currentTicket_" + new Random().Next(1000).ToString() + ".xps");
            Uri docUri = new Uri("pack://tempTicket.xps");

            var ms = new MemoryStream();
            {
                Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);

                PackageStore.RemovePackage(docUri);
                PackageStore.AddPackage(docUri, package);

                XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.SuperFast, docUri.AbsoluteUri);

                XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false);

                DocumentPaginator docPage = ((IDocumentPaginatorSource)document).DocumentPaginator;

                //docPage.PageSize = new System.Windows.Size(PageWidth, PageHeight);
                //docPage.PageSize = new System.Windows.Size(document.PageWidth, document.PageHeight);

                rsm.SaveAsXaml(docPage);

                return(xpsDocument);
            }
        }
示例#4
0
        static void Main(string[] args)
        {
            // Write WPF Content - A FixedDocumentSequence with 'n'
            // FixedDocuments; each FixedDocument containing 2 FixedPages.

            Console.WriteLine("\nStarting creation of XPS flat-file document.");

            int numberOfDocument = 5; // number of documents in the sequence.
            FixedDocumentSequence fixedDocSeq =
                WpfContent.CreateFixedDocumentSequence(numberOfDocument);

            // Set the output directory
            String path = Directory.GetCurrentDirectory() + @"\Output";

            FlatPackagingPolicy packagingPolicy = new FlatPackagingPolicy(path);

            XpsSerializationManager xpsManager =
                new XpsSerializationManager(packagingPolicy, false);

            xpsManager.SaveAsXaml(fixedDocSeq);

            Console.WriteLine("\nCompleted output of XPS flat-file document to folder:");
            Console.WriteLine(path);

            // Normal Completion, show where the XPS document flat file was written.
            string msg = "Completed output of XPS flat-file document to folder:\n\n" + path;

            MessageBox.Show(msg, "Normal Completion",
                            MessageBoxButtons.OK, MessageBoxIcon.Information);
        } // end:Main
示例#5
0
        /// <summary>
        /// Helper method to create page header or footer from flow document template
        /// </summary>
        /// <param name="data">enumerable report data</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">data</exception>
        public XpsDocument CreateXpsDocument(IEnumerable <ReportData> data)
        {
            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
            }
            MemoryStream ms   = new MemoryStream();
            Package      pkg  = Package.Open(ms, 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, CompressionOption.NotCompressed, pack);
            XpsSerializationManager rsm       = new XpsSerializationManager(new XpsPackagingPolicy(doc), false);
            DocumentPaginator       paginator = ((IDocumentPaginatorSource)CreateFlowDocument()).DocumentPaginator;

            MultipleReportPaginator rp = new MultipleReportPaginator(this, data);

            rsm.SaveAsXaml(rp);
            return(doc);
        }
        public void CreateContentFromFlowDocument(ManagedFlowDocument managedFlowDocument)
        {
            XpsSerializationManager xpsSerializationManager = GetXpsSerializationManager();
            PimpedPaginator         documentPaginator       = GetDocumentPaginatorFrom(managedFlowDocument);

            xpsSerializationManager.SaveAsXaml(documentPaginator);
        }
        private static XpsDocument convertVisualToXps(FrameworkElement visual)
        {
            visual.Measure(new Size(Int32.MaxValue, Int32.MaxValue));
            Size visualSize = visual.DesiredSize;

            visual.Arrange(new Rect(new Point(0, 0), visualSize));
            MemoryStream      stream = new MemoryStream();
            string            pack   = "pack://temp.xps";
            Uri               uri    = new Uri(pack);
            DocumentPaginator paginator;
            XpsDocument       xpsDoc;

            using (Package container = Package.Open(stream, FileMode.Create))
            {
                PackageStore.AddPackage(uri, container);
                using (xpsDoc = new XpsDocument(container, CompressionOption.Fast, pack))
                {
                    XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
                    rsm.SaveAsXaml(visual);
                    paginator          = ((IDocumentPaginatorSource)xpsDoc.GetFixedDocumentSequence()).DocumentPaginator;
                    paginator.PageSize = visualSize;
                }
                PackageStore.RemovePackage(uri);
            }
            return(xpsDoc);
        }
        /// <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));
        }
        public static void SaveToPdf(this FlowDocument flowDoc, string filename)
        {
            MemoryStream xamlStream = new MemoryStream();
            XamlWriter.Save(flowDoc, xamlStream);
            File.WriteAllBytes("d:\\file.xaml", xamlStream.ToArray());

            IDocumentPaginatorSource text = flowDoc as IDocumentPaginatorSource;
            xamlStream.Close();

            MemoryStream memoryStream = new MemoryStream();
            Package pkg = Package.Open(memoryStream, FileMode.Create, FileAccess.ReadWrite);

            string pack = "pack://temp.xps";
            PackageStore.AddPackage(new Uri(pack), pkg);

            XpsDocument doc = new XpsDocument(pkg, CompressionOption.SuperFast, pack);
            XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false);
            DocumentPaginator pgn = text.DocumentPaginator;
            rsm.SaveAsXaml(pgn);

            MemoryStream xpsStream = new MemoryStream();
            var writer = new XpsSerializerFactory().CreateSerializerWriter(xpsStream);
            writer.Write(doc.GetFixedDocumentSequence());

            MemoryStream outStream = new MemoryStream();
            NiXPS.Converter.XpsToPdf(xpsStream, outStream);
            File.WriteAllBytes("file.pdf", outStream.ToArray());
        }
示例#10
0
        public static void SaveToPdf(this FlowDocument flowDoc, string filename)
        {
            MemoryStream xamlStream = new MemoryStream();

            XamlWriter.Save(flowDoc, xamlStream);
            File.WriteAllBytes("d:\\file.xaml", xamlStream.ToArray());

            IDocumentPaginatorSource text = flowDoc as IDocumentPaginatorSource;

            xamlStream.Close();

            MemoryStream memoryStream = new MemoryStream();
            Package      pkg          = Package.Open(memoryStream, FileMode.Create, FileAccess.ReadWrite);

            string pack = "pack://temp.xps";

            PackageStore.AddPackage(new Uri(pack), pkg);

            XpsDocument             doc = new XpsDocument(pkg, CompressionOption.SuperFast, pack);
            XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false);
            DocumentPaginator       pgn = text.DocumentPaginator;

            rsm.SaveAsXaml(pgn);

            MemoryStream xpsStream = new MemoryStream();
            var          writer    = new XpsSerializerFactory().CreateSerializerWriter(xpsStream);

            writer.Write(doc.GetFixedDocumentSequence());

            MemoryStream outStream = new MemoryStream();

            NiXPS.Converter.XpsToPdf(xpsStream, outStream);
            File.WriteAllBytes("file.pdf", outStream.ToArray());
        }
示例#11
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);
            }
        }
示例#12
0
        /// <summary>
        /// Attaches a FixedDocumentSequence to an XpsDocument.
        /// </summary>
        /// <param name="fds">The document sequence to attach.</param>
        /// <param name="rp">The Xps package that will contain the document sequence.</param>
        private static void AttachSequenceToPackage(FixedDocumentSequence fds, XpsDocument rp)
        {
            XpsSerializationManager rsm = new XpsSerializationManager(
                new XpsPackagingPolicy(rp), false);

            rsm.SaveAsXaml(fds);
        }
示例#13
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 static void CreateXPSDocument(DocumentPaginator paginator)
 {
     using (Package container = Package.Open("test" + ".xps", FileMode.Create))
     {
         using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
         {
             XpsSerializationManager xpsSM = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
             xpsSM.SaveAsXaml(paginator);
         }
     }
 }
示例#15
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();
        }
 public static void Create(IDocumentPaginatorSource paginator)
 {
     using (var container = Package.Open(@"C:\temp\" + GetFileName(), FileMode.Create))
     {
         using (var xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
         {
             var xpsSM = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
             xpsSM.SaveAsXaml(paginator);
         }
     }
 }
示例#17
0
        public static int SaveAsXps(IDocumentPaginatorSource docref)
        {
            object doc;

            doc = docref;

            //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);

            //}

            string fileName = @"c:\a.xps";

            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))
                {

                    XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);

                    DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;

                    // 8 inch x 6 inch, with half inch margin

                    paginator = new DocumentPaginatorWrapper(paginator, new Size(768, 676), new Size(24, 24));

                    rsm.SaveAsXaml(paginator);

                }

            }

            Console.WriteLine("{0} generated.", fileName + ".xps");

            return 0;
        }
示例#18
0
 private void Save(string outputPath, IDocumentPaginatorSource paginator)
 {
     using (var container = Package.Open(outputPath, FileMode.Create))
     {
         using (var xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
         {
             var sm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
             sm.SaveAsXaml(paginator);
         }
     }
 }
示例#19
0
 /// <summary>
 /// Saves a <see cref="FlowDocument"/> to an XPS file.
 /// </summary>
 /// <param name="path">The file path to save to.</param>
 /// <param name="document">The document to save.</param>
 public static void SaveAsXps(string path, FlowDocument document)
 {
     using (Package package = Package.Open(path, FileMode.Create))
     {
         using (var xpsDoc = new XpsDocument(package, CompressionOption.Maximum))
         {
             var xpsSm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
             var dp    = ((IDocumentPaginatorSource)document).DocumentPaginator;
             xpsSm.SaveAsXaml(dp);
         }
     }
 }
示例#20
0
        /// <summary>
        /// Actually print an Xps Document with previously setup params
        /// </summary>
        /// <param name="paginator">Document to print</param>
        /// <param name="description">Description</param>
        public void PrintDocument(DocumentPaginator paginator, string description)
        {
            if (paginator == null)
            {
                throw new ArgumentNullException("paginator", "No DocumentPaginator to print");
            }

            VerifyPrintSettings();

            //Handle XPS ourself, as their document writer hates our thread
            if (mPrintQueue.FullName.Contains("XPS"))
            {
                SaveFileDialog sfd = new SaveFileDialog();
                sfd.Filter = "Xps Document (*.xps) | *.xps";

                if (sfd.ShowDialog() == true)
                {
                    XpsDocument             document         = new XpsDocument(sfd.FileName, System.IO.FileAccess.Write);
                    XpsPackagingPolicy      packagePolicy    = new XpsPackagingPolicy(document);
                    XpsSerializationManager serializationMgr = new XpsSerializationManager(packagePolicy, false);
                    serializationMgr.SaveAsXaml(paginator);

                    document.Close();
                }

                return;
            }

            XpsDocumentWriter writer = null;

            new PrintingPermission(PrintingPermissionLevel.DefaultPrinting).Assert();

            try
            {
                mPrintQueue.CurrentJobSettings.Description = description;
                writer = PrintQueue.CreateXpsDocumentWriter(mPrintQueue);

                TicketEventHandler handler = new TicketEventHandler(mPrintTicket);
                writer.WritingPrintTicketRequired += new WritingPrintTicketRequiredEventHandler(handler.SetPrintTicket);
            }
            finally
            {
                CodeAccessPermission.RevertAssert();
            }

            writer.Write(paginator);

            //Reset
            mPrintableWidth  = 0.0;
            mPrintableHeight = 0.0;
            mWidthUpdated    = false;
            mHeightUpdated   = false;
        }
示例#21
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();
         }
     }
 }
示例#22
0
        /// <summary>
        /// Saves a flow document as an XPS file
        /// </summary>
        /// <param name="document">The document to be sabed.</param>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="pageWidth">Width of the page.</param>
        /// <param name="pageHeight">Height of the page.</param>
        public static void SaveAsXps(this FlowDocument document, string fileName, double pageWidth = 816, double pageHeight = 1056)
        {
            if (!fileName.ToLower().EndsWith(".xps"))
                fileName += ".xps";

            using (var container = Package.Open(fileName, FileMode.Create))
            using (var xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
            {
                var rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
                var paginator = new DocumentPaginatorEx(document, new Size(pageWidth, pageHeight), new PageRange());
                rsm.SaveAsXaml(paginator);
            }
        }
示例#23
0
 private static void SaveFile(string tempFile, FixedDocument fixedDocument)
 {
     using (var memoryStream = new MemoryStream())
         using (Package container = Package.Open(tempFile, FileMode.Create))
         {
             using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
             {
                 XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
                 rsm.SaveAsXaml(fixedDocument);
             }
             memoryStream.Position = 0;
         }
 }
示例#24
0
 public static void SaveFlowAsXpsInFile(FlowDocument flowDocument)
 {
     using (Package container = Package.Open("journal.xps", FileMode.Create))
     {
         using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
         {
             XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
             DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
             paginator = new DocumentPaginatorWrapper(paginator, new Size(768, 676), new Size(48, 48));
             rsm.SaveAsXaml(paginator);
         }
     }
 }
示例#25
0
        /// <summary>
        /// Saves a flow document as an XPS file
        /// </summary>
        /// <param name="document">The document to be sabed.</param>
        /// <param name="fileName">Name of the file.</param>
        /// <param name="pageWidth">Width of the page.</param>
        /// <param name="pageHeight">Height of the page.</param>
        public static void SaveAsXps(this FlowDocument document, string fileName, double pageWidth = 816, double pageHeight = 1056)
        {
            if (!fileName.ToLower().EndsWith(".xps"))
            {
                fileName += ".xps";
            }

            using var container = Package.Open(fileName, FileMode.Create);
            using var xpsDoc    = new XpsDocument(container, CompressionOption.Maximum);
            var rsm       = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
            var paginator = new DocumentPaginatorEx(document, new Size(pageWidth, pageHeight), new PageRange());

            rsm.SaveAsXaml(paginator);
        }
		public static void SaveAsXps(string path, FlowDocument document)
		{
			using (var package = Package.Open(path, FileMode.Create))
			{
				using (var xpsDoc = new XpsDocument(
					package, CompressionOption.Maximum))
				{
					var xpsSm = new XpsSerializationManager(
						new XpsPackagingPolicy(xpsDoc), false);
					var dp = ((IDocumentPaginatorSource)document).DocumentPaginator;
					xpsSm.SaveAsXaml(dp);
				}
			}
		}
        protected override void SaveCore(IDocument document, string fileName)
        {
            // We have to clone the FlowDocument before we use different pagination settings for the export.
            RichTextDocument richTextDocument = document as RichTextDocument;
            FlowDocument clone = richTextDocument.CloneContent();

            using (Package package = Package.Open(fileName, FileMode.Create))
            using (XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.Maximum))
            {
                XpsSerializationManager serializer = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false);
                DocumentPaginator paginator = ((IDocumentPaginatorSource)clone).DocumentPaginator;
                serializer.SaveAsXaml(paginator);
            }
        }
示例#28
0
        private void SaveAsXps(TextEditor textEditor, string fileName, string title)
        {
            using (Package package = Package.Open(fileName, FileMode.Create))
            {
                using (XpsDocument xpsDoc = new XpsDocument(package, CompressionOption.Fast))
                {
                    XpsSerializationManager  xpsSerializationManager = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
                    DocumentPaginatorWrapper paginator = Printing.CreateDocumentPaginatorToPrint(textEditor);
                    paginator.Title = title;

                    xpsSerializationManager.SaveAsXaml(paginator);
                }
            }
        }
示例#29
0
        protected override void SaveCore(IDocument document, string fileName)
        {
            // We have to clone the FlowDocument before we use different pagination settings for the export.
            var richTextDocument = (RichTextDocument)document;
            var clone            = richTextDocument.CloneContent();

            clone.ColumnWidth = double.PositiveInfinity;

            using var package     = Package.Open(fileName, FileMode.Create);
            using var xpsDocument = new XpsDocument(package, CompressionOption.Maximum);
            var serializer = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false);
            var paginator  = ((IDocumentPaginatorSource)clone).DocumentPaginator;

            serializer.SaveAsXaml(paginator);
        }
        /// <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)
        {
            MemoryStream ms   = new MemoryStream();
            Package      pkg  = Package.Open(ms, 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, CompressionOption.NotCompressed, pack);
            XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false);

            ReportPaginator rp = new ReportPaginator(this, data);

            rsm.SaveAsXaml(rp);
            return(doc);
        }
示例#31
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>
 /// 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();
             }
         }
     }
 }
示例#33
0
 public static XpsDocument CreateXpsDocumentFromString(string xamlFlowDoc)
 {
     object doc;
     doc = XamlReader.Parse(xamlFlowDoc);
     MemoryStream ms = new MemoryStream();
     Package pkg = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
     string pack = "pack://report.xps";
     PackageStore.RemovePackage(new Uri(pack));
     PackageStore.AddPackage(new Uri(pack), pkg);
     XpsDocument xpsDoc = new XpsDocument(pkg, CompressionOption.NotCompressed, pack);
     XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
     DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;
     //paginator = new PimpedPaginator(paginator,);
     paginator = new DocumentPaginatorWrapper(paginator, new Size(768, 676), new Size(48, 48));
     rsm.SaveAsXaml(paginator);
     return xpsDoc;
 }
        /// <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));
        }
示例#35
0
        public void SaveAsXps(string fileName, FlowDocument document)
        {
            using (System.IO.Packaging.Package container = System.IO.Packaging.Package.Open(fileName, FileMode.Create))
            {
                using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
                {
                    XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);

                    DocumentPaginator paginator = ((IDocumentPaginatorSource)document).DocumentPaginator;

                    //16.5=6.4960=623.616
                    //11=4.3307=415.74
                    paginator = new DocumentPaginatorWrapper(paginator, new Size(416, 624), new Size(15, 15));

                    rsm.SaveAsXaml(paginator);
                }
            }
        }
示例#36
0
        public static void SaveAsXps2(string xamlFlowDoc, string xpsDocumentName)
        {
            object doc;
            doc = XamlReader.Parse(xamlFlowDoc);

            using (Package container = Package.Open(xpsDocumentName, FileMode.Create))
            {
                using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.NotCompressed))
                {
                    XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
                    //var paginator = new PimpedPaginator((FlowDocument)doc, new PimpedPaginator.Definition());
                    DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;
                    paginator = new ReportPaginator(paginator);
                    //paginator = new DocumentPaginatorWrapper(paginator, new Size(768, 676), new Size(48, 48));
                    rsm.SaveAsXaml(paginator);
                }
            }
        }
        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);
        }
示例#38
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();
     }
 }
示例#39
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);
            }
        }
示例#40
0
        private void LoadedHandler(object sender, RoutedEventArgs e)
        {
            // We have to clone the FlowDocument before we use different pagination settings for the export.
            FlowDocument clone = ViewModel.Document.CloneContent();

            clone.ColumnWidth = double.PositiveInfinity;

            var packageStream = new MemoryStream();

            package = Package.Open(packageStream, FileMode.Create, FileAccess.ReadWrite);
            PackageStore.AddPackage(new Uri(PackagePath), package);
            xpsDocument = new XpsDocument(package, CompressionOption.SuperFast, PackagePath);
            using (var serializer = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false))
            {
                DocumentPaginator paginator = ((IDocumentPaginatorSource)clone).DocumentPaginator;
                serializer.SaveAsXaml(paginator);
            }
            documentViewer.Document = xpsDocument.GetFixedDocumentSequence();
            documentViewer.Focus();
        }
示例#41
0
        /// <summary> Saves the created xps document to a file. </summary>
        /// <param name="filename"> The name of the file to save the XPS document as. </param>
        public void SaveToFile(string filename)
        {
            var fixedDocument = new FixedDocument();

            foreach (var page in CreatePages())
            {
                fixedDocument.Pages.Add(page);
            }

            using (var memoryStream = new MemoryStream())
                using (Package container = Package.Open(filename, FileMode.Create))
                {
                    using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
                    {
                        XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
                        rsm.SaveAsXaml(fixedDocument);
                    }
                    memoryStream.Position = 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;
            }
        }
示例#43
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);
     }
     
 }
示例#44
0
        public static int SaveAsXps(FlowDocument doc, string fileName, Size printableArea)
        {
            doc.ColumnWidth = printableArea.Width;
            using (Package container = Package.Open(fileName, FileMode.Create))
            {
                using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
                {
                    XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
                    DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;
                    paginator.ComputePageCount();

                    DocumentPaginator newPaginator = new DocumentPaginatorWrapper(
                        paginator,
                        printableArea, new Size(8, 8));

                    rsm.SaveAsXaml(paginator);
                }
            }

            return 0;
        }
示例#45
0
        private void ShowPrintPreview()
        {
            // We have to clone the FlowDocument before we use different pagination settings for the export.
            RichTextDocument document = fileService.ActiveDocument as RichTextDocument;
            FlowDocument clone = document.CloneContent();
            clone.ColumnWidth = double.PositiveInfinity;

            // Create a package for the XPS document
            MemoryStream packageStream = new MemoryStream();
            package = Package.Open(packageStream, FileMode.Create, FileAccess.ReadWrite);

            // Create a XPS document with the path "pack://temp.xps"
            PackageStore.AddPackage(new Uri(PackagePath), package);
            xpsDocument = new XpsDocument(package, CompressionOption.SuperFast, PackagePath);

            // Serialize the XPS document
            XpsSerializationManager serializer = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false);
            DocumentPaginator paginator = ((IDocumentPaginatorSource)clone).DocumentPaginator;
            serializer.SaveAsXaml(paginator);

            // Get the fixed document sequence
            FixedDocumentSequence documentSequence = xpsDocument.GetFixedDocumentSequence();

            // Create and show the print preview view
            PrintPreviewViewModel printPreviewViewModel = printPreviewViewModelFactory.CreateExport().Value;
            printPreviewViewModel.Document = documentSequence;
            previousView = shellViewModel.ContentView;
            shellViewModel.ContentView = printPreviewViewModel.View;
            shellViewModel.IsPrintPreviewVisible = true;
            printPreviewCommand.RaiseCanExecuteChanged();
        }
示例#46
0
 public static XpsDocument SaveFlowAsXpsInMemory(FlowDocument flowDocument)
 {
     MemoryStream ms = new MemoryStream();
     Package container = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
     Uri documentUri = new Uri("pack://InMemoryDocument.xps");
     PackageStore.AddPackage(documentUri, container);
     XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Fast, documentUri.AbsoluteUri);
     XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
     DocumentPaginator paginator = ((IDocumentPaginatorSource)flowDocument).DocumentPaginator;
     paginator = new DocumentPaginatorWrapper(paginator, new Size(768, 676), new Size(48, 48));
     rsm.SaveAsXaml(paginator);
     xpsDoc.Close();
     container.Close();
     return xpsDoc;
 }
示例#47
0
        public override int SaveAsXps(string fileName)
        {
            object doc;

            if (Draft == null)
                return -1;

            FileInfo fileInfo = new FileInfo(fileName);

            List<FlowDocument> Docs = new List<FlowDocument>();
            for (int x = 0; x < Chapters.Count; x++)
                Docs.Add(((Chapter)Chapters[x]).getFlow());

            doc = SavableDocument.CombineDocs(Docs);


            if (!(doc is IDocumentPaginatorSource))
            {
                Console.WriteLine("DocumentPaginatorSource expected");
                return -1;
            }

            File.Delete(fileName);
            using (Package container = Package.Open(fileName, FileMode.Create))
            {
                using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
                {
                    XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);

                    DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;


                    // 8 inch x 6 inch, with half inch margin
                    paginator = new DocumentPaginatorWrapper(paginator, new Size(595 * 1.33, 842 * 1.3), new Size(48, 48));


                    rsm.SaveAsXaml(paginator);

                }
            }


            return 0;
        }
示例#48
0
		private void Save(string outputPath, IDocumentPaginatorSource paginator)
		{
			using (var container = Package.Open(outputPath, FileMode.Create))
			{
				using (var xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
				{
					var sm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);
					sm.SaveAsXaml(paginator);
				}
			}
		}
示例#49
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();
        }
示例#50
0
		/// <summary>
		/// Actually print an Xps Document with previously setup params
		/// </summary>
		/// <param name="paginator">Document to print</param>
		/// <param name="description">Description</param>
		public void PrintDocument(DocumentPaginator paginator, string description)
		{
			if (paginator == null)
				throw new ArgumentNullException("paginator", "No DocumentPaginator to print");

			VerifyPrintSettings();

			//Handle XPS ourself, as their document writer hates our thread
			if (mPrintQueue.FullName.Contains("XPS"))
			{
				SaveFileDialog sfd = new SaveFileDialog();
				sfd.Filter = "Xps Document (*.xps) | *.xps";

				if (sfd.ShowDialog() == true)
				{
					XpsDocument document = new XpsDocument(sfd.FileName, System.IO.FileAccess.Write);
					XpsPackagingPolicy packagePolicy = new XpsPackagingPolicy(document);
					XpsSerializationManager serializationMgr = new XpsSerializationManager(packagePolicy, false);
					serializationMgr.SaveAsXaml(paginator);

					document.Close();
				}

				return;
			}

			XpsDocumentWriter writer = null;
			new PrintingPermission(PrintingPermissionLevel.DefaultPrinting).Assert();

			try
			{
				mPrintQueue.CurrentJobSettings.Description = description;
				writer = PrintQueue.CreateXpsDocumentWriter(mPrintQueue);

				TicketEventHandler handler = new TicketEventHandler(mPrintTicket);
				writer.WritingPrintTicketRequired += new WritingPrintTicketRequiredEventHandler(handler.SetPrintTicket);
			}
			finally
			{
				CodeAccessPermission.RevertAssert();
			}

			writer.Write(paginator);

			//Reset
			mPrintableWidth = 0.0;
			mPrintableHeight = 0.0;
			mWidthUpdated = false;
			mHeightUpdated = false;
		}
示例#51
0
 public IDocumentPaginatorSource LoadPrint(System.Collections.Generic.List<FixedPage> pages, Size vsize)
 {
     FixedDocument fd = new FixedDocument();
     fd.DocumentPaginator.PageSize = vsize;
     foreach (var item in pages)
     {
         PageContent pc = new PageContent();
         ((IAddChild)pc).AddChild(item);
         pc.Height = vsize.Height;
         pc.Width = vsize.Width;
         fd.Pages.Add(pc);
     }
     MemoryStream ms = new MemoryStream();
     Package pkg = Package.Open(ms, 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, CompressionOption.NotCompressed, pack);
     XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false);
     rsm.SaveAsXaml(fd);
     return doc.GetFixedDocumentSequence() as IDocumentPaginatorSource;
 }
示例#52
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);
        }
        /// <summary>
        /// Helper method to create page header or footer from flow document template
        /// </summary>
        /// <param name="data">report data</param>
        /// <returns></returns>
        public static XpsDocument CreateXpsDocument(FlowDocument document) {
            MemoryStream ms = new MemoryStream();
            Package pkg = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
            string pack = "pack://report.xps";
            PackageStore.RemovePackage(new Uri(pack));
            PackageStore.AddPackage(new Uri(pack), pkg);
            XpsDocument xpsdoc = new XpsDocument(pkg, CompressionOption.NotCompressed, pack);
            XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsdoc), false);

            DocumentPaginator dp = 
                ((IDocumentPaginatorSource)document).DocumentPaginator;
            rsm.SaveAsXaml(dp);
            return xpsdoc;
        }
示例#54
0
        public static XpsDocument GetXpsDocument(FlowDocument document)
        {
            //Uri DocumentUri = new Uri("pack://currentTicket_" + new Random().Next(1000).ToString() + ".xps");
            Uri docUri = new Uri("pack://tempTicket.xps");

            var ms = new MemoryStream();
            {
                Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);

                PackageStore.RemovePackage(docUri);
                PackageStore.AddPackage(docUri, package);

                XpsDocument xpsDocument = new XpsDocument(package, CompressionOption.SuperFast, docUri.AbsoluteUri);

                XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDocument), false);

                DocumentPaginator docPage = ((IDocumentPaginatorSource)document).DocumentPaginator;

                //docPage.PageSize = new System.Windows.Size(PageWidth, PageHeight);
                //docPage.PageSize = new System.Windows.Size(document.PageWidth, document.PageHeight);

                rsm.SaveAsXaml(docPage);

                return xpsDocument;
            }
        }
示例#55
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)
        {
            MemoryStream ms = new MemoryStream();
            Package pkg = Package.Open(ms, 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, CompressionOption.NotCompressed, pack);
            XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false);
            DocumentPaginator paginator = ((IDocumentPaginatorSource)CreateFlowDocument()).DocumentPaginator;

            ReportPaginator rp = new ReportPaginator(this, data);
            rsm.SaveAsXaml(rp);
            return doc;
        }
示例#56
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);
        }
示例#57
0
		/// <summary>
		/// Helper method to create page header or footer from flow document template
		/// </summary>
		/// <param name="data">enumerable report data</param>
		/// <returns></returns>
		/// <exception cref="ArgumentNullException">data</exception>
		public XpsDocument CreateXpsDocument(IEnumerable<ReportData> data)
		{
			using (var counter = new TimeCounter("CreateXpsDocument Total:		{0}", true, true))
			{
				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

				MemoryStream ms = new MemoryStream();
				Package pkg = Package.Open(ms, 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, CompressionOption.NotCompressed, pack);
				XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(doc), false);
				//DocumentPaginator paginator = ((IDocumentPaginatorSource)CreateFlowDocument()).DocumentPaginator;
				counter.ShowTick("CreateXpsDocument Prepare:	{0}");

				MultipleReportPaginator rp = new MultipleReportPaginator(this, data);
				counter.ShowTick("CreateXpsDocument Paginator:	{0}");
				rsm.SaveAsXaml(rp);
				counter.ShowTick("CreateXpsDocument SaveAsXaml:	{0}");
				return doc;
			}
		}
        /// <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;
        }
示例#59
0
        public virtual int SaveAsXps(string fileName)
        {
            object doc;

            if (Draft == null)
                return -1;

            FileInfo fileInfo = new FileInfo(fileName);
            SavableDocument sav = new SavableDocument(Draft);
            doc = sav.CloneDoc();

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

            File.Delete(fileName);
            using (Package container = Package.Open(fileName, FileMode.Create))
            {
                using (XpsDocument xpsDoc = new XpsDocument(container, CompressionOption.Maximum))
                {
                    XpsSerializationManager rsm = new XpsSerializationManager(new XpsPackagingPolicy(xpsDoc), false);

                    DocumentPaginator paginator = ((IDocumentPaginatorSource)doc).DocumentPaginator;


                    // 8 inch x 6 inch, with half inch margin
                    paginator = new DocumentPaginatorWrapper(paginator, new Size(595*1.33, 842*1.3), new Size(48, 48));


                    rsm.SaveAsXaml(paginator);
                    
                }
            }


            return 0;
        }