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)

★フォームモジュール(Form1.vb)
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