Estoy intentando desarrollar una forma de controlar la generación de PDF de los datos de un informe. Me gustaría poder controlar el formato del encabezado y el pie de página, así como insertar un logotipo. ¿Alguna sugerencia sobre cómo abordar esto?
Ah, acabo de pasar por todo este proceso de creación de informes PDF de varias páginas en JMP 19, así que déjame ahorrarte el dolor de cabeza que yo pasé.
Directamente: consigues cierto control, pero no tanto como esperarías, y es mejor saberlo de antemano que descubrirlo por las malas, como me pasó a mí.
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 texto, 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.
El problema surge con el logotipo. Dado que los encabezados y pies de página solo contienen texto, el logotipo no puede aparecer allí, por lo que no existe una forma integrada de incluirlo en todas las páginas. Lo que sí funciona es insertarlo en el cuerpo del informe como un cuadro de imagen, y se puede incrustar directamente como base64 para no tener que cargar con un archivo de imagen aparte.
<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.
Si realmente necesitas ese logo en cada página, te seré sincero: JMP 19 no lo hace automáticamente. Lo que hice fue un proceso de dos pasos: primero, dejé que JMP generara el PDF y luego ejecuté un pequeño script para estampar el logo en cada página. Con Python, usando pypdf o reportlab, lo hago en unas pocas líneas en toda la carpeta. No es muy estético, pero es muy fiable, y una vez configurado, te olvidas de que está ahí.
En resumen: JMP 19 es excelente para la gestión de datos y ofrece encabezados y pies de página decentes, además de una configuración de página adecuada y un logotipo en la primera página. Sin embargo, no permite imágenes por página ni control de fuentes desde el script. Si para ti es imprescindible tener un logotipo en cada página, lo mejor es dejar que JMP genere el PDF y añadirle el logotipo después, en lugar de complicarte la vida intentando integrarlo todo en JMP como hice yo.
Gracias por compartir tu experiencia.