NonSoft

PDFファイルを結合するサンプル(VB.NET)


 サンプル(ソース/コード)
2つのPDFファイルを1つのPDFファイルとして結合するサンプルです。
PDF出力ライブラリとしてiText.NET(iText.NET.2005-dll-1.4.6-1.cab)を使用しています。
iText.NETのダウンロードサイト:http://sourceforge.net/projects/itextdotnet/

iText.NETはvjslib.dll(J#.NET)を参照設定して使用します。
iText.NETのiText.dllとJSharpLib.dllを参照設定して使用します。

PDF関係のプログラムを最初から作るより、こちらのPDF結合ツールと連携した方が早いかもしれません。

PDF関係のサンプルソースは他にもあります。
PDFファイルを出力するサンプル(VB.NET)
PDFファイルを分割するサンプル(VB.NET)
画像ファイルをPDF変換するサンプル(VB.NET)

C#.NET版はこちらです。
PDFファイルを出力するサンプル(C#.NET)
PDFファイルを分割するサンプル(C#.NET)
PDFファイルを結合するサンプル(C#.NET)
画像ファイルをPDF変換するサンプル(C#.NET)

関連ツールはこちらです。
PDF出力・分割・結合(ツール/ソフト)

★フォームモジュール(Form1.vb)
'--PDF結合サンプル--↓↓--PDF結合サンプル--↓↓--PDF結合サンプル--↓↓--PDF結合サンプル--
Imports System.io
Imports com.lowagie.text
Imports com.lowagie.text.pdf

Public Class Form1
    ' (注意1)vjslib.dll(J#.NET)を参照設定する必要があります。
    ' (注意2)iText.dllを参照設定する必要があります。
    ' (注意3)JSharpLib.dllを参照設定する必要があります。
    Private Sub Button1_Click( _
        ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click
        ' 出力用PDFオブジェクトの生成
        Dim dc As Document = _
            New Document(New PdfReader("test1.pdf").getPageSizeWithRotation(1))

        ' 出力用PDFファイルのオープン
        Dim fs1 As FileStream = _
            New FileStream("test3.pdf", FileMode.Create, FileAccess.Write)

        ' 出力用PDFオブジェクトとPDFファイルの関連付け
        Dim wr1 As PdfWriter = PdfWriter.getInstance(dc, fs1)

        ' PDF出力開始
        dc.open()

        ' PdfContentByte取得
        Dim pcb As PdfContentByte = wr1.getDirectContent()

        ' 入力用PDFファイル毎の処理
        For p As Integer = 1 To 2
            ' 入力用PDFファイルのオープン
            Dim rd As PdfReader = New PdfReader("test" & p & ".pdf")

            ' 入力用PDFファイルのページ数取得
            Dim pn As Integer = rd.getNumberOfPages()

            ' PDF出力処理
            For i As Integer = 1 To pn
                ' ページサイズ設定
                dc.setPageSize(rd.getPageSizeWithRotation(i))

                ' 改ページ
                dc.newPage()

                ' ページ取得
                Dim pip As PdfImportedPage = wr1.getImportedPage(rd, i)

                ' ページ出力
                If rd.getPageRotation(i) = 0 Then
                    ' 回転しない
                    pcb.addTemplate(pip, 1.0F, 0, 0, 1.0F, 0, 0)
                Else
                    ' 回転する
                    pcb.addTemplate(pip, 0, -1.0F, 1.0F, 0, 0, _
                        rd.getPageSizeWithRotation(i).height())
                End If
            Next
        Next

        ' PDF出力終了
        dc.close()
    End Sub
End Class
'--PDF結合サンプル--↑↑--PDF結合サンプル--↑↑--PDF結合サンプル--↑↑--PDF結合サンプル--