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

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

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

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

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

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

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

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

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

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

public class pprn_ss {

    public static void main(String[] args) {
        try{
            //インスタンス生成
            Printer doc=new Printer();

            //印刷
            doc.printFile("some.pdf", null, null, 1, -1);

            //終了
            doc.destroyObject();

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

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

 このサンプルでは、1っのPDFを1っのプリンターでページを指定して印刷します。その際に印刷ジョブの開始と終了をコントロールします。
import com.pdftools.printer.Printer;

public class prn_ss2 {

    public static void main(String[] args) {
        try{

            //インスタンス生成
            Printer doc = new Printer();

                //プリンター
                doc.openPrinter(null);

                    //印刷ジョブ
                    doc.beginDocument("My Print Job");

                        //PDF文書
                        doc.open("some.pdf", null);

                            //印刷するページ
                            doc.printPage(1);

                        //終了
                        doc.close();
                    doc.endDocument();
                doc.closePrinter();
            doc.destroyObject();

        }catch(Throwable e){
            e.printStackTrace();
        }
    }
}
new Printer( )インスタンス生成
openPrinter( ) プリンターとの接続を開始します。引数には、プリンター名を指定します。nullを指定すると、デフォルトのプリンターとなります。
beginDocument( ) 印刷ジョブを開始します。引数に指定した名前のジョブになります。
open( ) 印刷するPDF文書を開きます。 (インターネット上のPDFを開く場合
引数には、以下を指定します。
第一引数印刷するPDFファイル名
第二引数PDFが暗号化されている場合のパスワード
暗号化されていない場合は、nullを指定
printPage( ) 印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=doc.getPageCount();i++){
    doc.printPage(i);
}
close( ) PDF文書を閉じます。
endDocument( ) 印刷ジョブを終了します。
closePrinter( ) プリンターとの接続を終了します。
destroyObject( ) インスタンスを開放します。

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

このサンプルでは、複数のPDF文書のページを指定して1っのプリンターで印刷します。
import com.pdftools.printer.Printer;

public class prn_ms {

    public static void main(String[] args) {
        try{
            //インスタンス生成
            Printer doc = new Printer();

                //プリンター
                doc.openPrinter(null);

                    //印刷ジョブ
                    doc.beginDocument("My Print Job");

                        //1っめのPDF文書
                        doc.open("first.pdf", null);
                            doc.printPage(1);    //1ページ目を印刷
                        doc.close();

                        //2っめのPDF文書
                        doc.open("second.pdf", null);
                            doc.printPage(3);    //3ページ目を印刷
                        doc.close();

                    //印刷ジョブを終了
                    doc.endDocument();

                //プリンター終了
                doc.closePrinter();

            //インスタンス開放
            doc.destroyObject();
        }catch(Throwable e){
            e.printStackTrace();
        }
    }
}
new Printer( ) インスタンス生成
openPrinter( ) プリンターとの接続を開始します。引数には、プリンター名を指定します。nullを指定すると、デフォルトのプリンターとなります。
beginDocument( ) 印刷ジョブを開始します。引数に指定した名前のジョブになります。
open( ) 印刷するPDF文書を開きます。 (インターネット上のPDFを開く場合)
printPage( ) 印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=doc.getPageCount();i++){
    doc.printPage(i);
}
close( ) PDF文書を閉じます。
「PDF文書を開く => 印刷するページを指定 => PDFを閉じる」の処理を、印刷するすべてのPDF文書に対して繰り返し実行します。
endDocument( ) 印刷ジョブを終了します。
closePrinter( ) プリンターとの接続を終了します。
destroyObject( ) インスタンスを開放します。

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

このサンプルでは、1っのPDF文書のページを指定して複数のプリンター(複数の印刷ジョブ)で印刷します。
import com.pdftools.printer.Printer;

public class print_sm {
    public static void main(String[] args) {
        try{
            //インスタンス生成
            Printer doc = new Printer();

                //PDF文書を開く
                doc.open("second.pdf", null);

                    //1っめのプリンターを開き、印刷ジョブを開始
                    doc.openPrinter("Microsoft XPS Document Writer");
                        doc.beginDocument("My First Job");
                            doc.printPage(1);
                        doc.endDocument();
                    doc.closePrinter();

                    //2っめのプリンターを開き、印刷ジョブを開始
                    doc.openPrinter("Microsoft Office Document Image Writer");
                        doc.beginDocument("My Second Job");
                            doc.printPage(3);
                        doc.endDocument();
                    doc.closePrinter();

                //PDF文書を閉じる
                doc.close();

            //インスタンス開放
            doc.destroyObject();
        }catch(Throwable e){
            e.printStackTrace();
        }
    }
}
new Printer( ) インスタンス生成
open( ) 印刷するPDF文書を開きます。 (インターネット上のPDFを開く場合)
openPrinter( ) プリンターとの接続を開始します。引数には、プリンター名を指定します。nullを指定すると、デフォルトのプリンターとなります。
beginDocument( ) 印刷ジョブを開始します。引数に指定した名前のジョブになります。
printPage( ) 印刷するページを指定します。
すべてのページを印刷する場合は、以下のようにします。
for(int i=1; i<=doc.getPageCount(); i++){
    doc.printPage(i);
}
endDocument( ) 印刷ジョブを終了します。
closePrinter( ) プリンターとの接続を終了します。
「プリンターを開く => 印刷ジョブを開始 => 印刷するページを指定 => 印刷ジョブを終了 => プリンターを閉じる」の処理を、印刷させたいプリンターすべてに繰り返します。
close( ) PDF文書を閉じます。
destroyObject( ) インスタンスを開放します。

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

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

ご質問、お問い合わせ

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

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