Last Updated on 8 Maggio 2020 by Roberto De Pedrini
Questa è una raccolta di FAQ e di Howto sulla gestione delle stampe, la produzione dei PDF e altre cose inerenti stampe e IBM i: vuole essere una guida in continua evoluzione quindi invito anche voi che state leggendo ora a segnalare, tramite la funzione commenti, trucchi, perplessità ed esperienze a riguardo.
Index
iPrt-Faq-001: Posso creare un PDF da uno spool IBM i?
Sul mercato ci sono degli ottimi tools per la gestione delle stampe grafiche che, generalmente, permettono di generare PDF, HTML, XML, XLS ecc. e gestiscono anche il flusso per una vera e propria gestione documentale.
Ma anche con gli strumenti a disposizione del sistema operativo IBM i si possono fare delle belle cose, sia in modo manuale che in modo automatico da codice.
Se abbiamo già uno spool in coda possiamo aprire la gestione delle emissioni di stampa di ACS Access Client Solution (Azioni-Emissioni di stampa) e scegliere Scarica o Visualizza e Scarica. La stessa cosa possiamo farla anche con iNavigator.
Se invece vogliamo automatizzare il processo e generare PDF in qualche directory di IFS conviene lavorare un po’ sul codice, vediamo qualche esempio:
- Produzione di un PDF invece dello spool con OVRPRTF
- Prima di aprire il PrinterFile nel nostro programma è sufficiente fare un OVRPRTF, ad esempio OVRPRTF(QSYSPRT) DEVTYPE(*AFPDS) WSCT(*PDF) TOSTMF(‘/home/pdf/fatture/190001.PDF) OVRSCOPE(*CALLLVL), produrre quindi la stampa nel modo normale e al momento della chiusura del Printer File troveremo il PDF nella directory specificata!
- Produzione di un PDF invece dello spool con un overlay
- Se vogliamo aggiungere un Overlay, fincatura, al nostro PDF possiamo ancora usare OVRPRTF: OVRPRTF(QSYSPRT) DEVTYPE(*AFPDS) WSCT(*PDF) TOSTMF(‘/home/pdf/fatture/190001.PDF) FRONTOVL(MODFAT 0 0) OVRSCOPE(*CALLLVL)
- In questo caso abbiamo indicato l’overlay MODFAT con offset 0 orizzontale e 0 verticale
- Per la creazione dell’overlay MODFAT partendo da un PDF o da un modello Word o da quello che avete su PC seguire la procedura indicata più avanti in questa guida
- Da uno spool già esistente a PDF
- Nei due casi sopra riportati andiamo a produrre il PDF invece dello spool … ma se lo spool lo abbiamo già in coda e vogliamo trasformarlo in PDF?
- Usiamo CPYSPLF: CPYSPLF FILE(QPRINT) TOFILE(TOSTMF) JOB(000001/ROBERTO/QPADEV0001) SPLNBR (LAST) TOSTMF(‘/home/pdf/roberto/xx.pdf’) WSCST(*PDF) STMFOPT(*REPLACE)
- E’ importante individuare correttamente lo spool di stampa indicando il nome dello spool e i riferimenti al JOB
- Da uno spool già esistente a PDF con Overlay di fincatura
- Se, come nel caso precedente, abbiamo già lo spool e vogliamo anche aggiungere un overlay… dobbiamo fare qualche passo in più perchè CPYSPLF non ci permette di farlo direttamente … ma con un po’ di astuzia:
- CRTPF QTEMP/MYSPOOL RCDLEN(199) MAXMBRS(*NOMAX) SIZE(*NOMAX) LVLCHK(*NO)
- CPYSPLF FILE(ORDINEWEB) TOFILE(QTEMP/MYSPOOL) JOB(037971/ROBERTO/QPADEV0001)SPLNBR(000013) CTLCHAR(*FCFC)
- OVRPRTF FILE(QSYSPRT) DEVTYPE(*AFPDS) CTLCHAR(*FCFC) CHLVAL(*NORMAL) FRONTOVL(ORDITADE) TOSTMF(‘/pdf/2019/ordini/1900001.pdf’) WSCST(*PDF)
- CPYF FROMFILE(QTEMP/MYSPOOL) TOFILE(QSYSPRT)
- DLTOVR FILE(QSYSPRT
- Come si vede in questa procedura creo un con un solo campo da 199 char (198 di stampa più uno di per i caratteri di controllo come salto pagina, salto riga), copio lo spool dentro il file DB, eseguo un OVRPRTF con il modulo di overlay desiderato e quindi mando in stampa il file di QTEMP …non è fantastico?
Ecco alcuni link per approfondire l’argomento:
- Forum IBM i: Convert spool file with overlay to PDF
- IBM Support: Using CPYSPLF to Re-Create a Spooled File or Create a PC File
- RPGPGM.COM: Creating PDF files from spool files
iPrt-Faq-002: Come si creano OVERLAY e PAGE-SEGMENT (AFP Resource)?
La procedura è spiegata in dettaglio a questo link dell’IBM Support: Creating AFP Resources Using the IBM AFP Printer Drivers
In pratica, una volta installati gli appositi driver AFP scaricati dal sito RICOH e configurato opportunamente il driver per ottenere Overlay o Page Segment, è sufficiente indirizzare la nostra stampa del PDF, Word o quello che abbiamo per la fincatura, creare un file .prn sul pc, trasferirlo su IBM i via FTP e generare l’oggetto overlay con CRTOVL sul nostro sistema.
Non spiego in dettaglio il processo perchè la guida IBM Support è chiara e completa.
iPrt-Faq-003: Posso stampare un Cariage-return e Line-Feed in un barcode Code128?
Il barcode CODE128 permette creare dei barcode anche con “embeddato” un CR+LF per … ma per poter “stampare” questi caratteri speciali bisogna prestare attenzione alla compilazione del printer file PRTF indicando l’opzione RPLUNPRT(*NO) nel CRTPRTF:
--------------------------------- Pgmdcl-s cr char(1) inz(X'0D');
dcl-s lf char(1) inz(X'25');
// or Dcl-S CRLF char(2) Inz(x'0d25'); ... bcode=%trim(myvar)+cr+lf+%trim(myvar2); ------------------------------ Print file: A BCODE 30A 1 A BARCODE(CODE128 2 *NOHRI (*WIDTH .- A 007))
iPrt-FAQ-004: Vedere gli spool file con SQL?
Sotto il nome di DB2 for i Services troviamo un sacco di funzioni e viste che ci permettono di monitorare e controllare oggetti di sistema … come i file di stampa o le code di stampa:
- QSYS2.OUTPUT_QUEUE_INFO: Vista sulle code di output:
SELECT * FROM QSYS2.OUTPUT_QUEUE_INFO
- QSYS2.OUTPUT_QUEUE_ENTRIES: UDTF sugli spool
- QSYS2.OUTPUT_QUEUE_ENTRIES: Vista sugli spool
- QSYS2.OUTPUT_QUEUE_ENTRIES_BASIC: Vista semplificata sugli spool
- QSYS2.SPOOLED_FILE_DATA: UDTF per il centenuto di uno spool file specifico
Esempio preso da RPGPGM.COM SELECT SIZE,SPOOLNAME,OUTQ,OUTQLIB,CREATED,USER_NAME,STATUS, PAGES,JOB_NAME,FILENUM FROM QSYS2/OUTPUT_QUEUE_ENTRIES ORDER BY SIZE DESC
Approfondimenti su :
- RPGPGM.COM: Ouput queue entries information via SQL
- IBM.COM : Spool Services
iPrt-FAQ-005: E’ possibile monitorare gli spool di una coda OUTQ?
Delle volte può essere utile monitorare una specifica coda in modo automatico per eseguire apposite azioni ogni volta che uno spool file viene aggiunto alla coda stessa… c’è un vecchio post su IBM System Mag “Automating Spool File Processing” che spiega tutto il processo creando una apposita DTAQ e monitorado quindi la stessa DTAQ
iPrt-FAQ-006: Visualizzare output spool ZPL Zebra
Per chi utilizza delle stampanti Zebra con linguaggio ZPL può essere utile questa anteprima della sito Labelary.com che prende una “etichetta” ZPL e la presenta a video:
http://labelary.com/viewer.html
iPrt-FAQ-007: Inviare caratteri ASCII ad una stampante etichette EPSON-TM-m30
Per inviare dei comandi ASCII (Hex Values) ad una stampante EPSON-TM bisogna ricorrere alla keyword TRNSPY
Ad esempio … il taglio carta a fine scontrino su una stampante EPSON-TM-m30
A R DK3113E2
A TEXT('CUT RECEIPT')
A 1X'1B691B40'
A TRNSPY
---
Roberto De Pedrini
Faq400.com
Buongiorno, ho un problema con un Overlay generato con all’interno l’immagine di un logo.
Il problema è che il documento viene generato e stampato con caratteri non validi. solo i numeri presenti nel logo sono corretti. HO provato a modificare il carattere in tutti i modi possibili
ma il risultato non cambia. Il logo che è un’immagine viene stampata correttamente ma indirizzo, località e il resto dei dati sono incomprensibili . Eppure lo stesso documento generato viene poi salvato in una ifs come PDF e li’ vedo tutto in modo corretto! Avete suggerimenti? La prima generazione del documento avviene da una Pistola di RadioFrequenza che lancia il programma di chiusura e stampa ddt. Grazie mille per l’attenzione