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.

  1. auf der linken Seite den Report anklicken


  2. 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


  3. 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 speichern

    1. net.sf.jasperreports.export.pdf.tagged = true
    2. net.sf.jasperreports.export.pdfa.conformance = pdfa1a
    3. 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

  1. Download the font from the table above.
  2. Right click MyReports (Top folder in Project Explorer view)
  3. Select Properties
  4. Select Java Build Path
  5. Click Add External JARs and select the downloaded file
  6. 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 --