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++ サンプル

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

以下のサンプルでは、1っのPDF文書を1っのプリンターで印刷します。
複数のPDF文書を1っのプリンターで印刷する場合は、「複数のPDF文書を1っのプリンターで印刷する」を参照してください。
#include <stdio.h>
#include <Windows.h>
#include "Printer_c.h"

#pragma comment(lib,"PdfPrintAPI.lib")

int main()
{
    //初期化
    PDFPrnInitialize();

    //インスタンス生成
    TPDFPrinter pPrn = PDFPrnCreateObject();

        //印刷
        PDFPrnPrintFile(pPrn, TEXT("some.pdf"), NULL, NULL, 1, -1);

    //インスタンス開放、終了
    PDFPrnDestroyObject(pPrn);
    PDFPrnUnInitialize();

    return 0;
}
PDFPrnInitialize初期化
PDFPrnCreateObjectインスタンス生成
PDFPrnPrintFile 指定のPDF文書のすべてのページを、指定したプリンターで印刷します。
サンプルの場合は、デフォルトのプリンターで印刷します。
引数には以下の値を指定します。
第一引数インスタンスのハンドル
第二引数印刷するPDFファイル名 (インターネット上のファイルを指定する場合)
第三引数プリンター名
NULL("")文字を指定すると、デフォルトのプリンターで印刷
第四引数PDFが暗号化されている場合のパスワード
暗号化されていない場合は、null("")文字を指定
第五引数印刷を開始するページ番号
第六引数印刷する最終のページ番号
-1を指定すると、最後のページまで印刷
PDFPrnDestroyObjectインスタンス開放
PDFPrnUnInitialize終了

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

このサンプルでは、1っのPDFを1っのプリンターでページを指定して印刷します。その際に印刷ジョブの開始と終了をコントロールします。
#include <stdio.h>
#include <Windows.h>
#include "Printer_c.h"

#pragma comment(lib,"PdfPrintAPI.lib")

int main()
{
    //初期化
    PDFPrnInitialize();

    //インスタンス生成
    TPDFPrinter pPrn = PDFPrnCreateObject();

        //プリンター
        PDFPrnOpenPrinter(pPrn, TEXT(""));

            //印刷ジョブ
            PDFPrnBeginDocument(pPrn, TEXT("My Print Job"));

                //PDF文書
                PDFPrnOpen(pPrn, TEXT("some.pdf"), NULL);

                    //印刷するページ
                    PDFPrnPrintPage(pPrn, 1);

                //終了
                PDFPrnClose(pPrn);
            PDFPrnEndDocument(pPrn);
        PDFPrnClosePrinter(pPrn);
    PDFPrnDestroyObject(pPrn);
    PDFPrnUnInitialize();

    return 0;
}
PDFPrnInitialize初期化
PDFPrnCreateObjectインスタンス生成
PDFPrnOpenPrinterプリンターとの接続を開始します。引数には、プリンター名を指定します。NULL("")を指定すると、デフォルトのプリンターとなります。
PDFPrnBeginDocument印刷ジョブを開始します。引数に指定した名前のジョブになります。
PDFPrnOpen印刷するPDF文書を開きます。 (インターネット上のファイルを開く場合
PDFPrnPrintPage印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=PDFPrnGetPageCount(pPrn); i++){
    PDFPrnPrintPage(pPrn, i);
}
PDFPrnClosePDF文書を閉じます。
PDFPrnEndDocument印刷ジョブを終了します。
PDFPrnClosePrinterプリンターとの接続を終了します。
PDFPrnDestroyObjectインスタンスを開放します。

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

このサンプルでは、複数のPDF文書のページを指定して1っのプリンターで印刷します。
#include <stdio.h>
#include <Windows.h>
#include "Printer_c.h"

#pragma comment(lib,"PdfPrintAPI.lib")

