Ich versuche, eine Möglichkeit zu entwickeln, die PDF-Ausgabe von Berichtsdaten zu steuern. Ich möchte die Formatierung von Kopf- und Fußzeile anpassen und ein Logo einbetten können. Hat jemand Ideen, wie man das umsetzen könnte?
Ach, ich habe das Ganze gerade erst durchgemacht, als ich mehrseitige PDF-Berichte in JMP 19 erstellt habe, also erspare ich Ihnen die Kopfschmerzen, die ich hatte.
Ganz ehrlich: Man hat zwar etwas Kontrolle, aber nicht so viel, wie man sich erhoffen würde, und es ist besser, das vorher zu wissen, als es wie ich auf die harte Tour lernen zu müssen.
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 Nur Text, 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.
Das Logo ist der Knackpunkt. Da Kopf- und Fußzeilen nur Text enthalten, kann das Logo dort nicht eingefügt werden – es gibt also keine integrierte Möglichkeit, es auf jeder Seite anzuzeigen. Eine funktionierende Lösung ist, es als Bildfeld in den Hauptteil des Berichts einzufügen. Dort kann es direkt als Base64-kodiert eingebunden werden, sodass keine separate Bilddatei benötigt wird.
<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.
Wenn Sie das Logo wirklich auf jeder einzelnen Seite benötigen, muss ich Ihnen ehrlich sagen, dass JMP 19 das nicht von allein schafft. Ich habe mich schließlich für zwei Schritte entschieden: JMP erstellt das PDF, und anschließend habe ich ein kleines Skript ausgeführt, um das Logo auf jede Seite einzufügen – mit Python und pypdf oder reportlab ist das in wenigen Zeilen Code für den gesamten Ordner erledigt. Nicht elegant, aber absolut zuverlässig, und sobald es eingerichtet ist, merkt man es gar nicht mehr.
Zusammengefasst: JMP 19 eignet sich hervorragend für die Datenverarbeitung und bietet ansprechende Kopf- und Fußzeilen sowie Seitenlayout, inklusive Logo auf Seite 1 – allerdings keine Bilder pro Seite und keine Möglichkeit, die Schriftart über das Skript zu steuern. Wenn ein Logo auf jeder Seite für Sie ein absolutes Muss ist, lassen Sie JMP die PDF-Datei einfach erstellen und versehen Sie sie anschließend mit Ihrem Logo, anstatt sich wie ich den Kopf darüber zu zerbrechen, alles in JMP selbst zu bearbeiten.
Danke, dass Sie Ihre Erfahrung geteilt haben.