2016-09-12 41 views
0

DHL出荷をリクエストし、返送された出荷ラベルを自動的に印刷するために、DHL出荷(XML)APIを使用しています。PrintPDFコマンドラインツールを使用したPDFBox印刷

これはどのようにシステムの動作である:DHL応答XMLが含まれているBase64でエンコードされたPDFファイルが含まれてい

ページ1.配送ラベル(パッケージの上に置かれたステッカーにプリント)

ページ2.アーカイブ文書(別々に印刷され、出荷宅配便に付与する必要があります)

2つのPDFを分離するために、私は最初PDFBoxコマンドラインを使用してPDFSplitを実行し、BASE64のデコードツール、最後に、それぞれのプリンタで、それぞれの文書を印刷dは:

$filename = "dhlexpress_labels/".date("Ymd_his")."_{$_REQUEST['id']}.pdf"; 
//Get the pdf response from DHL 
$data = file_get_contents("path/dhl_request_shipment.php?".http_build_query($_REQUEST)); 
//Put decoded data in the file 
file_put_contents($filename,base64_decode($data)); 
//Split the file into two 
$exec = 'java pdfbox-app-1.8.3.jar PDFSplit -split 1 ' . $filename; 
exec($exec); 
//Print each file 
$exec = 'java pdfbox-app-1.8.3.jar PrintPDF -silentPrint -printerName DHLPrinter ' . str_replace('.pdf',-0.'.pdf',$filename); 
exec($exec); 
$exec = 'java pdfbox-app-1.8.3.jar PrintPDF -silentPrint -printerName PaperPrinter ' . str_replace('.pdf',-1.'.pdf',$filename); 
exec($exec); 

問題はこれです:DHLからの応答はDHLPrinterに完全に印刷さ8「×4」ステッカーの大きさを持っているPDFファイルが含まれていますが、 PaperPrinterにラベルの左上5mmは印刷されません。私は余白が印刷可能領域外に移動するPDFにつながる、何とかPDFによって上書きされるため、この問題が発生したと思わ

Margins not printed

: 添付画像を参照してください。

これを解決する方法を知っている人はいますか?私は印刷を完全に自動化し、そうすることを全然止めません。私は、誰かがpdfマージンを編集する方法について創造的なアイデアを持っているかどうかは不思議です。

+0

2.0.2バージョンをお試しください。 2.0.3のスナップショットhttps://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/2.0.3-SNAPSHOT/新しいオプションがあります。 –

+0

動作しない場合は、デモステッカーをアップロードしてください。 –

+0

ありがとう@TilmanHausherr 2.0.3スナップショットを使用しました。あなたが話していたものが「オリエンテーション」オプションでしたか? –

答えて

0

解決策を見つけました。 OverlayPDFを使用して、私は空白のPDFへのアーカイブ文書をオーバーレイし、それがこのような途中で現れる:Centered Label

は、私は次の2行のコードを追加し、それが魅力のように働いた:

$exec = java -jar pdfbox-app-2.0.3-20160908.164926-191.jar OverlayPDF blank.pdf '. str_replace('.pdf','-1'.'.pdf',$filename) .' '. str_replace('.pdf','-1'.'.pdf',$filename); 
exec($exec); 

I PrintPDFの 'orientation'属性を使用してみましたが、実際にはそれを小さくしました: Orientation: vertical オリエンテーション:水平方向が完全に台無しです。写真は以下のコメントに含まれています。

+0

オリエンテーション: '水平' http://i65.tinypic.com/1iig6g.jpg –

+0

PDFBoxにはラベル印刷の問題があります。 https://issues.apache.org/jira/browse/PDFBOX-3117。それは回避策についても言及していますが、javaを使用する必要があります。 –

関連する問題