CIB format technischer Leitfaden (DE)

4. Ausgabemodule

4.2. CIB format/PDF/A

Allgemein
Spezielle Optionen für die PDF/A Ausgabe
XMP Metadaten
Beispiel für XMP Metadaten
Spezielle Optionen für PDF/A Ausgabe mit Signatur und Zertifikat
Spezielle Properties für das ZUGFeRD-Datenmodell

Allgemein

Als international genormtes Format ist PDF/A auch für die Archivierung geeignet. PDF/A ist eine durch die ISO genormte Version des PDF-Formats. Das PDF/A-Format stellt eine Untermenge der Möglichkeiten von Adobe PDF Version 1.4 und XMP, speziell für die Anforderungen der Langzeitarchivierung von elektronischen, Seitenorientierten Dokument. Es ist von der ISO als Norm ISO/CD 19005-1:2005 spezifiziert.

Die Vorteile eines PDF-Archivs gegenüber einem TIFF- oder einem Papierarchiv sind:

  • PDF speichert Objekte wie Textzeichen und Graphiken. Damit kann der volle Text im ganzen Archive effizient gesucht werden.
  • Ein TIFF-Dokument ist ein Rasterbild und muss daher zuerst mittels OCR gescannt werden.
  • PDF-Dateien benötigen nur einen Bruchteil des Speicherplatzes der Originaldatei- oder einer vergleichbaren TIFF-Datei, ohne an Qualität zu verlieren. Der geringere Speicherplatzbedarf wirkt sich vor allem auch bei der elektronischen Übermittlung (FTP, Beilage zum E-Mail usw.) der Dokumente aus.
  • PDF-Format ist optimierbar. Je nach Verwendungszweck kann die Priorität auf Bildqualität (z.B. Checks) oder Extraktion von strukturierten Daten (z.B. Buchungsbelege) liegen. TIFF macht hier keine Unterschiede.
  • Metadaten wie Titel, Autor, Erstellungsdatum, Änderungsdatum, Thema, Schlüsselwörter usw. können als Bestandteil einer PDF-Datei gespeichert werden. Anhand der Metadaten können PDF-Dateien automatisch ohne manuelle Intervention klassifiziert werden.


Spezielle Optionen für die PDF/A Ausgabe

Diese Properties können nicht im RTF über PRINT CIB Befehl gesetzt werden.


Optionsname

Optionswert

Datentyp

OutputFormat

In diese Property muss der Wert "FormatPdfA" gesetzt werden

Char*

PdfVersion

Setzen der zu erzeugenden Pdf/A Version.

Gültige Werte:
"PDF/A-1b" (ISO Norm 19005-1 Level B, basiert auf Pdf 1.4)

"PDF/A-2b" (ISO Norm 19005-2 Level B, basiert auf Pdf 1.7)

"PDF/A-3b" (ISO Norm 19005-3 Level B, basiert auf Pdf 1.7)

 

(ab CIB format Version 5.8.1):
"PDF/A-2u" (ISO Norm 19005-2 Level U, basiert auf Pdf 1.7)

"PDF/A-3u" (ISO Norm 19005-3 Level U, basiert auf Pdf 1.7)

PDF/A-2u ist eine Erweiterung von PDF/A-2b und liefert die Vorteile von Unicode in Bezug auf Textsuche und Kopieren von Text.

PDF/A-3u ist eine Erweiterung von PDF/A-3b und liefert die Vorteile von Unicode in Bezug auf Textsuche und Kopieren von Text.

Char*

EmbeddedFiles

(ab CIB format Version 5.7.0)

Set-Property

Über diese Property kann eine Liste von Dateien angegeben werden, die bei der PDF-Generierung an das PDF bzw. an einzelne Seiten des PDFs angehängt werden.

Syntax:

<EmbeddedFiles> ::= <EmbedFilename> | <EmbedFilename>;<EmbedFilename>

<EmbedFilename> ::= "{"<Seitenangabe>;<EmbedFilename-ohneSeite>"}"|"{"<EmbedFilename-ohneSeite>"}"

<EmbedFilename-ohneSeite> ::= <Relationship>;<EmbedFilename-simple>|<Description>;<EmbedFilename-simple>|<Relationship>;<Description>;<EmbedFilename-simple>|<EmbedFilename-simple>

