domenica 5 ottobre 2014

Tesoro, mi si sono spostati gli AFP

Lascio qui questo post a monito mio e di quanti si cimenteranno: le stampe AFP si spostano. Avete la vostra bella stampa e dite: "Bene, ora proviamo a crearla come *AFPDS, non dovrebbe essere uguale?" Compilate il vostro bel PRTF
con
CRTPRTF FILE(LIB/PRTF) DEVTYPE(*AFPDS)
e stampate. Alcuni campi vengono spostati, altri no. Provate allora a farne un pdf. Corretto.

(reazione utente medio)

Non serve ribaltare i tavoli come il nostro amico RageGuy! La "colpa" di tutto questo è di come è stata pensata l'api Host Print Transform (info), che per mantanere una compatibilità con sistemi IPDS sposta tutta la grafica che ricade dentro i bordi non stampabili del foglio!
Tutto è spiegato bene in questo articolo del Support.

Prendiamo la nostra stampante così configurata:
CHGOUTQ OUTQ(QUEUE) TRANSFORM(*YES) MFRTYPMDL(*HP5)
In pratica, stiamo dicendo al sistema di utilizzare la funzione HPT su una stampante configurata come compatibile PCL5, una configurazione del genere fissa i margini non stampabili a 1/6 di pollice in alto e in basso e 1/4 di pollice a sinistra e destra.
Questi valori sono impostati nell' oggetto di personalizzazione di terminale QSYS/QWPHPLSR5 che corrisponde a *HP5, la trasformazione in PDF usa un'altra personalizzazione, che non ha quei margini lì, ecco spiegata la differenza di output!
Voi direte: "Ma la mia stampante (laser) può stampare al VIVO del foglio!"
E io rispondo: "LOL! Sì, e io scalo e montagne con un dito come Manolo!" Se proprio volete ridurre i margini, allora modificatevi un oggetto di personalizzazione terminale a partire da *HP5 (ad esempio).
NB: i margini sono piuttosto larghi, potete indovinare perchè? Per compatibilità con il maggior numero di stampanti.

(Compatibilità è la parola preferita di Big Blue - no?)

Anche personalizzando un terminale potreste incappare nello spostamento maledetto: che sia campo di testo o grafica, se ricade nell'area non stampabile viene "gentilmente" fatto accomodare da HPT dentro l'area stampabile.
Per ovviare a questo problema il Support propone tre vie, vediamole.

1. Spostate tutti i campi che rientrano nell'area non stampabile


Questa è la soluzione "arrangiati": riga meccanografica alla mano, i calcoli sono presto fatti, con 1/4 di margine non stampabile, se stampi a 15 CPI la prima colonna utile è la quinta.

Caratteri per Pollice
(CPI) Valore
Bordo Non Stampabile
in CPI
Prima Colonna
Stampabile
5
5 / 4 = 1.2
3
10
10 / 4 = 2.5
4
12
12 / 4 = 3
4
13.3
13.3 / 4 = 3.325
5
15
15 / 4 = 3.75
5
16.7 o 17.1
16.7 / 4 = 4.175
6
18
18 / 4 = 4.5
6
20
20 / 4 = 5
6

Certo, spostare i campi iniziali potrebbe voler dire ripensare l'intera stampa...

  2. Modificate il parametro FRONTMGN


E' la soluzione migliore, in pratica fissate i margini di *HP5 direttamente nella stampa, in questo modo spostate tutti i campi della stampa e non lasciate fare a HPT quello che vuole; potete inserire il parametro in fase di creazione o come sovrapposizione:
CRTPRTF FILE(LIB/PRTF) FRONTMGN(0.17 0.25) UOM(*INCH)

CHGPRTF FILE(LIB/PRTF) FRONTMGN(0.17 0.25) UOM(*INCH)

OVRPRTF FILE(PRTF) FRONTMGN(0.17 0.25) OVERSCOPE(*JOB) 
        UOM(*INCH)

Notate il parametro unità di misura (UOM) fissato sui pollici, se si usano i centimetri:
CRTPRTF FILE(LIB/PRTF) FRONTMGN(0.43 0.64) UOM(*CM)

CHGPRTF FILE(LIB/PRTF) FRONTMGN(0.43 0.64) UOM(*CM)

OVRPRTF FILE(PRTF) FRONTMGN(0.43 0.64) OVERSCOPE(*JOB) UOM(*CM)

3. Stampate in raster mode


Questa è la soluzione meh: potete modificare una personalizzazione di terminale attivando il raster mode, nella sezione:
:RASTERMODE
 SCS=NO
 AFP=NO.
modificate i campi
 SCS=YES
 AFP=YES.
Con questa configurazione dite a HPT di considerare tutto come grafica, quindi tradurre anche i campi di testo in bitmap (appunto, rasterizzare), cosa comporta questo?

- I campi nell'area non stampabile non vengono spostati ma vengono tagliati,
- la stampa è più pesante e la produzione della stessa è più lenta,
- dovete installare un paio di opzioni per la massima compatibilità con tutti i font (AFP Compatibility Fonts - IBM AFP Font Collection for IBM Operating System - Advanced Function Printing DBCS Fonts/400),
- se avete un tool che traduce da PCL a PDF (tipo GhostPDL), il testo risulterà non selezionabile,

insomma meh.

IBM mette a disposizione anche qualche personalizzazione di terminale aggiuntiva (scaricate il SAVF), alcune delle quali predisposte per il raster mode (tipo PCL5RASTER), alcuni tipi e modelli (MFRTYPMDLs) in raster mode sono invece già presenti nel sistema: *IBM4076, *HP310, *HP320, *HP500, *HP520 e *HP540.

In conclusione, create le vostre stampe con:
CRTPRTF FILE(LIB/PRTF) FRONTMGN(0.17 0.25) UOM(*INCH)
e siete a posto!


PS: per chi  non lo conoscesse, l' AFPDS è il formato grafico messo a disposizione da IBM, integrato nel sistema operativo.
Permette di fare tante belle robe tipo cambiare font, inserire barcode, imprimere loghi e grafiche alle stampe, il tutto utilizzando apposite keyword da mettere nel Printer File (ho detto che era integrato?).

http://afpcinc.org/
 (Esiste un consorzio che lo promuove.)

(ahahahah, questa l'ho trovata su Google Immagini e porta qui, non so perché)