QA@IT

PDFBoxでコードによって出力する用紙サイズを変更する方法

4062 PV

PDFBoxでPDFファイルをネットワークプリンタに出力する機能を作成しています。
PDFファイルはA3またはA4サイズで作成されており、作成されたPDFファイルのサイズのまま出力したいのですが、
以下のコードではA4でしか出力されません。
コード上で用紙サイズをA3に変更して試してみましたが、A4で出力されてしまいます。
コードにて出力用紙サイズを変更する方法についてアドバイスを頂けましたら幸いです。
よろしくお願いします。

// 引数1:プリンタ名(String)
// 引数2:PDFファイルパス(InputStream)
try{
    // プリンタ名をセット
    AttributeSet attributeset = new HashAttributeSet();
    attributeSet.add(new PrinterName("プリンタ名", null));
    // 以下の設定は試したが反映されない
    // attributeSet.add(MediaSizeName.ISO_A3);
    // プリンタ検索
    PrintService[] services = PrintServiceLookup.lookupPrintServices(null, attributeSet);
    if (services.length > 0){
       PDDocument document = PDDocument.load("PDFファイルパス"); 
       PrinterJob printJob = PrinterJob.getPrinterJob();
       printJob.setPrintService(services[0]);
       // 印刷実行
       document.silentPrint(printJob);
       document.close();
    }
} catch (Exception e) {
    e.printStackTrace();
}

※補足
コントロールパネルよりプリンタの印刷設定で、デフォルトをA3に変更するとA3で出力されますが、
他の用途でも使用されるプリンタのため、コードにて出力用紙サイズを変更したいです。
また、印刷ダイアログを表示させずにプリンタへ直接印刷したいため、silentPrintを使用しています。

ウォッチ

この質問への回答やコメントをメールでお知らせします。