int main()
{
    //初期化
    PDFPrnInitialize();

    //インスタンス生成
    TPDFPrinter pPrn = PDFPrnCreateObject();

        //プリンター
        PDFPrnOpenPrinter(pPrn, TEXT(""));

            //印刷ジョブ開始
            PDFPrnBeginDocument(pPrn, TEXT("My Print Job"));

                //1っめのPDF文書
                PDFPrnOpen(pPrn, TEXT("first.pdf"), NULL);
                    PDFPrnPrintPage(pPrn, 1);        //最初のページを印刷
                PDFPrnClose(pPrn);

                //2っめのPDF文書
                PDFPrnOpen(pPrn, TEXT("second.pdf"), NULL);
                    PDFPrnPrintPage(pPrn, 3);        //3ページめを印刷
                PDFPrnClose(pPrn);

            //印刷ジョブ終了
            PDFPrnEndDocument(pPrn);

        //プリンター終了
        PDFPrnClosePrinter(pPrn);

    //インスタンス開放
    PDFPrnDestroyObject(pPrn);
    PDFPrnUnInitialize();

    return 0;
}
PDFPrnInitialize初期化
PDFPrnCreateObjectインスタンス生成
PDFPrnOpenPrinterプリンターとの接続を開始します。引数には、プリンター名を指定します。NULL("")を指定すると、デフォルトのプリンターとなります。
PDFPrnBeginDocument印刷ジョブを開始します。引数に指定した名前のジョブになります。
PDFPrnOpen印刷するPDF文書を開きます。 (インターネット上のファイルを開く場合
PDFPrnPrintPage印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=PDFPrnGetPageCount(pPrn); i++){
    PDFPrnPrintPage(pPrn, i);
}
PDFPrnClosePDF文書を閉じます。
「PDF文書を開く => 印刷するページを指定 => PDFを閉じる」の処理を、印刷するすべてのPDF文書に対して繰り返し実行します。
PDFPrnEndDocument印刷ジョブを終了します。
PDFPrnClosePrinterプリンターとの接続を終了します。
PDFPrnDestroyObjectインスタンスを開放します。

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

このサンプルでは、1っのPDF文書のページを指定して複数のプリンター(複数の印刷ジョブ)で印刷します。
#include <stdio.h>
#include <Windows.h>
#include "Printer_c.h"

#pragma comment(lib,"PdfPrintAPI.lib")

int main()
{
    //初期化
    PDFPrnInitialize();

    //インスタンス生成
    TPDFPrinter pPrn = PDFPrnCreateObject();

        //PDF文書を開く
        PDFPrnOpen(pPrn, TEXT("some.pdf"), NULL);

            //1っめのプリンターを開き、印刷ジョブを開始
            PDFPrnOpenPrinter(pPrn, TEXT("The First Printer"));
                PDFPrnBeginDocument(pPrn, TEXT("My First Job"));
                    PDFPrnPrintPage(pPrn, 1);
                PDFPrnEndDocument(pPrn);
            PDFPrnClosePrinter(pPrn);

            //2っめのプリンターを開き、印刷ジョブを開始
            PDFPrnOpenPrinter(pPrn, TEXT("The Second Printer"));
                PDFPrnBeginDocument(pPrn, TEXT("My Second Job"));
                    PDFPrnPrintPage(pPrn, 2);
                    PDFPrnPrintPage(pPrn, 3);
                PDFPrnEndDocument(pPrn);
            PDFPrnClosePrinter(pPrn);

        //PDF文書を閉じる
        PDFPrnClose(pPrn);

    //インスタンス開放
    PDFPrnDestroyObject(pPrn);
    PDFPrnUnInitialize();

    return 0;
}
PDFPrnInitialize初期化
PDFPrnCreateObjectインスタンス生成
PDFPrnOpen印刷するPDF文書を開きます。 (インターネット上のファイルを開く場合
PDFPrnOpenPrinterプリンターとの接続を開始します。引数には、プリンター名を指定します。NULL("")を指定すると、デフォルトのプリンターとなります。
PDFPrnBeginDocument印刷ジョブを開始します。引数に指定した名前のジョブになります。
PDFPrnPrintPage印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=PDFPrnGetPageCount(pPrn); i++){
    PDFPrnPrintPage(pPrn, i);
}
PDFPrnEndDocument印刷ジョブを終了します。
PDFPrnClosePrinterプリンターとの接続を終了します。
「プリンターを開く => 印刷ジョブを開始 => 印刷するページを指定 => 印刷ジョブを終了 => プリンターを閉じる」の処理を、印刷させたいプリンターすべてに繰り返します。
PDFPrnClosePDF文書を閉じます。
PDFPrnDestroyObjectインスタンスを開放します。

インターネット(Web)上のPDF文書を直接印刷する

PDF Printerは、変換されるPDF文書を指定する際に、インターネット(Web)上のファイルを指定できます。
PDFファイルを指定する場合に、以下の形式で指定するとHTTPプロトコルでファイルにアクセスします。
http://[username:password@]domain[:port][/resource]
"username"および"password"は基本認証(Basic Authentication)のユーザー名とパスワード指定です。

このように指定すると、ネットワーク上のPDF文書を直接指定のプリンターで印刷できます。複数のPDF文書を指定する場合は、ローカルのPDFとネットワーク(Web)上の(リモート)PDFを混在させることもできます。
具体的には、以下のようにファイルを指定します。
PDFPrnOpen(pPrn, "http://www.pdf-tools.trustss.jp/data/Receipt2.pdf", NULL);

サンプルコード

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

ご質問、お問い合わせ

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

PDF-Tools C++サンプル

PDF Toolsとは

PDF/Aとは