Last Updated on 24 Settembre 2019 by Roberto De Pedrini
Anche se non molto conosciuta questa funzione del sistema operativo può risolvere grandi problemi. Infatti stampare spoolfiles con caratteristiche avanzate (AFPDS) è sempre stato un po’ problematico. Oltretutto per poterlo fare è necessario installare sulla singola stampante la scheda IPDS che oltre ad essere costosa non consente di utilizzare liberamente tutte le keyword delle DDS dei printer files.
Unico requisito della modalità che propongo è che la stampante supporti il meccanismo di stampa pdf in stream. Il processo di stampa in questo caso si articola nel seguente modo:
- viene generato lo spool da un programma
- esso viene rilasciato su una stampante virtuale
- quest’ultima lo converte in pdf al volo utilizzando il prtf di sistema QSYSPRT
- contestualmente lo spool qsysprt in formato *USERASCII viene girato su una seconda coda di stampa
- essa provvede a girarlo alla stampante fisica
Di seguito i passi necessari per realizzare la configurazione
Prima di tutto occorre creare la device di stampa che punta alla stampante fisica
CRTDEVPRT DEVD(PRTFISICA) DEVCLS(*LAN) TYPE(3812) MODEL(1) LANATTACH(*IP) PORT(9100) //da inserire in base a marca/modello stampante fisica FONT(11 *NONE) FORMFEED(*AUTOCUT) INACTTMR(*SEC15) MFRTYPMDL(*HP4) //da inserire in base a marca/modello stampante fisica PPRSRC1(*A4) PPRSRC2(*A4) RMTLOCNAME('192.168.10.1') //indirizzo ip stampante SYSDRVPGM(*HPPJLDRV) //da inserire in base a marca/modello stampante fisica TEXT('Stampante HP ufficio logistica')
Dopodichè di passa a generare un oggetto di tipo *PSFCFG che si occuperà della trasformazione da spool a pdf
CRTPSFCFG PSFCFG(QGPL/PRTPDF) USRRSCLIBL(JOBLIBL) RLSTMR(SEC15) PRTRSPTMR(NOMAX) PDFGEN(SPLF) PDFDEVTYPE(IP40300) PDFPPRDWR1(A4) PDFPPRDWR2(A4) PDFSENDER(SPLFOWN) PDFOUTQ(QUSRSYS/PRTFISICA) TEXT('PSFCFG per PRTFISICA')
Ed infine si crea la device che innescherà la trasformazione utilizzando l’oggetto *PSFCFG e invierà la stampa alla stampante fisica
CRTDEVPRT DEVD(PRTPDF) PORT(12501) //scegliere una porta libera sul Vostro "i" con comando NETSTAT OPTION(*CNN) FONT(011 *NONE) FORMFEED(*AUTOCUT) RMTLOCNAME('127.0.0.1') USRDFNOBJ(QGPL/PRTPDF *PSFCFG) TEXT('Stampante virtuale pdf')
A questo punto non resta che rilasciare lo spool sulla stampante PRTPDF e verificare che lo spool venga stampato correttamente su carta.
NB: occorre fare attenzione al fatto che se il QSYSPRT ha il parametro HOLD impostato a *YES il rilascio sulla seconda coda di output dovrà avvenire manualmente: il sistema attenderà il rilascio da parte dell’utente per inviare lo stream alla stampante fisica.