User Tools

Site Tools


doc:appunti:prog:duplex

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 <CR><LF> (0x0D 0x0A), ma il <CR> è 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 <CR><LF> 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
doc/appunti/prog/duplex.txt · Last modified: 2017/06/14 11:50 by niccolo