我正在使用DHL送貨(XML)API來請求DHL貨件並自動打印已回覆的送貨標籤。使用PrintPDF命令行工具執行PDFBox打印
這是該系統的工作原理:
的DHL XML響應包含一個包含base64編碼的PDF:
頁1.運輸標籤(在其上放置在包裝上的不乾膠標籤打印)
頁面2.存檔文件(需要單獨印刷並提供給航運快遞)
爲了兩個PDF文件分開,我首先解碼的base64,然後使用PDFBox的命令行執行PDFSplit工具,一個ð最後打印每個相應文件在它們各自的打印機:
$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響應包含具有貼紙的8「×4」的尺寸,打印完美的DHLPrinter
一個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快照。你正在談論的那個'方向'選項是什麼? –