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によって上書きされるため、この問題が発生したと思わ
: 添付画像を参照してください。
これを解決する方法を知っている人はいますか?私は印刷を完全に自動化し、そうすることを全然止めません。私は、誰かがpdfマージンを編集する方法について創造的なアイデアを持っているかどうかは不思議です。
2.0.2バージョンをお試しください。 2.0.3のスナップショットhttps://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/2.0.3-SNAPSHOT/新しいオプションがあります。 –
動作しない場合は、デモステッカーをアップロードしてください。 –
ありがとう@TilmanHausherr 2.0.3スナップショットを使用しました。あなたが話していたものが「オリエンテーション」オプションでしたか? –