PDF Printer(PDF印刷) C#サンプル

PDF Printer(PDF印刷)

「PDF Printer」ソフトは、PDF文書を印刷するためのコンポーネントです。

このコンポーネントは高いパフォーマンスと統合のし易さが特徴で、以下の3つのバージョンで提供しています。

  • APIバージョンではアプリケーションに印刷機能を追加でき、それを制御します。
  • コマンドライン(バッチ処理)での大量印刷。
  • バックグラウンドでの自動印刷を行うサービス。
印刷するPDF文書は、インターネット上の文書をHTTPで指定できます。

表示しているPDF文書を印刷する場合は、PDFViewer(PDF表示)でも印刷できます。
PDF Printer 機能概要はこちらです。

他の開発言語によるサンプル( C++VB6.0Java )も公開しています。
無償評価版(リンク先は英語)はこちらです。
購入 購入(価格)

無償評価版のダウンロードとインストール

 ライブラリ(評価版API)は無償でダウンロード(試用)できます。
 ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
binライブラリやライセンスマネージャーなど
doc使用説明書やjavadocなど
includeC/C++用のヘッダー(.h)ファイル
jarP2IA.jar,PCIA.jar(Javaのラッパー)
libC/C++用のlibファイル
samples各種開発言語のサンプル
サンプルの実行前に、bin/PdfPrintAPI.dllをサンプル実行イメージと同じフォルダーにコピーしてください。また、無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。 ライセンスキーの登録方法は、こちらです。

参照設定

C#プロジェクトでは、以下のように.NET用DLLの参照を設定します。なお、サンプルは、基本的にコンソールアプリケーションです。
  1. C#プロジェクトを新規に作成します。
  2. PDF PrinterライブラリのNETラッパを参照する設定をします。
    Visual Studio C#のメインメニューで、「プロジェクト(P)」→「参照の追加(R)...」を選択します。
    以下のようなダイアログが表示されますので、解凍して作成されたフォルダーの「bin」に格納されている.NET用のDLLを指定します。
    PDF Printer参照設定
  3. ネイティブのDLLを作成したプロジェクトに追加します。
    Visual Studioのソリューション エクスプローラ(左ペーン)で作成したプロジェクトを右クリックします。
    表示されたメニューから「追加(D)」->「既存の項目(G)...」を選択して表示されたダイアログでPdfPrintAPI.dllを追加します。
    もしくは、bin/PdfPrintAPI.dllをプロジェクトの実行ファイルが格納されているフォルダーにコピーします。

C++ サンプル

1っのPDF文書を1っのプリンターで印刷する

以下のサンプルでは、1っのPDF文書を1っのプリンターで印刷します。
複数のPDF文書を複数のプリンターに振り分けて印刷する場合は、「複数のPDF文書を1っのプリンターで印刷する」を参照してください。
using System;
using Pdftools.Pdf;
using Pdftools.PdfPrint;
using Pdftools.Render;

namespace ss
{
    class Program
    {
        static void Main(string[] args)
        {
            //インスタンス生成
            Printer printer = new Printer();

            //印刷
            printer.PrintFile("some.pdf", null, null, 1, -1);
        }
    }
}
Printer()インスタンス生成
PrintFile( )指定のPDF文書のすべてのページを、指定したプリンターで印刷します。
サンプルの場合は、デフォルトのプリンターで印刷します。
引数には以下の値を指定します。
第一引数印刷するPDFファイル名 (インターネット上のPDFを指定する場合)
第二引数プリンター名
null(または空文字)を指定すると、デフォルトのプリンターで印刷
第三引数PDFが暗号化されている場合のパスワード
暗号化されていない場合は、null(または空文字)を指定
第四引数印刷を開始するページ番号
第五引数印刷する最終のページ番号
-1を指定すると、最後のページまで印刷

1っのPDF文書を1っのプリンターで印刷する(別の方法)

 このサンプルでは、1っのPDFを1っのプリンターでページを指定して印刷します。その際に印刷ジョブの開始と終了をコントロールします。
using System;
using Pdftools.Pdf;
using Pdftools.PdfPrint;
using Pdftools.Render;

namespace ssj
{
    class Program
    {
        static void Main(string[] args)
        {
            //インスタンス生成
            Printer printer = new Printer();

                //プリンター
                printer.OpenPrinter(null);

                    //印刷ジョブ
                    printer.BeginDocument("My Print Job");

                        //PDF文書
                        printer.Open("some.pdf", null);

                            //印刷ページ指定
                            printer.PrintPage(1);   //最初のページ

                        //終了
                        printer.Close();
                    printer.EndDocument();
                printer.ClosePrinter();
        }
    }
}
Printer()インスタンス生成
OpenPrinter( )プリンターとの接続を開始します。引数には、プリンター名を指定します。null(または空文字)を指定すると、デフォルトのプリンターとなります。
BeginDocument( )印刷ジョブを開始します。引数に指定した名前のジョブになります。
Open( )印刷するPDF文書を開きます。 (インターネット上のPDFを開く場合
第一引数印刷するPDFファイル名
第二引数暗号化した場合のパスワード
暗号化していない場合は、null(または空文字)を指定します
PrintPage印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=printer.PageCount; i++)
{
    printer.PrintPage(i);
}
ClosePDF文書を閉じます。
EndDocument印刷ジョブを終了します。
ClosePrinterプリンターとの接続を終了します。

