PDF/A implementieren
JasperServer unterstützt bisher nur PDF/A-1a und PDF/A-1b. Im BrokerStar wird PDF/A-1a verwendet.
Wikipedia: Die Norm spezifiziert zwei Konformitätsebenen:
- PDF/A-1b – Level B (Basic) conformance: eindeutige visuelle Reproduzierbarkeit
- PDF/A-1a – Level A (Accessible) conformance: sowohl eindeutige visuelle Reproduzierbarkeit als auch Abbildbarkeit von Text nach Unicode und inhaltliche Strukturierung des Dokuments, so dass es im Sinne der Barrierefreiheit von einem Screenreader vorgelesen werden kann.
- PDF/A-1 basiert auf PDF 1.4.
Damit das PDF/A erstellt wird, müssen folgende Bedingungen erfüllt sein.
- ICC-Profil muss auf dem Server und auf dem Client abgelegt werden
- Property isTagged setzen
- Property conformance setzen
- Property ICC Profile Path setzen
- Schriftarten müssen über Font-Extension eingebunden werden (+ Embed Font in pdf)
- Default Style der eine der Schriftarten aus Font-Extension nutzt
- Transparente Bilder müssen entfernt werden
ICC-Profil
Im BrokerStar verwenden wir ein Standardprofil von Adobe: AdobeRGB1998.icc.
- Lokal speichern unter C:\Users\{Username}\JaspersoftWorkspace\MyReports\Public\Sources\PDFA_ICC\AdobeRGB1998.icc
- auf dem Server unter /opt/tomcat/webapps/ROOT/AdobeRGB1998.icc
Parameter
Damit der Report Lokal und auf dem Server funktioniert, wird der Pfad abhängig von der USER_ID übergeben. Hierzu muss im Report der Parameter erfasst und "Default Value Expression" = 0 gesetzt werden.
Properties
Diese müssen im JasperSoft-Studio in jedem Report gesetzt werden.
- auf der linken Seite den Report anklicken
- auf der rechten Seite in den Tab "Advanced" wechseln, "Misc" aufklicken und in der Zeile "Edit Properties" in der Spalte "Value" auf das Symbol mit den 3 Punkten klicken
- folgende 3 Properties werden benötigt und können hier hinzugefügt werden
WICHTIG: JasperSoft-Studio arbeitet hier nicht verlässlich
nach dem Speichern unbedingt überprüfen, ob die korrekten "Value" angezeigt werden und ggfs. nochmal editieren, den "Value" neu einfügen und speichernnet.sf.jasperreports.export.pdf.tagged = true
net.sf.jasperreports.export.pdfa.conformance = pdfa1a
net.sf.jasperreports.export.pdfa.icc.profile.path = $P{USER_ID} == 0 ? "/Public/Sources/PDFA_ICC/AdobeRGB1998.icc" : "http://localhost/AdobeRGB1998.icc"
Schriftart
Als Standardschrift für alle Reports wird zukünftig /wiki/spaces/BROK/pages/690421 genutzt.
How to import Font in Jaspersoft Studio
- Download the font from the table above.
- Right click MyReports (Top folder in Project Explorer view)
- Select Properties
- Select Java Build Path
- Click Add External JARs and select the downloaded file
- Click OK
Now you can use the imported font in any Report.
Font syling in textField:
"<style isBold='true' pdfFontName='customFont'>" + $F{customField} + "</style>"
Bei der Erstellung eines neuen Schriftarten.JAR muss sichergestellt werden, dass die Schrift "Embed" gesetzt ist
JasperSoft Studio - Window - Preferences - Fonts
Information / Related
Stackoverflow - How to get custom fonts working with jasperserver
Jaspersoft Community - Install new font
Custom Font with the Font Extension
Default Style
– tbd --