public void Create() { var uri = new Uri("pack://application:,,,/ypi_client_order.xps"); var stream = System.Windows.Application.GetResourceStream(uri).Stream; System.IO.Packaging.Package package1 = System.IO.Packaging.Package.Open(stream); System.IO.Packaging.PackageStore.AddPackage(uri, package1); var xpsDoc = new XpsDocument(package1, System.IO.Packaging.CompressionOption.Maximum, uri.AbsoluteUri); var fixedDocumentSequenceO = xpsDoc.GetFixedDocumentSequence(); MemoryStream xpsStream = new MemoryStream(); Package package2 = Package.Open(xpsStream, FileMode.Create); string memoryStreamUri = "memorystream://printstream"; Uri packageUri = new Uri(memoryStreamUri); PackageStore.AddPackage(packageUri, package2); XpsDocument doc = new XpsDocument(package2, CompressionOption.Fast, memoryStreamUri); XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); System.Windows.Documents.Serialization.SerializerWriterCollator vxpsd = writer.CreateVisualsCollator(); int pageno = 1; foreach (System.Windows.Documents.DocumentReference r in fixedDocumentSequenceO.References) { System.Windows.Documents.FixedDocument d = r.GetDocument(false); foreach (System.Windows.Documents.PageContent pc in d.Pages) { System.Windows.Documents.FixedPage fixedPage = pc.GetPageRoot(false); double width = fixedPage.Width; double height = fixedPage.Height; System.Windows.Size sz = new System.Windows.Size(width, height); fixedPage.Measure(sz); fixedPage.Arrange(new System.Windows.Rect(new System.Windows.Point(), sz)); fixedPage.UpdateLayout(); ContainerVisual newpage = new ContainerVisual(); newpage.Children.Add(fixedPage); newpage.Children.Add(CreateWatermark(400, 400, "hello world")); pageno++; vxpsd.Write(newpage); //PackageStore.RemovePackage(packageUri); //doc.Close(); } } doc.Close(); xpsStream.Position = 0; Package finalPackage = Package.Open(xpsStream, FileMode.Open); XpsDocument finalDoc = new XpsDocument(finalPackage, CompressionOption.Fast, memoryStreamUri); var fixedDocumentSequence = xpsDoc.GetFixedDocumentSequence(); }
public static void DoItTTT() { string filename = "c:\\tmp\\goof.xps"; string newFilename = "c:\\tmp\\new_goof.xps"; XpsDocument xpsOld = new XpsDocument(filename, System.IO.FileAccess.Read); System.Windows.Documents.FixedDocumentSequence seqOld = xpsOld.GetFixedDocumentSequence(); System.IO.Packaging.Package container = System.IO.Packaging.Package.Open(newFilename, System.IO.FileMode.Create); XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(new XpsDocument(container)); System.Windows.Documents.Serialization.SerializerWriterCollator vxpsd = writer.CreateVisualsCollator(); int pageno = 1; foreach (System.Windows.Documents.DocumentReference r in seqOld.References) { System.Windows.Documents.FixedDocument d = r.GetDocument(false); foreach (System.Windows.Documents.PageContent pc in d.Pages) { System.Windows.Documents.FixedPage fixedPage = pc.GetPageRoot(false); double width = fixedPage.Width; double height = fixedPage.Height; System.Windows.Size sz = new System.Windows.Size(width, height); fixedPage.Measure(sz); fixedPage.Arrange(new System.Windows.Rect(new System.Windows.Point(), sz)); fixedPage.UpdateLayout(); ContainerVisual newpage = new ContainerVisual(); newpage.Children.Add(fixedPage); newpage.Children.Add(CreateWatermark(400, 400, "hello world")); pageno++; vxpsd.Write(newpage); } } vxpsd.EndBatchWrite(); container.Close(); xpsOld.Close(); }