Sto cercando di sviluppare un metodo per controllare l'output PDF dei dati di un report. Vorrei poter controllare la formattazione dell'intestazione e del piè di pagina e avere la possibilità di inserire un logo. Avete qualche suggerimento su come procedere?
Ah, ho appena affrontato tutta questa procedura per creare report PDF multipagina in JMP 19, quindi lascia che ti risparmi il mal di testa che ho avuto io.
Sinceramente: si ha un certo controllo, ma non quanto si spererebbe, ed è meglio saperlo in anticipo piuttosto che scoprirlo a proprie spese come è successo a me.
For headers and footers, you've got Set Print Headers(left, center, right) and Set Print Footers(...) to match — three little text slots each. They take plain text plus some handy tokens, so "Page &pn; of &pc;" dropped in the right footer slot gives you "Page 1 of 5" and so on. Works great. But here's what got me: they're solo testo, and you can't set the font size in the script at all — it secretly follows the "Small" font role tucked away in File ▸ Preferences ▸ Fonts. Took me forever to realize that's why my footer wouldn't shrink. And if you try to stack two lines in one slot, watch out — the \!N newline thing the docs mention straight-up didn't work on my JMP 19 build and silently nuked the entire header. No error, just gone.
Page setup itself is actually solid, no complaints there. Set Page Setup(margins(...), scale(n), portrait(0), paper size("Letter")) handles orientation, margins, scaling, all fine. Just remember to tack on Save PDF(path, Show Page Setup(0)) — that little Show Page Setup(0) shuts off the print dialog popup, which you'll really want once you're cranking out a stack of these unattended.
Il logo è il punto critico. Poiché le intestazioni e i piè di pagina contengono solo testo, il logo non può essere inserito lì, quindi non esiste un modo predefinito per visualizzarlo su ogni pagina. Una soluzione, invece, è inserirlo nel corpo del report come riquadro immagine, e si può incorporarlo direttamente come base64, evitando così di dover gestire un file immagine separato.
<SPAN>Picture Box( New Image( Char To Blob( logoB64, "base64" ), "png" ) )</SPAN>
Park that at the top of your outer V List Box and boom, you've got a letterhead — but page 1 only, 'cause the body just renders wherever it lands.
Se avete davvero bisogno di quel logo su ogni singola pagina, sarò sincero, JMP 19 da solo non lo farà. Alla fine ho optato per una soluzione in due fasi: ho lasciato che JMP generasse il PDF, poi ho eseguito un piccolo script per stampare il logo su ogni pagina. Python con pypdf o reportlab lo fa in poche righe su tutta la cartella. Non è una soluzione elegante, ma è solidissima e, una volta implementata, ci si dimentica persino della sua presenza.
In sintesi: JMP 19 è ottimo per la gestione dei dati e offre intestazioni/piè di pagina e impaginazione di testo di buona qualità, oltre a un logo a pagina 1, ma non permette di inserire immagini per pagina e non offre alcun controllo sui caratteri tramite script. Se avere un logo su ogni pagina è un requisito imprescindibile, è meglio lasciare che JMP generi il PDF e applicarlo successivamente, piuttosto che scervellarsi cercando di forzare tutto all'interno di JMP come ho fatto io.
Grazie per aver condiviso la tua esperienza.