J'utilise l'API DHL Shipping (XML) pour demander des envois DHL et imprimer automatiquement l'étiquette d'expédition répondue.PDFBox imprimer avec l'outil de ligne de commande PrintPDF
Voici comment le système fonctionne:
Le XML de réponse DHL contient un fichier PDF contenant base64-:
page 1. L'étiquette d'expédition (Impression sur un autocollant qui est mis sur l'emballage)
page 2. le document d'archives (doit être imprimé séparément et remis au courrier d'expédition)
afin de séparer les deux pdfs, je suis décoder le base64, puis exécutez une PDFSplit en utilisant la commande en ligne PDFBox outils, un d enfin imprimer chaque document respectif à leur imprimante respective:
$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);
Le problème est le suivant: La réponse de DHL contient un pdf qui a les dimensions d'un autocollant 8 « x4 », qui imprime parfaitement sur le DHLPrinter
, mais sur le PaperPrinter
il n'imprime pas le 5mm gauche et supérieur de l'étiquette. Voir ci-joint photo:
Je pense que cela se produit parce que les marges sont remplacées par le pdf en quelque sorte, ce qui conduit à l'extérieur pdf déplacer la zone d'impression.
Est-ce que quelqu'un sait d'un moyen de résoudre ce problème? Je veux que l'impression soit complètement automatisée et ne s'arrêtera pas pour le faire. Je me demande simplement si quelqu'un a des idées créatives sur la façon d'éditer les marges pdf.
Veuillez essayer la version 2.0.2. Et un instantané 2.0.3 https://repository.apache.org/content/groups/snapshots/org/apache/pdfbox/pdfbox-app/2.0.3-SNAPSHOT/ il y a une nouvelle option qui pourrait aider. –
Si cela ne fonctionne pas, veuillez télécharger un autocollant de démonstration. –
Merci @TilmanHausherr J'ai utilisé l'instantané 2.0.3. L'option 'orientation' était-elle celle dont vous parliez? –