====== Stampa fronte-retro (duplex) con stampanti PCL e PostScript ====== ===== Stampanti PCL ===== Utilizzando **GhostScript** è facile produrre job PCL che includono i codici di comando per attivare la stampa duplex. Questo comando ad esempio trasforma un file PDF in un job che è possibile inviare direttamente alla stampante, sfrutta il driver **pxlmono**: gs -sDEVICE=pxlmono -dDuplex -sPAPERSIZE=a4 -q -sOutputFile=- -dNOPAUSE -dBATCH prova.pdf > output Per vedere **quali driver** supporta la versione di GhostScript in uso: gs -h Ci sono altri driver GhostScript che producono job PCL, ad esempio **pcl3** e **lj5gray**. Il primo non accetta il parametro **-dDuplex**, il secondo lo accetta, ma il job risultante viene stampato senza fronte-retro (testato su Brother MFC-L5750DW e Xerox Phaser 3300MFP). **ATTENZIONE**: in genere **non funziona** incapsulare un job PCL dentro ad un job PJL (vedere più avanti come si fa con i job PostScrip per aggiungere l'opzione duplex), questo perché il job PCL prodotto dal GhostScript include al suo interno i comandi per resettare tutte le opzioni di alto livello della stampante. ===== Stampanti PostScript ===== Ci sono diversi driver GhostScript che producono job PostScript: **psmono** è disponibile con GhostScript 8.71, **ps2write** è invece la versione più recente disponibile in GhostScript 9.20. Entrembi i driver //psmono// e //ps2write// producono documenti PostScript 3.0, il primo di tipo **PS 3.0 Level 1**, mentre il secondo **PS 3.0 Level 2**. Purtroppo alcune stampanti (es. Brother MFC-L5750DW) non sono in grado di interpretare il Level 2. Per attivare la stampa duplex è possibile incapsulare il job PostScript in un job **PJL** (Printer Job Language), solitamente supportato dalle stampanti che supportano PostScript e PCL. I comandi PJL sono terminati con **** (0x0D 0x0A), ma il è facoltativo. Prima di inviare un comando PJL è buona norma inviare alla stampante l'**Universal Exit Language command**, cioè una sequenza preceduta dal carattere ESC (0x1B). L'UEL non prevede il a fine linea, per convenienza di solito ci si accoda un comando PJL vuoto. Ecco quindi uno script che aggiunge il duplex ad un job PostScript: #!/bin/bash ( echo -e '\e%-12345X@PJL' # Send the Universal Exit Language (UEL) command echo '@PJL JOB' # Begin of PJL job echo '@PJL SET DUPLEX=ON' # Set duplex printing echo '@PJL ENTER LANGUAGE=POSTSCRIPT' # PostScript document gs -sDEVICE=ps2write -sPAPERSIZE=a4 -q -sOutputFile=- -dNOPAUSE -dBATCH input_file.pdf echo -e '\e%-12345X@PJL' # UEL command echo '@PJL EOJ' # Endo of job echo -en '\e%-12345X' # UEL command ) > output_file.ps