<Relationship> ::= "RELATIONSHIP="<name>

<Description> ::= "DESC="<name>

<EmbedFilename-simple> ::= Dateiname

Beispiel:

EmbeddedFiles={1-3;Relationship=Source;Desc="Description";file1.rtf};{Relationship=Source;Desc="Description for another file";file2.rtf};

Zu beachten:

-       “Description” wird nur für bei PDF-Versionen >= 1.6 ausgewertet. Es kann beliebiger Text eingetragen werden, der dann in die Annotations eingefügt wird.

-       “Relationship” wird nur bei PDF/A3-Konvertierung ausgewertet (PDF/A3a, PDF/A3b, PDF/A3u).
Es gibt vordefinierte Bezeichner (Source, Data, Alternative, Supplement, Unspecified), es können aber auch andere Werte verwendet werden.

-       Falls zu einem EmbedFilename eine Seitennummer (oder mehrere) angegeben werden, wird die Datei als Anhang dieser Seite(n) eingefügt. Ansonsten handelt es sich um einen Anhang des kompletten PDF-Dokuments.

-       Die Seitenangabe kann sein:
Seitenzahl(en), Bereich oder eine Kombination aus beidem, getrennt durch Kommata.
Beispiel: “1,5-6,10”;

In “EmbedFilename” können zum Maskieren folgende Zeichen verwendet werden:
“\;”  für  “;”
“\\”  für  “\”.

Char*

HideGraphics

Grafiken, die (auch nur teilweise) innerhalb vorgegebener Rechtecke liegen, werden nicht ins PDF übernommen.

Beispiel:
HideGraphics ="{{1,3-40};{forbidden;2cm;2cm;5cm;4cm}};{{2,5,6};{forbidden;2cm;2cm;5cm;4cm}}“

 

Zur genauen Syntax siehe Property Checkmask. Als Typ des Rechtecks ist nur „forbidden“ möglich.

Char*

RemoveNotdefGlyphs

(ab CIB format Version 5.8.1)

Ist diese Eigenschaft gesetzt, werden .notdef Glyphen entfernt.
Sollte bei der Ausgabe von Pdf/A oder Pdf/UA eine .notdef Glyphe vorhanden sein und nicht entfernt werden, wird mit einer Fehlermeldung abgebrochen (Errorcode 280).

0       .notdef Glyphen werden NICHT entfernt. (Default).

1       .notdef Glyphen werden entfernt.

Char*

XmpMetadataExtension

Erlaubt die Angabe eines oder mehrerer XMP-Snippets vom Typ rdf:Description. Diese werden beim Konvertierungsvorgang (CibPrSave()) der Metainfo des entstehenden PDFs hinzugefügt.

Wichtige Informationen siehe separate Hinweise XMP Metadaten

Char*


Hinweise:

  • Durch das Setzen dieser beschriebenen Properties werden im Modul CIB format alle zum Umsetzen der Spezifikation notwendigen Vorgaben fest eingestellt und können vom Anwender nicht verändert werden (zum Beispiel wird Fontembedding fix aktiviert und die Verschlüsselung abgeschalten). Für  alle wahlfreien Einstellungen stehen die allgemeinen PDF Properties, beschrieben unter CIB format/pdf, zur Verfügung.Technische Details zur Spezifikation PDF/A sind als separate Dokumentationen erhältlich und nicht Bestandteil dieses Leitfadens.

  •   Für C++-Anwender sind die Optionsnamen in separaten Headerdateien als defines hinterlegt.


XMP Metadaten

Bei Extensible Metadata Platform (XMP) handelt es sich um ein Format zum Einbetten von RDF in die Binärdaten. Damit sollen Metadaten in allen relevanten Adobe Systems -Applikationen nach einem einheitlichen Schema integriert werden.

