PDF Printer(PDF文書印刷) C++サンプル
「PDF Printer」ソフトは、PDF文書を印刷するためのコンポーネントです。
このコンポーネントは高いパフォーマンスと統合のし易さが特徴で、以下の3つのバージョンで提供しています。
表示しているPDF文書を印刷する場合は、PDFViewer(PDF表示)でも印刷できます。
このコンポーネントは高いパフォーマンスと統合のし易さが特徴で、以下の3つのバージョンで提供しています。
- APIバージョンではアプリケーションに印刷機能を追加でき、それを制御します。
- コマンドライン(バッチ処理)での大量印刷。
- バックグラウンドでの自動印刷を行うサービス。
表示しているPDF文書を印刷する場合は、PDFViewer(PDF表示)でも印刷できます。
無償評価版のダウンロードとインストール
ライブラリ(評価版API)は無償でダウンロード(試用)できますので、PDF Printer ダウンロード手順を参照してダウンロードください。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
サンプルの実行前に、bin/PdfPrintAPI.dllをサンプル実行イメージと同じフォルダーにコピーしてください。また、無償評価版と共にダウンロードしたライセンスキーをbin/LicenseManager.exeを使って登録してください。
ライセンスキーの登録方法は、こちらです。
ファイルをダウンロードしてから、インストールもしくは適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜ご利用ください。
bin | ライブラリやライセンスマネージャーなど |
doc | 使用説明書やjavadocなど |
include | C/C++用のヘッダー(.h)ファイル |
jar | PRNA.jar(Javaのラッパー) |
lib | C/C++用のlibファイル |
samples | 各種開発言語のサンプル |
C++ サンプル
PDF PrinterでPDF文書を印刷するサンプルです。
1っのPDF文書を1っのプリンターで印刷する
以下のサンプルでは、1っのPDF文書を1っのプリンターで印刷します。
複数のPDF文書を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文書のすべてのページを、指定したプリンターで印刷します。 サンプルの場合は、デフォルトのプリンターで印刷します。 引数には以下の値を指定します。
| ||||||||||||
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
ご質問、お問い合わせ
(記載の会社名および製品名は、各社の登録商標および商標です。)