Guest User

Untitled

a guest
Apr 23rd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. public void CreateXPSStreamPages(string targetDocument, List<string> list)
  2. {
  3. Package container = Package.Open(targetDocument, FileMode.Create);
  4. XpsDocument xpsDoc = new XpsDocument(container);
  5. XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
  6.  
  7. SerializerWriterCollator vxpsd = writer.CreateVisualsCollator();
  8. vxpsd.BeginBatchWrite();
  9. foreach (string sourceDocument in list)
  10. {
  11. AddXPSDocument(sourceDocument, vxpsd);
  12. }
  13. vxpsd.EndBatchWrite();
  14. container.Close();
  15. }
  16.  
  17. public void AddXPSDocument(string sourceDocument, SerializerWriterCollator vxpsd)
  18. {
  19. XpsDocument xpsOld = new XpsDocument(sourceDocument, FileAccess.Read);
  20. FixedDocumentSequence seqOld = xpsOld.GetFixedDocumentSequence();
  21. foreach (DocumentReference r in seqOld.References)
  22. {
  23. FixedDocument d = r.GetDocument(false);
  24. foreach (PageContent pc in d.Pages)
  25. {
  26. FixedPage fixedPage = pc.GetPageRoot(false);
  27. double width = fixedPage.Width;
  28. double height = fixedPage.Height;
  29. Size sz = new Size(width, height);
  30. fixedPage.Width = width;
  31. fixedPage.Height = height;
  32. fixedPage.Measure(sz);
  33. fixedPage.Arrange(new Rect(new Point(), sz));
  34. //fixedPage.UpdateLayout();
  35.  
  36. ContainerVisual newPage = new ContainerVisual();
  37. newPage.Children.Add(fixedPage);
  38. //test: add Watermark from Feng Yuan sample
  39. //newPage.Children.Add(CreateWatermark(width, height, "Watermark"));
  40.  
  41. vxpsd.Write(newPage);
  42. }
  43. }
  44. xpsOld.Close();
  45. }
  46.  
  47. Public Sub CreateXPSStream(targetDocument As String, ListToMerge As List(Of String))
  48. If (File.Exists(targetDocument)) Then
  49. File.Delete(targetDocument)
  50. End If
  51. Dim container As Package = Package.Open(targetDocument, FileMode.Create)
  52. Dim xpsDoc = New System.Windows.Xps.Packaging.XpsDocument(container)
  53. Dim seqNew As FixedDocumentSequence = New FixedDocumentSequence()
  54. For Each sourceDocument As String In ListToMerge
  55. AddXPSDocuments(sourceDocument, seqNew)
  56. Next
  57. Dim xpsWriter As XpsDocumentWriter = XpsDocument.CreateXpsDocumentWriter(xpsDoc)
  58. xpsWriter.Write(seqNew)
  59. xpsDoc.Close()
  60. container.Close()
  61. End Sub
  62. Public Sub AddXPSDocuments(ByVal sourceDocument As String, ByRef seqNew As FixedDocumentSequence)
  63. Try
  64. Dim xpsOld As XpsDocument = New XpsDocument(sourceDocument, FileAccess.Read)
  65. Dim seqOld As FixedDocumentSequence = xpsOld.GetFixedDocumentSequence()
  66. For Each r As DocumentReference In seqOld.References
  67. Dim newRef As DocumentReference = New DocumentReference()
  68. CType(newRef, IUriContext).BaseUri = CType(r, IUriContext).BaseUri
  69. newRef.Source = r.Source
  70. seqNew.References.Add(newRef)
  71. Next
  72. Catch ex As Exception
  73. myStatusAdd("Error with " & sourceDocument)
  74. End Try
  75. End Sub
Add Comment
Please, Sign In to add comment