複数のPDF文書を1っのプリンターで印刷する

このサンプルでは、複数のPDF文書のページを指定して1っのプリンターで印刷します。
using System;
using Pdftools.Pdf;
using Pdftools.PdfPrint;
using Pdftools.Render;

namespace ms
{
    class Program
    {
        static void Main(string[] args)
        {
            //インスタンス生成
            Printer printer = new Printer();

                //プリンター
                printer.OpenPrinter(null);

                    //印刷ジョブ開始
                    printer.BeginDocument("My Print Job");

                        //1っめのPDF文書
                        printer.Open("first.pdf", null);
                            printer.PrintPage(3);   //3ページめを印刷
                        printer.Close();

                        //2っめのPDF文書
                        printer.Open("second.pdf", null);
                            printer.PrintPage(1);   //最初のページを印刷
                        printer.Close();

                    //終了
                    printer.EndDocument();
                printer.ClosePrinter();
        }
    }
}
Printer()インスタンス生成
OpenPrinter( )プリンターとの接続を開始します。引数には、プリンター名を指定します。null(または空文字)を指定すると、デフォルトのプリンターとなります。
BeginDocument( )印刷ジョブを開始します。引数に指定した名前のジョブになります。
Open( )印刷するPDF文書を開きます。 (インターネット上のPDFを開く場合
第一引数印刷するPDFファイル名
第二引数暗号化した場合のパスワード
暗号化していない場合は、null(または空文字)を指定します
PrintPage( )印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=printer.PageCount; i++)
{
    printer.PrintPage(i);
}
ClosePDF文書を閉じます。
「PDF文書を開く => 印刷するページを指定 => PDFを閉じる」の処理を、印刷するすべてのPDF文書に対して繰り返し実行します。
EndDocument印刷ジョブを終了します。
ClosePrinterプリンターとの接続を終了します。

1っのPDF文書を複数のプリンターで印刷する

このサンプルでは、1っのPDF文書のページを指定して複数のプリンター(複数の印刷ジョブ)で印刷します。
using System;
using Pdftools.Pdf;
using Pdftools.PdfPrint;
using Pdftools.Render;

namespace sm
{
    class Program
    {
        static void Main(string[] args)
        {
            //インスタンス生成
            Printer printer = new Printer();

            //PDF文書を開く
            printer.Open("some.pdf", null);

                //1っめの印刷ジョブ
                printer.OpenPrinter("Microsoft XPS Document Writer");
                    printer.BeginDocument("My First Job");
                        printer.PrintPage(1);   //1ページめを印刷
                    printer.EndDocument();
                printer.ClosePrinter();

                //2っめの印刷ジョブ
                printer.OpenPrinter("Microsoft Office Document Image Writer");
                    printer.BeginDocument("My Second Job");
                        printer.PrintPage(2);   //2ページめを印刷
                        printer.PrintPage(3);   //3ページめを印刷
                    printer.EndDocument();
                printer.ClosePrinter();

            //終了
            printer.Close();
        }
    }
}
Printer()インスタンス生成
Open印刷するPDF文書を開きます。 (インターネット上のPDFを開く場合
第一引数印刷するPDFファイル名
第二引数暗号化した場合のパスワード
暗号化していない場合は、null(または空文字)を指定します
OpenPrinterプリンターとの接続を開始します。引数には、プリンター名を指定します。null(または空文字)を指定すると、デフォルトのプリンターとなります。
BeginDocument印刷ジョブを開始します。引数に指定した名前のジョブになります。
PrintPage印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=printer.PageCount; i++){
    printer.PrintPage(i);
}
EndDocument印刷ジョブを終了します。
ClosePrinterプリンターとの接続を終了します。
「プリンターを開く => 印刷ジョブを開始 => 印刷するページを指定 => 印刷ジョブを終了 => プリンターを閉じる」の処理を、印刷させたいプリンターすべてに繰り返します。
ClosePDF文書を閉じます。

インターネット上のPDF文書を指定して印刷する方法

PDF Printerは、PDF文書を指定する際にHTTPプロトコルでファイルを指定できます。以下の形式で指定します。
http://[username:password@]domain[:port][/resource]
"username"および"password"は基本認証(Basic Authentication)のユーザー名とパスワード指定です。
このように指定すると、ネットワーク上のPDF文書を直接指定のプリンターで印刷できます。複数のPDF文書を指定する場合は、ローカルのPDFとネットワーク(Web)上の(リモート)PDFを混在させることもできます。
具体的には、以下のようにファイルを指定します。
printer.PrintFile("http://www.pdf-tools.trustss.co.jp/data/Receipt2.pdf", null, null, 1, -1);
または、
printer.Open("http://www.pdf-tools.trustss.co.jp/data/Receipt2.pdf", null);

サンプルコード

C# PDF 印刷 サンプル (MS Visual Studio 2008 Project) PDFprnCs.zip

ご質問、お問い合わせ

メールで support@TrustSS.co.jp 宛てにお送りください。
または、質問のページからお送りいただくようお願いします。ご要望も承っております。

PDF-Tools C#サンプル

PDF Toolsとは

PDF/Aとは