MergePDFs.vb
''
'' このコードは、DioDocs for PDF のサンプルの一部として提供されています。
'' © MESCIUS inc. All rights reserved.
''
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Pdf.Annotations
Imports GCDRAW = GrapeCity.Documents.Drawing
'' このサンプルは、複数の既存の PDF を1つのドキュメントに結合する方法を示します。
'' GcPdfDocument.MergeWithDocument() メソッドにてこの機能が提供されており、
'' 別の PDF のすべてまたは一部のページを現在のドキュメントに挿入することができます。
'' この例では、フォーマットの異なる複数の文書を結合して、1つの PDF ファイルを出力します。
Public Class MergePDFs
Function CreatePDF(ByVal stream As Stream) As Integer
Dim doc = New GcPdfDocument()
Using fs0 = New FileStream(Path.Combine("Resources", "PDFs", "diodocs_catalog.pdf"), FileMode.Open, FileAccess.Read)
Using fs1 = New FileStream(Path.Combine("Resources", "PDFs", "diodocs_a4_full.pdf"), FileMode.Open, FileAccess.Read)
Using fs2 = New FileStream(Path.Combine("Resources", "PDFs", "diodocs_pricelist.pdf"), FileMode.Open, FileAccess.Read)
doc.Load(fs0)
'' 以降で追加されるナビゲーションリンクのページカウントを保存します。
Dim pgNo = doc.Pages.Count
Dim doc1 = New GcPdfDocument()
doc1.Load(fs1)
doc.MergeWithDocument(doc1, New MergeDocumentOptions())
Dim doc2 = New GcPdfDocument()
doc2.Load(fs2)
doc.MergeWithDocument(doc2, New MergeDocumentOptions())
'' ドキュメントの先頭にノートを挿入します。
Dim page = doc.Pages.Insert(0)
Dim rc = Util.AddNote(
"複数の PDF ファイルを読み込み、それらを結合するサンプルです。" + vbLf +
"結合した文書に表紙を追加し、結果を1つのファイルとして保存しています。" + vbLf +
"また、このメモをクリックすると、2番目の文書の最初のページにジャンプします。" + vbLf +
"GcPdfDocument.MergeWithDocument() メソッドを使用すると、現在の文書に別の文書の" + vbLf +
"全ページまたは一部のページを追加可能です。" + vbLf,
page)
Using image As GCDRAW.Image = GCDRAW.Image.FromFile(Path.Combine("Resources", "ImagesBis", "PDFMerges.png"))
Dim g = page.Graphics
Dim imageRc = New RectangleF((page.Size.Width - 432) / 2, page.Size.Height / 3, 432, 308)
g.DrawImage(image, imageRc, Nothing, GCDRAW.ImageAlign.ScaleImage)
'' 2つ目のドキュメントの最初のページにメモを追加します。
page.Annotations.Add(New LinkAnnotation(rc, New DestinationFit(pgNo + 1)))
'' 終了(ソースが破棄される前にターゲット文書を保存する必要があります)。
doc.Save(stream)
End Using
End Using
Return doc.Pages.Count
End Using
Return doc.Pages.Count
End Using
Return doc.Pages.Count
End Function
End Class