Der Inhalt der Property XmpMetadataExtension ist beschrieben durch folgende Detailanforderungen, die sich insbesondere aus den Angaben in den XMP- und PDF/A-Spezifikationen ergeben:

  • Das Attribut rdf:about muss auf "" gesetzt werden.
  • Der Inhalt der Description-Elemente und die notwendige Angabe eines eigenen Namespaces sind im Rahmen der XMP-Vorgaben beliebig.
  • Der String muss UTF-8 encoded sein.
  • Es können entprechend der XMP-Spezifikation nur Name-Wert-Paare (Properties) im XMP gespeichert werden.
  • Ein Wert kann selbst kein XML sein. Strukturierte Werte (Unterschriftenbereich=Left,Top,Right,Bottom) und Listen von Werten (Author=Thiel, Eisenschmid, Wissenbach) werden von XMP aber unterstützt. Die verfügbaren atomaren Datentypen sind in der XMP-Spezifikation beschrieben.
  •   Für PDF/A-Konformität: Wenn der angegebene Namespace *nicht* einer der in der XMP Specification vordefinierten "XMP-Schemas" ist, dann muss die Beschreibung des zugehörigen Schemas *ebenfalls* mitgegeben werden. Siehe hierzu die Angaben in der PDF/A-Spezifikation bezüglich Metadata. Das ist nicht erforderlich für normales PDF.
  •   Eine Überprüfung des Inhalts der XmpMetadataExtension auf Konformität findet nicht statt.
  • Der Aufrufer sorgt dafür, daß der Propertywert ein XMP konformer String in UTF-8 Encoding ist. Das Voranstellen des XMP-Headers sowie des XMP Abschlußes ist nicht erlaubt.
  • Im CIB documentServer muss diese Property als CDATA-Section oder mit entsprechenden Entities encoded werden, und natürlich auch UTF-8 enthalten.

Beispiel:

XmpMetadataExtension="
<rdf:Description rdf:about=\"\" xmlns:xmpTGp=\"http://ns.adobe.com/xap/1.0/t/pg/\">
        <xmpTGp:NPages>25<xmpTGp:NPages>
</rdf:Description>
"
Beispiel für XMP Metadaten

Die grüne Sektion beschreibt den Teil, der als Schema für den roten individuellen Inhalt (=eigene Property) gilt:

<rdf:Description rdf:about="" xmlns:pdfaProperty="http://www.aim.org/pdfa/ns/property/">
<pdfaProperty:name>BackgroundFilename</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>internal</pdfaProperty:category>
</rdf:Description>
 
<rdf:Description rdf:about="" xmlns:pdfaSchema="http://www.aim.org/pdfa/ns/schema/">
<pdfaSchema:namespaceURI>
http://www.cib.de/schemas/xmp/pdfprops/1.0/
</pdfaSchema:namespaceURI>
 
<pdfaSchema:prefix>cibpdf</pdfaSchema:prefix>
<pdfaSchema:property>
<rdf:Seq>
<rdf:li>BackgroundFilename</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:Description>
 

<rdf:Description rdf:about="" xmlns:cibpdf="http://www.cib.de/schemas/xmp/pdfprops/1.0/">
<cibpdf:DefaultBackgroundFilename>wert1</cibpdf:DefaultBackgroundFilename>  
</rdf:Description>


Spezielle Optionen für PDF/A Ausgabe mit Signatur und Zertifikat

(ab CIB format Version 5.3.240)

Im PDF/A-Fall sind Formularfelder nur in Form von DigSig-Feldern erlaubt. Das bedeutete die folgende, standardmäßige Property-Belegung:

„UseDigitalSignatureWidget“  = “1”
„NeedAppearancesSignatureWidgets” = “0”

Beim Auftreten abweichender Unterschriftenfelder wird mit Fehlermeldung abgebrochen, da sonst ein nicht Spec-konformes PDF/A Dokument entstehen würde.

Ein detaillierte Beschreibung des Themas Signatur und Zertifikat mit den zugehörigen Properties befindet sich im Kapitel CIB format/PDF.


Spezielle Properties für das ZUGFeRD-Datenmodell

(ab CIB format Version 7.1.0)

Das „Forum elektronische Rechnung Deutschland“ (FeRD) ist die nationale Plattform von Ministerien, Verbänden und Unternehmen zur Förderung der elektronischen Rechnung in Deutschland. ZUGFeRD ist die Abkürzung für „Zentraler User Guide des Forums elektronische Rechnung Deutschland“.

Jede auf dem ZUGFeRD-Datenmodell basierende Rechnung muss eine vollständige, gültige  Rechnung sein (sowohl die RTF, PDF- als auch die XML-Darstellung). Die XML-Datei wird stets mit dem Namen "ZUGFeRD-invoice.xml" in das PDF eingebettet.

