トラスト・ソフトウェア・システム
トラスト・ソフトウェア・システム

PDF Printer(PDF文書印刷) C++サンプル

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

このコンポーネントは高いパフォーマンスと統合のし易さが特徴で、以下の3つのバージョンで提供しています。
  • APIバージョンではアプリケーションに印刷機能を追加でき、それを制御します。
  • コマンドライン(バッチ処理)での大量印刷。
  • バックグラウンドでの自動印刷を行うサービス。
印刷するPDF文書は、インターネット上の文書をHTTPで指定できます。

表示しているPDF文書を印刷する場合は、PDFViewer(PDF表示)でも印刷できます。

機能概要はこちらです。
無償評価版(リンク先は英語)はこちらです。 ダウンロード手順
他にC#VB6.0Java のサンプルを公開しています。
価格見積り

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

 ライブラリ(評価版API)は無償でダウンロード(試用)できますので、PDF Printer ダウンロード手順を参照してダウンロードください。
 ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
binライブラリやライセンスマネージャーなど
doc使用説明書やjavadocなど
includeC/C++用のヘッダー(.h)ファイル
jarPRNA.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);
}
PDFPrnClose PDF文書を閉じます。
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);
}
PDFPrnClose PDF文書を閉じます。
「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 プリンターとの接続を終了します。
「プリンターを開く => 印刷ジョブを開始 => 印刷するページを指定 => 印刷ジョブを終了 => プリンターを閉じる」の処理を、印刷させたいプリンターすべてに繰り返します。
PDFPrnClose PDF文書を閉じます。
PDFPrnDestroyObject インスタンスを開放します。

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

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

サンプルコード

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

ご質問、お問い合わせ

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

(記載の会社名および製品名は、各社の登録商標および商標です。)
PDF製品 C++サンプル
PDF Security
PDF Validator
PDF to PDF/A Converter
PDF to Image Converter
PDF Imager-LP
Image to PDF Converter
PDF Printer
PDF Prep Tool Suite
PDF Optimizer
PDF Command Line Suite
PDF Extract