[ VB.NET / C# ] PDF ファイルをフォーム上に表示して印刷する

Pocket

ここでは、VB.NET, C# でPDF ファイルをフォーム上に表示して印刷するサンプルコードを掲載しています。

スポンサーリンク

Acrobat SDK をダウンロードする ( 事前準備 )

Windows フォーム上で PDFを表示したり印刷するのに、Adobe から提供されているブラウザコントロールをプロジェクトに組み込むまでの手順になります。準備が整っている方はこの部分は読み飛ばしも問題ないです。

まずは、下記のサイトから Adobe SDK を取得します。

※ SDK 8.2 はユーザー登録が必要でした。

DLL ファイルの取得 ( 事前準備 )

上記で取得した SDK 内のサンプルプロジェクト AcrobatActiveXVB をコンパイルすると、以下の2つの dll ファイルが作成されますので、プロジェクトの参照設定で追加すれば PDF ブラウザコントロールが使用できるようになります。

  • AxInterop.AcroPDFLib.dll
  • Interop.AcroPDFLib.dll

PDF ファイルをフォーム上に表示

プロジェクトに参照設定で追加した PDF ブラウザコントロール上に、PDF ファイルを表示するサンプルコードです。

VB.NET

    ' ブラウザコントロールの作成
    Dim pdfOcx As New AxAcroPDFLib.AxAcroPDF()

    pdfOcx.Dock = DockStyle.Fill ' フォーム全体に表示する()
    Me.Controls.Add(pdfOcx)      ' フォームにコントロールを追加

    ' PDF ブラウザコントロールに指定したPDFファイルを表示する
    pdfOcx.LoadFile("E:\test.pdf")

C#

    // ブラウザコントロールの作成
    AxAcroPDFLib.AxAcroPDF pdfOcx = new AxAcroPDFLib.AxAcroPDF();

    pdfOcx.Dock = DockStyle.Fill; // フォーム全体に表示する
    this.Controls.Add(pdfOcx);    // フォームにコントロールを追加

    // PDF ブラウザコントロールに指定したPDFファイルを表示する
    pdfOcx.LoadFile(@"E:\test.pdf");

PDF ファイルを印刷する

Adobe Reader を起動することなく、PDF ブラウザコントロールから印刷を行うこともできます。詳細はサンプル内のコメントを参照ください。

VB.NET

    ' ブラウザコントロールの作成
    Dim pdfOcx As New AxAcroPDFLib.AxAcroPDF()

    pdfOcx.Dock = DockStyle.Fill ' フォーム全体に表示する()
    Me.Controls.Add(pdfOcx)
    ' 注意!!
    ' フォームへコントロール追加後に非表示にしないと例外発生
    pdfOcx.Visible = False       ' 非表示にする
    'pdfOcx.Hide()               ' 非表示

    ' PDF ファイルの読み込み
    pdfOcx.LoadFile("E:\test1.pdf")

    ' 以下のコードでもOK(URL指定でも多分OK)
    'pdfOcx.src = "E:\test1.pdf;

    pdfOcx.printAll()        ' 問答無用で全ページ印刷(デフォルトプリンタ)

    pdfOcx.printPages(1, 2)  ' 印刷範囲を指定して印刷(デフォルトプリンタ)

    pdfOcx.printWithDialog() ' 印刷ダイアログを出力

C#

    // ブラウザコントロールの作成
    AxAcroPDFLib.AxAcroPDF pdfOcx = new AxAcroPDFLib.AxAcroPDF();
    // フォームにコントロールを追加
    this.Controls.Add(pdfOcx);

    // 注意!!
    // フォームへコントロール追加後に非表示にしないと例外発生
    pdfOcx.Visible = false;       // 非表示にする
    //pdfOcx.Hide();              // 非表示

    // PDF ファイルの読み込み
    pdfOcx.LoadFile(@"E:\test1.pdf");

    // 以下のコードでもOK(URL指定でも多分OK)
    //pdfOcx.src = @"E:\test1.pdf";

    pdfOcx.printAll();        // 問答無用で全ページ印刷(デフォルトプリンタ)

    pdfOcx.printPages(1, 2);  // 印刷範囲を指定して印刷(デフォルトプリンタ)
           
    pdfOcx.printWithDialog(); // 印刷ダイアログを出力
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *