NonSoft

PDFファイルを結合するサンプル(C#.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ファイルを出力するサンプル(C#.NET)
PDFファイルを分割するサンプル(C#.NET)
画像ファイルをPDF変換するサンプル(VB.NET)

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

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

★フォームモジュール(Form1.cs)
//--PDF結合サンプル--↓↓--PDF結合サンプル--↓↓--PDF結合サンプル--↓↓--PDF結合サンプル--
using System.IO;
using com.lowagie.text;
using com.lowagie.text.pdf;

public partial class Form1 : Form
{
    // (注意1)vjslib.dll(J#.NET)を参照設定する必要があります。
    // (注意2)iText.dllを参照設定する必要があります。
    // (注意3)JSharpLib.dllを参照設定する必要があります。
    // (注意4)using com.lowagie.text;
    // (注意5)using com.lowagie.text.pdf;
    private void Button3_Click(object sender, EventArgs e)
    {
        // 出力用PDFオブジェクトの生成
        Document dc = new Document(new PdfReader("test1.pdf").getPageSizeWithRotation(1));

        // 出力用PDFファイルのオープン
        FileStream fs1 = new FileStream("test3.pdf", FileMode.Create, FileAccess.Write);

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

        // PDF出力開始
        dc.open();

        // PdfContentByte取得
        PdfContentByte pcb = wr1.getDirectContent();

        // 入力用PDFファイル毎の処理
        for (int p = 1; p <= 2; p++)
        {
            // 入力用PDFファイルのオープン
            PdfReader rd = new PdfReader("test" + p + ".pdf");

            // 入力用PDFファイルのページ数取得
            int pn = rd.getNumberOfPages();

            // PDF出力処理
            for (int i = 1; i <= pn; i++)
            {
                // ページサイズ設定
                dc.setPageSize(rd.getPageSizeWithRotation(i));

                // 改ページ
                dc.newPage();

                // ページ取得
                PdfImportedPage pip = wr1.getImportedPage(rd, i);

                // ページ出力
                if (rd.getPageRotation(i) == 0)
                {
                    // 回転しない
                    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());
                }
            }
        }

        // PDF出力終了
        dc.close();
    }
}
//--PDF結合サンプル--↑↑--PDF結合サンプル--↑↑--PDF結合サンプル--↑↑--PDF結合サンプル--