Die für das "ZUGFeRD-invoice.xml" benötigten Rechnungsfelder werden über CIB markUp im RTF farblich markiert (siehe eigene Dokumentation: „Kurzanleitung CIB markUp“). Das derart vorbereitete RTF dient dem CIB format als Eingabedatei für die Erstellung des ZUGFeRD-konformen PDFs und XML-Datei. Das durch den CIB format erstellte PDF erfüllt den PDF/A3 Standard.

Die Verarbeitung darf nicht im Speicher stattfinden, damit die Dateien auch entsprechend geschrieben werden.

Für die Erstellung einer ZUGFeRD-konformen Rechnung sind folgende zusätzliche DLLs erforderlich:
CibInvoice[64].dll
CibPdf[64].dll
CibXalan[64].dll
CibDataXml[64].dll
CibDataCsv[64].dll
xerces-c_3_1.dll
xerces-c_2_2_0.dll
Xalan-C_1_5_0.dll


Optionsname

Optionswert

Datentyp

OutputFormat

In diese Property muss der Wert "FormatPdfA" gesetzt werden

Char*

PdfVersion

Setzen der zu erzeugenden Pdf/A Version, hier:

PdfVersion=PDF/A-3b

Char*

DataExtractType

Set-Property

Über diese Property kann angegeben werden, welcher e-Rechnungs-Typen bei der Ausgabe verwendet werden soll. Mögliche Werte sind:

-       FacturXXrechnung

-       FatturaPA

-       ZUGFeRDBasic

-       ZUGFeRDComfort

-       FacturXComfort

-       FacturXBasic

Da der französische Standard Factur-X technisch identisch zum ZUGFeRD 2.1 Standard ist, verwendet man für beide FacturXBasic bzw. FacturXComfort.

Char*

DataExtractContext

Set-Property

Diese Property wird benötigt um den Kontext für Wiederholungsgruppen (z.B. Rechnungsposten) zu definieren. Es werden die Parameter aufgelistet, die zu einer Gruppe gehören, so dass bei wiederholtem Auftreten von Parametern festgestellt werden kann, wann ein neuer Kontext beginnt.

Für ZUGFeRD 1 ist es =siehe DataExtractContext_ZUGFeRD1 in diesem Kapitel

Für XRechnung , Factur-X und ZUGFeRD 2.0/2.1 ist es:

DataExtractContext=siehe DataExtractContext in diesem Kapitel

Char*

DataExtractColors

Set-Property

Über diese Property wird jedem Rechnungsparameter eine Farbe zugeordnet. Der CIB format kann damit den Text im RTF, der in dieser Farbe geschrieben ist, automatisch dem zugehörigen Rechnungsparameter zuordnen.
Für die Ausgabe im PDF wird dieser Text wieder schwarz eingefärbt.

Die Paare „Rechnungsparameter, Farbwert“ sind fest vorgegeben, d.h. die Belegung der Property DataExtractColors sieht für Für ZUGFeRD 1 folgendermaßen aus:

DataExtractColors= siehe DataExtractColors in diesem Kapitel

Für XRechnung , Factur-X und ZUGFeRD 2.0/2.1 ist es:

DataExtractColors= siehe DataExtractColors_weitere in diesem Kapitel

Char*

DataExtractXml

Get-Property

Diese Property enthält nach der Generierung die ZUGFeRD-XML.

Char*

DataExtractErrors

Get-Property

Die aus dem farblich markierten RTF-erzeugte ZUGFeRD-XML wird validiert. Fehler, die dabei festgestellt werden, werden in der Property DataExtractErrors zurückgegeben.

Die Rückgabe erfolgt als Text-String, bei dem die einzelnen Fehler durch „;” getrennt sind.

Char*

ZUGFeRDEmbedInPDF

Set-Property

Ist die Property gesetzt, wird eine ZUGFeRD-XML erzeugt und durch die CIB pdf toolbox in das PDF/A3-eingebettet und damit ein ZUGFeRD-PDF erstellt.

Voraussetzung: UseInMemoryProcessing=0

Mögliche Werte:

0       Es wird keine ZUGFeRD Ausgabe erzeugt (Default).

1       Aufruf der CIB pdf toolbox zur Erzeugung eines ZUGFeRD PDFs

Char*