PDF-Struktur und PDF/A für LangzeitarchivierungSchnell-Einstieg in das Thema PDF und PDF/A.PDF-Dateistruktur Besonderheiten von PDF/A…
PDF = Portable Document Format1993 von Adobe veröffentlicht (basierend auf Postscript)Ziele:Dateiformat für elektronische DokumenteUnabhängig von Anwendungsprogramm--“-- Betriebssystem--“-- Hardwareplattform Originalgetreue WiedergabeAnsicht und Ausdruck immer in der vom Author festgelegten FormEinbetten von Multimedia-InhaltenPDF - Überblick
PDF-Versionen (bis 1.4)
PDF-Versionen (seit 1.4)Quelle: http://en.wikipedia.org/wiki/Portable_Document_Format
PDF Sub-SetsQuelle: http://de.wikipedia.org/wiki/Portable_Document_Format#Normen_und_Standards
Einteilung der PDF-Struktur:ObjekteDateistruktur (Objektverweise)Dokumentenstruktur (Objekte <-> PDF-Komponenten)Aufbau der Datei:Sequenz von 8-Bit-ZeichenMax. Zeilenlänge: 255 ZeichenCR/LF am ZeilenendeCase-SensitiveNur druckbare ASCII-ZeichenAufbau von PDF-Dateien
Boolesche Objekte (boolean): true / falseZahlen (integer oder real)Strings (Folge von Bytes - unsigned integer)(Hello World, hello PDF! \n)Als Hex: <ff02335a0>Namen (name)/Label1 /A;Name_mit_verschiedenen_Zeichen_****?Objekt-Typen
Null-ObjektArrays[11.2 (Das ist ein Feld) /Label1 false]Wörterbuch-Objekt (dictionary)«	/Type /Beispiel1	/Subtype /DictionaryBeispiel	/Version 1.0	/Subdictionary	«		/Schlüssel1 100		/Schlüssel2 (Test)	»»Objekt-Typen (2)
StreamsFolge von BytesInkrementelles Einlesen möglichKeine Fixe GrößeBestehen aus Wörterbuch-Objekt und Inhalt (zwischen „stream“ und „endstream“) Zwingend: Angabe von /LengthObjekt-Typen (3)Quelle: http://blog.didierstevens.com/2008/05/19/pdf-stream-objects/
Objekte – Streams - FilterFilter (kaskadierend, können Optionen enthalten) - zB: ASCIIHEX / ASCII85LZW (Lempel-Ziv-Welch): Text, Grafiken, usw – ca 2:1JPEG – ca 10:1CCITT – JBIG2: monochrome Bilder ca20-50:1Crypt…http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf (Seite 23)
DateistrukturIm wesentlichen 4 Teile:Head (nur 1x)PDF-VersionzB%PDF-1.4Body (mehrfach)PDF-Objekte (direkte und indirekte)BaumstrukturXRef(mehrfach)Cross-Reference-Tabelle (indirekte Objekte)Trailer (mehrfach)Position von XRefDictionary mit besonderen InformationenQuelle: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdf
Dateistruktur – InkrementellInkrementelles SpeichernSchnelleres SpeichernRollback leicht möglichErmöglicht mehrfache SignaturenDateigröße wächst anKeine Optimierung nach Signatur!Quelle: http://labs.appligent.com/pdfblog/pdf_basic_file_layout.php
Dateistruktur - LinearizationAka „Fast Web View“Umstrukturiertung der Objekte: erste Seite am DateianfangTips:Initial View auf „Page Only“ setzen Formulare nicht linearisierenKein Vorteil bei einseitigen PDFsDoku in der Adobe Referenz mangelhaftTesten nur schwer möglichQuelle: http://labs.appligent.com/pdfblog/linearization.php
xref67 70000000016 00000 n0000000687 00000 n0000001193 00000 n0000001347 00000 n0000001530 00000 n0000002053 00000 n0000002621 00006 fDateistruktur - XRef67 7 – Objekt-ID und Anzahl der Objekte in dem Abschnitt[blank]0000000016 – 10 Byte: Offset ab Dateibeginn / führende Nullen[blank]00000 – 5 Byte: Versionsnummer / Init mit 00000 / Objekt 0 = 65535[blank]n/f – f=„freies Objekt“  / n = „belegtes Objekt“EOF oder [blank] + CR / LFImmer 20 Byte je ZeileGrößenbeschränkung durch Offset: ca. 9,3 GBQuelle: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdf
trailer« /Size 14346/Info 14116 0 R/Root 14128 0 R/Prev 2737603/ID[<6543940949663bb28cd1f1fbbbc93894><f562340632c0b5acb04029e70d9c36db>]»startxref 0%%EOFDateistruktur - TrailerAcrobat Reader liest PDF-Dateien von hintenX-RefStart-Pos: zwischen startxref und EOF Trailer-Wörterbuch:Size - Anzahl der Einträge in der XRef;Prev – Offset von Dateibeginn bis zum vorherigen XrefRoot- Objektnummer des catalogdictionaryEncrypt- Objektnummer des encryptiondictionary;Info- Die Objektnummer des Wörterbuches, welches den Meta-Inhalt enthält (informationdictionary);ID- ein Array, bestehend aus zwei Strings; die ID dient als eindeutige Identifikation der DateiQuelle: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdf (Seite 49)
DocumentCatalogAngaben zur Dokumentenanzeige (zBPageMode)Page Tree(alle Seiten)Outline hierarchy: Lesezeichen <-> Seiten Articlethreads Textfluss für Artikel > 1 SeiteNameddestinations  Namen <-> ObjekteInteractive Forms  Formularfelder1 0 obj«/Type /Catalog/Pages 5 0 R/Outlines 10 0 R/PageMode /UseOutlines»endobjhttp://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf (Seite 72)Quelle: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdf
Page Tree2 0 obj«/Type /Pages/Kids [ 4 0 R 10 0 R 24 0 R ]/Count 3»endobj4 0 obj«/Type /Page/Parent 2 0 R/MediaBox [0 0 612 792]/Resources«/Font«/F3 7 0 R/F5 9 0 R/F7 11 0 R»/ProcSet [/PDF]»/Contents 12 0 R/Thumb 14 0 R»endobj»Optimal: Balancedtree– Alle Blätter sind gleich weit von der Wurzel entferntBeispiel:3 Seiten mit /Kids definiertEinzelne Seiten mit /Type /Page/Parent - Verknüpfung mit Page Tree/MediaBox– Größe der Seite/Resources – dictionary/Contents – Referenz zu Content-Stream/Thumb – Referenz zu ThumbnailsSonstiges: Annotationen / Meta-Infos / Versionierung / Größenangabe (CrobBox, TrimBox, ArtBox, BlendBox)
SeitengeometrieMediaBoxGröße des AusgabemediumsCropBoxGröße für Ausgabe (Drucker, Bildschirm)BleedBoxAnschnittrahmen (meist 3mm)TrimBoxEndformat ohne BeschnittArtBoxObjektrahmenQuelle: http://de.wikipedia.org/wiki/Portable_Document_Format#Angaben_der_Seitengeometrie
Schriftarten eingebettet vs. verlinktFontsTrueType / Type1 / Type3 / OpenTypeCa 30-40 kB pro eingebetteter SchriftartSubsetting vs. FullembeddingÄhnliche Schriftart: Multiple Master FontExtrahieren nicht möglich
PDF/A - ÜberblickZiel: Langzeitarchivierung2005 veröffentlicht – 2007 korrigiert2 Sub-Sets:PDF/A-1b– Level B (Basic)  eindeutige visuelle ReproduzierbarkeitPDF/A-1a - Level A(Accessible) eindeutige visuelle Reproduzierbarkeit als auch Abbildbarkeit von Text nach Unicode und inhaltliche Strukturierung des Dokuments (ISO 19005-1)Vollständigkeit der DatenAlle Schriftarten und Bilder eingebettetKennzeichnung als PDF/A-1 mit XMPEindeutigkeitFarb-Definition Eindeutige Kodierung der SchriftKeine Alternativen BilderZugänglichkeitVerschlüsselung bzw. Sperren nicht erlaubtKeine Dynamischen Funktionen
PDF/A-1 a/b - GemeinsamkeitenBasis für PDF/A-1: PDF 1.4Metadaten müssen XMP-Konform seinVerschlüsselung: keine Sicherheitseinstellungen möglich: Das Öffnen/Verarbeiten muss auch ohne Passwort gewährleistet seinFarben: Alle Farben müssen gekennzeichnet sein, geräteabhängige Farbräume müssen per OutputIntent gekennzeichnet sein. Mischen von CMYK und RGB verboten.Tranzparenz: nicht zulässigPDF-Ebenen: Nicht zulässigKompression: LZW und JPEG2000 geht nichtFonts: müssen eingebettet sein (zumindest als Untergruppe) / Eindeutige Kodierung der SchriftAnmerkungen: Sound, Movie-Kommentare gehen nicht / Normale Text-Markierungen sind zulässigKeine Referenzierten Objekte (nicht eingebettet)Alternative Bilder nicht zulässigJavaScript nicht zulässigFormulare: Mit Einschränkungen möglich (zB keine versteckten Felder, keine Aktionen) Aktionen: nicht zulässigKein Postscript
PDF/A-1 a/b - Unterschiede
Ausblick: PDF/A-2Enthält die Änderungen von PDF 1.5, 1.6 und 1.7  (ISO 19005-2)PDFA/A-1 sind automatisch PDF/A-2 kompatibel (aber nicht andersrum)PDF/A2 beruht nicht mehr auf der Adobe PDF Referenz sondern auf ISO 32000-1Veröffentlichung noch für 2011 vorgesehen (Info lt. Ricoh Roadshow Mai 2011)Technisches Komitee:AIIM (http://www.aiim.org/Resources/Standards/Committees/PDFA)
Komprimierung von PDF/ADerzeit erlaubt: ZIP / JPEG / CCITTNicht erlaubt: LZW, da Patent-ProblemeKünftig erlaubt: JPEG2000ca 30% höhere Kompressionsrate gegenüber JPEGJPEG: Schwächen bei Liniengrafiken, Texten, Cartoons behobenIdee: Ressourcen absplittenQuelle: http://www.pdf-tools.com/pdf/pdfa-langzeitarchivierung-iso-19005-pdf.aspx#PDFAprodukte Quelle: http://www.nets.rwth-aachen.de/content/teaching/proseminars/sub/2002_2003_ws_docs/jpeg.pdf
MetadatenXMP – Extensible MetadataPlatformBasiert auf RDF (Resource Description Framework)Verwendung zB bei PDF, JPG, PNG, MP3,  MP4, usw…Verwendung von XMP-Schemata (http://www.adobe.com/products/xmp/pdfs/whitepaper.pdf)2001: XMP von Adobe konzipiert (Teil von Acrobat 5.0)2004: Zusammenarbeit mit anderen Firmen um neues Schema zu erstellen2005: v 1.0 von XMP veröffentlicht2007: Toolkit unter BSD-Lizenz freigegebenFasst Properties zusammenz.B. Autor, Thema, Titel in DC Schemaz.B. Besitzer, Zertifikat, Rechte in RightsManagement SchemaEindeutige Namespace-URI pro Schemaz.B. DC Schema = http://purl.org/dc/elements/1.1/Präfix: dc
XMP und PDF/AXMP zwingend bei PDF/AXMP-Metadaten sind als Stream in einem Objekt gespeichertBinary-Daten nicht erlaubt – Konvertierung zB mit Base64Basieren auf XMP 2004Erfordert gespiegelte Einträge zum DokumentinfoStrenge Regeln für XMP SchemaVordefinierte Schemas in PDF/ADublin Core: Standard-Eigenschaften (http://dublincore.org) (zBcontributor, creator, format, language, subject)XMP Basic: Beschreibende Eigenschaften (zBCreateDate, CreateTool, ModifyDate)XMP Rights ManagementXMP Media Management (zBScanning, History)Adobe PDF (zBKeywords, PDFVersion, Producer)XMP-ErweiterungenErweiterungen sind Schemas „Extension Schema Container Schema“ Definieren neue Eigenschaften (Name, Beschreibung, Datentyp)Neue, komplexe Datentypen können definiert werden.Quellen: http://www.pdfa.org/doku.php?id=artikel:pdfa_und_metadaten_teil_4Und http://nestor.sub.uni-goettingen.de/seminar_bundesarchiv/docs/04-Metadaten-KK.pdf
XMP-ToolkitXMP-Toolkit von Adobe (http://www.adobe.com/devnet/xmp.html)Sources und Samples sind in C++ und Java verfügbarBesteht aus 2 Teilen:XMPCore: zum erstellen und bearbeiten von XMP-DatenXMPFiles: zum auslesen von XMP-Daten<x:xmpmetaxmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:08:04        ">   <rdf:RDFxmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">      			<rdf:Descriptionrdf:about="„ xmlns:pdf="http://ns.adobe.com/pdf/1.3/">         		<pdf:Producer>GPL Ghostscript  9.0</pdf:Producer>         		<pdf:Keywords/>      	</rdf:Description>      	<rdf:Descriptionrdf:about="„ xmlns:xmp="http://ns.adobe.com/xap/1.0/">         			<xmp:ModifyDate>2011-05-23T17:23:33+02:00</xmp:ModifyDate>         			<xmp:CreateDate>2011-05-23T08:53:07+02:00</xmp:CreateDate>         			<xmp:CreatorTool>PDFCreator Version 1.2.0</xmp:CreatorTool>Weitere InfosOnline XMP-Validator: http://www.pdflib.com/de/knowledge-base/xmp-metadaten/kostenloser-xmp-validator/Überblick zu XMP: http://www.pdflib.com/de/knowledge-base/xmp-metadaten/Detaillierte Spezifikation: http://partners.adobe.com/public/developer/en/xmp/sdk/XMPspecification.pdf
Tagged PDFGrundlage für barrierefreie PDF-DokumenteSyntax ähnlich (X)HTMLzB Lesezeichen, Alternativtexte für Bilder, Inhalte Strukturieren, uswRe-flow (Anpassung an das Lesegerät)Künftiger Standard: PDF/UA für barrierefreie DokumenteNachträgliche Anpassung meist nur händisch möglich  sehr ZeitaufwendigWeitere Infos:AIIM: http://www.aiim.org/Resources/Standards/Committees/PDFUAISO: http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=240&ics3=30&csnumber=54564
BeschränkungenSeitengrößeBis Version 3: 45x45 Zoll (ca. 1,14 m)Bis Version 6: 200x200 Zoll (ca. 5,08 m)Seit Version 7: 15.000.000x15.000.000 Zoll (ca. 381 km)SeitenanzahlLt. Spezifikation nicht begrenztDateigrößeBis pdf v1.5: Max. 10 GB (Danach unbegrenzt durch XRef-Streams)PDF/A: Beschränkung auf max. 2 GB
PDFs generierenPostscript-Umweg Anwendung  Postscript  PDFzB  Adobe Distiller / Ghostscript (unzählige Wrapper verfügbar – zBRumborak)TIP: Es sollte ein spezieller PDF/A-Druckertreiber verwendet werden (zBeDocPrintProPDF/A http://www.pdf-signatur.at/pdf-und-pdfa-drucker/edocprintpro-pdfa.html)Scan + OCR + KonvertierungDirekt aus der Anwendung herausAnwendung  PDFVorteil: Tagging kann übernommen werdenzB Adobe PDF-Writer / OpenOffice / Scribus / pdfTexTip: PDF-Writer umgeht Postscript und ist schneller als der DistillerVia APIs aus eigenen AnwendungenzBXpdf (C++) / PdfLIb (C) / Reportlab (Python) / iText, pjx, pdfbox (Java) / fpdf (PHP)
PDFs Generieren – via XML2 Schritte zum Konvertieren:Transformation mit Hilfe eines XSLT-Stylesheets in das XSL-FO-FormatEin PDF-Prozessor (zum Beispiel Apache FOP (Open Source - http://xmlgraphics.apache.org/fop/), Altsoft Xml2PDF (kommerziell http://www.alt-soft.com/Products_xml2pdf.aspx) erzeugt daraus das fertige PDF-Dokument.<?xmlversion="1.0"?><fo:rootxmlns:fo="http://www.w3.org/1999/XSL/Format">  <fo:layout-master-set>    <fo:simple-page-master  master-name="A4"                             page-width="210mm" page-height="297mm">      <fo:region-bodyregion-name="xsl-region-body"  margin="2cm"/>    </fo:simple-page-master>  </fo:layout-master-set>  <fo:page-sequence  master-reference="A4">   <!-- (in Versionen < 2.0 "master-name") -->    <fo:flowflow-name="xsl-region-body">      <fo:block>Hallo Welt!</fo:block>    </fo:flow>  </fo:page-sequence></fo:root>Quelle: http://de.wikipedia.org/wiki/Extensible_Stylesheet_Language_%E2%80%93_Formatting_Objects
PDF-Generieren – Delphi mit PDFLibvar   p: TPDFCanvas;begin   p := TPDFCanvas.Create;p.OpenFile(sFileName,  crBestCompressed, 'Generator', 'Author', 'Keywords', '', '', true);p.SetFontPath('\..\Vorlagen\Berichte', ftFontOutLine);      p.OpenFont('Univers','UVL_____.TTF', ftFontOutLine);      p.OpenFont('UniversBold','unvr55w.ttf', ftFontOutLine);p.BeginPage(21.0, 29.7, 0, 0, 0, 0);   p.fMarginLeft := 2;   p.fMarginTop := 4;   p.fMarginRight := 2;   p.fMarginBottom := 2;p.SetTextAt(p.fMarginLeft, 0, 3, 0, 'Hello World', tmLeft);p.EndPage;p.CloseFile;p.Destroy;end;
PDFs validierenWas wird geprüft:für die entsprechenden Objekte werden auch die passenden Datentypen genutzt keine unnötige Konvertierung (zB Kreis zu Linienstücken)Wenig redundanter Code – Analyse der Content-StreamsBilder in gut komprimierenden Formaten (Analyse der XObjects)Tools zum Validieren:PDF ToolKit (http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)Xpdf (http://foolabs.com/xpdf/)Editoren (vim, notepad, …)Viewer (Acrobat Reader, Xpdf)Rasterizer (gs, pdftoppm, …)Preflight von Adobe Acrobat3-Heights PDF Validator (http://www.pdf-tools.com/)Callas pdfaPilot 2 (http://www.callassoftware.com/callas/doku.php/de)Onlinedienst: http://www.validatepdfa.com/de/Software-Übersicht: http://www.pdfa.org/doku.php?id=pdfa:produkte:validieren
PDF-SignaturenZiel: Identität des Absenders feststellenPDF/A erlaubt nur Dokumentsignatur (PDF/A Konformität für sichtbare Signaturen - Schriftarten einbetten!)Eintragung ins „Signaturedictionary“ des Document-CatalogsUmgekehrtes Public-Key-VerfahrenTools zum Signieren:Zb Online via: http://www.buergerkarte.at/pdf-as/UpdateFormWeitere Tools: http://www.pdfa.org/doku.php?id=pdfa:produkte:signaturen
Verschlüsselung / PasswortschutzVerschlüsseln / Passwort bei PDF/A-Files lt. Standard nicht erlaubtLösungsansatz: PDF-Files unverschlüsselt anlegen, und dann auf passwortgeschütztem Volume / Datenträger ablegenBis v1.4: MD5, RC4-40-128Bit,Ab v1.4: PKCS#7 with SHA384, SHA512, RIPEMD160, DSA up to 4096-bit, RSA up to 4096-bitsTools (Variable Key-Länge):Acrobat OnboardVeryPDF (http://www.verypdf.com/encryptpdf/index.htm)PDF Encrypt Tool v2 (http://www.pdf-convert.com/pdf-encrypt-tool/index.htm)A-Pdf (http://www.a-pdf.com/security/password.htm)PDF-Toolkit (http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/) Beispiel mit PDF-Toolkit:pdftk mydoc.pdf output mydoc.128.pdf owner_pwfoopass
Tipps & TricksHerausforderungen beim Konvertieren:Farben: Farbprofile in der Quelle fehlen – Annahmen über Farbraum müssen getroffen werdenSchriften: Fehlende Schriften müssen ersetzt werden. Voraussetzung: Text muss als Unicode vorliegenTransparenz: Verflachen von Transparenz ist komplex  Gefahr von InformationsverlustDigitale Signaturen: Prüfen, Dokumentieren, Neu SignierenPlatz sparen zB durch: Absplitten von Elementen (zB Schriftarten) und späterem Mergen (vgl. pdf-tools.com)Daten-Deduplizierung – zB von EMC
Tipps & TricksBest Practice bei Umwandlung von E-MailsProbleme: Attachment-formate, Verschiedene Informationen (Header, Body, RTF, Text Only, usw…)Body und Anhänge einzeln konvertieren, dann in ein Dokument zusammenfassen. Signaturen auch einzeln behandeln.Best Practice bei WebseitenProblem: Druck-Ansicht oder Bildschirm-AnsichtEinen Browser als Referenz festlegen / evtl. Richtlinien für archivfreundliche Seitengestaltung / entweder Bildschirm oder Druckdarstellung / Zusätzliche Inhalte speichern (zB Texte, Bilder, Fonts, Hintergründe, Flash-Previews)
Doku / LiteraturAllgemeiner PDF/A ÜberblickPDF/A Kompakt (gratis, aber registrierung nötig – recht guter überblick): http://www.pdfa.org/doku.php?id=pdfa:pdfa_kompaktGenerelle Infos zu PDFs:http://www.prepressure.com/pdf/basicsDiplomarbeit mit Allgemeinen Infos: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdfPDF-ReferenzenPDFlibCookbook:  http://www.pdflib.com/pdflib-cookbook/PDF-Bibel: http://www.pdflib.com/developer/technical-documentation/books/postscript-pdf-bibel/ISO-Standard 19005-1:2005 (CHF 118,-): http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38920(Achtung: Corrigendum 1 beachten)PDF-Standard lt. ISO 3200: http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdfSchnellerÜberblick der Dateistruktur: http://www.planetpdf.com/planetpdf/pdfs/seyboldseminars/ny02/king_jim_PDFAsPackageAnnot.pdfLangzeitarchivierungNestor-Handbuch: eine kleine Enzyklopädie der digitalen Langzeitarchivierung: http://nestor.sub.uni-goettingen.de/handbuch/nestor-handbuch_23.pdfSonstigesBericht über die Genauigkeit von PDF/A-Validatoren von PDFLib: http://www.pdflib.com/fileadmin/pdflib/pdf/pdfa/2009-05-04-Bavaria-report-on-PDFA-validation-accuracy.pdfGute Software-Übersichtsseite: http://www.pdfa.org/doku.php?id=pdfa:produktePDF/A Competence Center: http://www.pdfa.org/
Richard GaunDiplom-WirtschaftsinformatikerMail: richard@gaun.euFon: +43 (0) 680 / 123 87 87Twitter: RichardGaunIT-Consulting mit 360°-Blick.Kontakt

PDF und PDF/A für Langzeitarchivierung

  • 1.
    PDF-Struktur und PDF/Afür LangzeitarchivierungSchnell-Einstieg in das Thema PDF und PDF/A.PDF-Dateistruktur Besonderheiten von PDF/A…
  • 2.
    PDF = PortableDocument Format1993 von Adobe veröffentlicht (basierend auf Postscript)Ziele:Dateiformat für elektronische DokumenteUnabhängig von Anwendungsprogramm--“-- Betriebssystem--“-- Hardwareplattform Originalgetreue WiedergabeAnsicht und Ausdruck immer in der vom Author festgelegten FormEinbetten von Multimedia-InhaltenPDF - Überblick
  • 3.
  • 4.
    PDF-Versionen (seit 1.4)Quelle:http://en.wikipedia.org/wiki/Portable_Document_Format
  • 5.
  • 6.
    Einteilung der PDF-Struktur:ObjekteDateistruktur(Objektverweise)Dokumentenstruktur (Objekte <-> PDF-Komponenten)Aufbau der Datei:Sequenz von 8-Bit-ZeichenMax. Zeilenlänge: 255 ZeichenCR/LF am ZeilenendeCase-SensitiveNur druckbare ASCII-ZeichenAufbau von PDF-Dateien
  • 7.
    Boolesche Objekte (boolean):true / falseZahlen (integer oder real)Strings (Folge von Bytes - unsigned integer)(Hello World, hello PDF! \n)Als Hex: <ff02335a0>Namen (name)/Label1 /A;Name_mit_verschiedenen_Zeichen_****?Objekt-Typen
  • 8.
    Null-ObjektArrays[11.2 (Das istein Feld) /Label1 false]Wörterbuch-Objekt (dictionary)« /Type /Beispiel1 /Subtype /DictionaryBeispiel /Version 1.0 /Subdictionary « /Schlüssel1 100 /Schlüssel2 (Test) »»Objekt-Typen (2)
  • 9.
    StreamsFolge von BytesInkrementellesEinlesen möglichKeine Fixe GrößeBestehen aus Wörterbuch-Objekt und Inhalt (zwischen „stream“ und „endstream“) Zwingend: Angabe von /LengthObjekt-Typen (3)Quelle: http://blog.didierstevens.com/2008/05/19/pdf-stream-objects/
  • 10.
    Objekte – Streams- FilterFilter (kaskadierend, können Optionen enthalten) - zB: ASCIIHEX / ASCII85LZW (Lempel-Ziv-Welch): Text, Grafiken, usw – ca 2:1JPEG – ca 10:1CCITT – JBIG2: monochrome Bilder ca20-50:1Crypt…http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf (Seite 23)
  • 11.
    DateistrukturIm wesentlichen 4Teile:Head (nur 1x)PDF-VersionzB%PDF-1.4Body (mehrfach)PDF-Objekte (direkte und indirekte)BaumstrukturXRef(mehrfach)Cross-Reference-Tabelle (indirekte Objekte)Trailer (mehrfach)Position von XRefDictionary mit besonderen InformationenQuelle: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdf
  • 12.
    Dateistruktur – InkrementellInkrementellesSpeichernSchnelleres SpeichernRollback leicht möglichErmöglicht mehrfache SignaturenDateigröße wächst anKeine Optimierung nach Signatur!Quelle: http://labs.appligent.com/pdfblog/pdf_basic_file_layout.php
  • 13.
    Dateistruktur - LinearizationAka„Fast Web View“Umstrukturiertung der Objekte: erste Seite am DateianfangTips:Initial View auf „Page Only“ setzen Formulare nicht linearisierenKein Vorteil bei einseitigen PDFsDoku in der Adobe Referenz mangelhaftTesten nur schwer möglichQuelle: http://labs.appligent.com/pdfblog/linearization.php
  • 14.
    xref67 70000000016 00000n0000000687 00000 n0000001193 00000 n0000001347 00000 n0000001530 00000 n0000002053 00000 n0000002621 00006 fDateistruktur - XRef67 7 – Objekt-ID und Anzahl der Objekte in dem Abschnitt[blank]0000000016 – 10 Byte: Offset ab Dateibeginn / führende Nullen[blank]00000 – 5 Byte: Versionsnummer / Init mit 00000 / Objekt 0 = 65535[blank]n/f – f=„freies Objekt“ / n = „belegtes Objekt“EOF oder [blank] + CR / LFImmer 20 Byte je ZeileGrößenbeschränkung durch Offset: ca. 9,3 GBQuelle: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdf
  • 15.
    trailer« /Size 14346/Info14116 0 R/Root 14128 0 R/Prev 2737603/ID[<6543940949663bb28cd1f1fbbbc93894><f562340632c0b5acb04029e70d9c36db>]»startxref 0%%EOFDateistruktur - TrailerAcrobat Reader liest PDF-Dateien von hintenX-RefStart-Pos: zwischen startxref und EOF Trailer-Wörterbuch:Size - Anzahl der Einträge in der XRef;Prev – Offset von Dateibeginn bis zum vorherigen XrefRoot- Objektnummer des catalogdictionaryEncrypt- Objektnummer des encryptiondictionary;Info- Die Objektnummer des Wörterbuches, welches den Meta-Inhalt enthält (informationdictionary);ID- ein Array, bestehend aus zwei Strings; die ID dient als eindeutige Identifikation der DateiQuelle: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdf (Seite 49)
  • 16.
    DocumentCatalogAngaben zur Dokumentenanzeige(zBPageMode)Page Tree(alle Seiten)Outline hierarchy: Lesezeichen <-> Seiten Articlethreads Textfluss für Artikel > 1 SeiteNameddestinations Namen <-> ObjekteInteractive Forms Formularfelder1 0 obj«/Type /Catalog/Pages 5 0 R/Outlines 10 0 R/PageMode /UseOutlines»endobjhttp://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf (Seite 72)Quelle: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdf
  • 17.
    Page Tree2 0obj«/Type /Pages/Kids [ 4 0 R 10 0 R 24 0 R ]/Count 3»endobj4 0 obj«/Type /Page/Parent 2 0 R/MediaBox [0 0 612 792]/Resources«/Font«/F3 7 0 R/F5 9 0 R/F7 11 0 R»/ProcSet [/PDF]»/Contents 12 0 R/Thumb 14 0 R»endobj»Optimal: Balancedtree– Alle Blätter sind gleich weit von der Wurzel entferntBeispiel:3 Seiten mit /Kids definiertEinzelne Seiten mit /Type /Page/Parent - Verknüpfung mit Page Tree/MediaBox– Größe der Seite/Resources – dictionary/Contents – Referenz zu Content-Stream/Thumb – Referenz zu ThumbnailsSonstiges: Annotationen / Meta-Infos / Versionierung / Größenangabe (CrobBox, TrimBox, ArtBox, BlendBox)
  • 18.
    SeitengeometrieMediaBoxGröße des AusgabemediumsCropBoxGrößefür Ausgabe (Drucker, Bildschirm)BleedBoxAnschnittrahmen (meist 3mm)TrimBoxEndformat ohne BeschnittArtBoxObjektrahmenQuelle: http://de.wikipedia.org/wiki/Portable_Document_Format#Angaben_der_Seitengeometrie
  • 19.
    Schriftarten eingebettet vs.verlinktFontsTrueType / Type1 / Type3 / OpenTypeCa 30-40 kB pro eingebetteter SchriftartSubsetting vs. FullembeddingÄhnliche Schriftart: Multiple Master FontExtrahieren nicht möglich
  • 20.
    PDF/A - ÜberblickZiel:Langzeitarchivierung2005 veröffentlicht – 2007 korrigiert2 Sub-Sets:PDF/A-1b– Level B (Basic)  eindeutige visuelle ReproduzierbarkeitPDF/A-1a - Level A(Accessible) eindeutige visuelle Reproduzierbarkeit als auch Abbildbarkeit von Text nach Unicode und inhaltliche Strukturierung des Dokuments (ISO 19005-1)Vollständigkeit der DatenAlle Schriftarten und Bilder eingebettetKennzeichnung als PDF/A-1 mit XMPEindeutigkeitFarb-Definition Eindeutige Kodierung der SchriftKeine Alternativen BilderZugänglichkeitVerschlüsselung bzw. Sperren nicht erlaubtKeine Dynamischen Funktionen
  • 21.
    PDF/A-1 a/b -GemeinsamkeitenBasis für PDF/A-1: PDF 1.4Metadaten müssen XMP-Konform seinVerschlüsselung: keine Sicherheitseinstellungen möglich: Das Öffnen/Verarbeiten muss auch ohne Passwort gewährleistet seinFarben: Alle Farben müssen gekennzeichnet sein, geräteabhängige Farbräume müssen per OutputIntent gekennzeichnet sein. Mischen von CMYK und RGB verboten.Tranzparenz: nicht zulässigPDF-Ebenen: Nicht zulässigKompression: LZW und JPEG2000 geht nichtFonts: müssen eingebettet sein (zumindest als Untergruppe) / Eindeutige Kodierung der SchriftAnmerkungen: Sound, Movie-Kommentare gehen nicht / Normale Text-Markierungen sind zulässigKeine Referenzierten Objekte (nicht eingebettet)Alternative Bilder nicht zulässigJavaScript nicht zulässigFormulare: Mit Einschränkungen möglich (zB keine versteckten Felder, keine Aktionen) Aktionen: nicht zulässigKein Postscript
  • 22.
    PDF/A-1 a/b -Unterschiede
  • 23.
    Ausblick: PDF/A-2Enthält dieÄnderungen von PDF 1.5, 1.6 und 1.7 (ISO 19005-2)PDFA/A-1 sind automatisch PDF/A-2 kompatibel (aber nicht andersrum)PDF/A2 beruht nicht mehr auf der Adobe PDF Referenz sondern auf ISO 32000-1Veröffentlichung noch für 2011 vorgesehen (Info lt. Ricoh Roadshow Mai 2011)Technisches Komitee:AIIM (http://www.aiim.org/Resources/Standards/Committees/PDFA)
  • 24.
    Komprimierung von PDF/ADerzeiterlaubt: ZIP / JPEG / CCITTNicht erlaubt: LZW, da Patent-ProblemeKünftig erlaubt: JPEG2000ca 30% höhere Kompressionsrate gegenüber JPEGJPEG: Schwächen bei Liniengrafiken, Texten, Cartoons behobenIdee: Ressourcen absplittenQuelle: http://www.pdf-tools.com/pdf/pdfa-langzeitarchivierung-iso-19005-pdf.aspx#PDFAprodukte Quelle: http://www.nets.rwth-aachen.de/content/teaching/proseminars/sub/2002_2003_ws_docs/jpeg.pdf
  • 25.
    MetadatenXMP – ExtensibleMetadataPlatformBasiert auf RDF (Resource Description Framework)Verwendung zB bei PDF, JPG, PNG, MP3, MP4, usw…Verwendung von XMP-Schemata (http://www.adobe.com/products/xmp/pdfs/whitepaper.pdf)2001: XMP von Adobe konzipiert (Teil von Acrobat 5.0)2004: Zusammenarbeit mit anderen Firmen um neues Schema zu erstellen2005: v 1.0 von XMP veröffentlicht2007: Toolkit unter BSD-Lizenz freigegebenFasst Properties zusammenz.B. Autor, Thema, Titel in DC Schemaz.B. Besitzer, Zertifikat, Rechte in RightsManagement SchemaEindeutige Namespace-URI pro Schemaz.B. DC Schema = http://purl.org/dc/elements/1.1/Präfix: dc
  • 26.
    XMP und PDF/AXMPzwingend bei PDF/AXMP-Metadaten sind als Stream in einem Objekt gespeichertBinary-Daten nicht erlaubt – Konvertierung zB mit Base64Basieren auf XMP 2004Erfordert gespiegelte Einträge zum DokumentinfoStrenge Regeln für XMP SchemaVordefinierte Schemas in PDF/ADublin Core: Standard-Eigenschaften (http://dublincore.org) (zBcontributor, creator, format, language, subject)XMP Basic: Beschreibende Eigenschaften (zBCreateDate, CreateTool, ModifyDate)XMP Rights ManagementXMP Media Management (zBScanning, History)Adobe PDF (zBKeywords, PDFVersion, Producer)XMP-ErweiterungenErweiterungen sind Schemas „Extension Schema Container Schema“ Definieren neue Eigenschaften (Name, Beschreibung, Datentyp)Neue, komplexe Datentypen können definiert werden.Quellen: http://www.pdfa.org/doku.php?id=artikel:pdfa_und_metadaten_teil_4Und http://nestor.sub.uni-goettingen.de/seminar_bundesarchiv/docs/04-Metadaten-KK.pdf
  • 27.
    XMP-ToolkitXMP-Toolkit von Adobe(http://www.adobe.com/devnet/xmp.html)Sources und Samples sind in C++ und Java verfügbarBesteht aus 2 Teilen:XMPCore: zum erstellen und bearbeiten von XMP-DatenXMPFiles: zum auslesen von XMP-Daten<x:xmpmetaxmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.1-c043 52.372728, 2009/01/18-15:08:04 "> <rdf:RDFxmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Descriptionrdf:about="„ xmlns:pdf="http://ns.adobe.com/pdf/1.3/"> <pdf:Producer>GPL Ghostscript 9.0</pdf:Producer> <pdf:Keywords/> </rdf:Description> <rdf:Descriptionrdf:about="„ xmlns:xmp="http://ns.adobe.com/xap/1.0/"> <xmp:ModifyDate>2011-05-23T17:23:33+02:00</xmp:ModifyDate> <xmp:CreateDate>2011-05-23T08:53:07+02:00</xmp:CreateDate> <xmp:CreatorTool>PDFCreator Version 1.2.0</xmp:CreatorTool>Weitere InfosOnline XMP-Validator: http://www.pdflib.com/de/knowledge-base/xmp-metadaten/kostenloser-xmp-validator/Überblick zu XMP: http://www.pdflib.com/de/knowledge-base/xmp-metadaten/Detaillierte Spezifikation: http://partners.adobe.com/public/developer/en/xmp/sdk/XMPspecification.pdf
  • 28.
    Tagged PDFGrundlage fürbarrierefreie PDF-DokumenteSyntax ähnlich (X)HTMLzB Lesezeichen, Alternativtexte für Bilder, Inhalte Strukturieren, uswRe-flow (Anpassung an das Lesegerät)Künftiger Standard: PDF/UA für barrierefreie DokumenteNachträgliche Anpassung meist nur händisch möglich  sehr ZeitaufwendigWeitere Infos:AIIM: http://www.aiim.org/Resources/Standards/Committees/PDFUAISO: http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?ics1=35&ics2=240&ics3=30&csnumber=54564
  • 29.
    BeschränkungenSeitengrößeBis Version 3:45x45 Zoll (ca. 1,14 m)Bis Version 6: 200x200 Zoll (ca. 5,08 m)Seit Version 7: 15.000.000x15.000.000 Zoll (ca. 381 km)SeitenanzahlLt. Spezifikation nicht begrenztDateigrößeBis pdf v1.5: Max. 10 GB (Danach unbegrenzt durch XRef-Streams)PDF/A: Beschränkung auf max. 2 GB
  • 30.
    PDFs generierenPostscript-Umweg Anwendung Postscript  PDFzB Adobe Distiller / Ghostscript (unzählige Wrapper verfügbar – zBRumborak)TIP: Es sollte ein spezieller PDF/A-Druckertreiber verwendet werden (zBeDocPrintProPDF/A http://www.pdf-signatur.at/pdf-und-pdfa-drucker/edocprintpro-pdfa.html)Scan + OCR + KonvertierungDirekt aus der Anwendung herausAnwendung  PDFVorteil: Tagging kann übernommen werdenzB Adobe PDF-Writer / OpenOffice / Scribus / pdfTexTip: PDF-Writer umgeht Postscript und ist schneller als der DistillerVia APIs aus eigenen AnwendungenzBXpdf (C++) / PdfLIb (C) / Reportlab (Python) / iText, pjx, pdfbox (Java) / fpdf (PHP)
  • 31.
    PDFs Generieren –via XML2 Schritte zum Konvertieren:Transformation mit Hilfe eines XSLT-Stylesheets in das XSL-FO-FormatEin PDF-Prozessor (zum Beispiel Apache FOP (Open Source - http://xmlgraphics.apache.org/fop/), Altsoft Xml2PDF (kommerziell http://www.alt-soft.com/Products_xml2pdf.aspx) erzeugt daraus das fertige PDF-Dokument.<?xmlversion="1.0"?><fo:rootxmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="A4" page-width="210mm" page-height="297mm"> <fo:region-bodyregion-name="xsl-region-body" margin="2cm"/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference="A4"> <!-- (in Versionen < 2.0 "master-name") --> <fo:flowflow-name="xsl-region-body"> <fo:block>Hallo Welt!</fo:block> </fo:flow> </fo:page-sequence></fo:root>Quelle: http://de.wikipedia.org/wiki/Extensible_Stylesheet_Language_%E2%80%93_Formatting_Objects
  • 32.
    PDF-Generieren – Delphimit PDFLibvar p: TPDFCanvas;begin p := TPDFCanvas.Create;p.OpenFile(sFileName, crBestCompressed, 'Generator', 'Author', 'Keywords', '', '', true);p.SetFontPath('\..\Vorlagen\Berichte', ftFontOutLine); p.OpenFont('Univers','UVL_____.TTF', ftFontOutLine); p.OpenFont('UniversBold','unvr55w.ttf', ftFontOutLine);p.BeginPage(21.0, 29.7, 0, 0, 0, 0); p.fMarginLeft := 2; p.fMarginTop := 4; p.fMarginRight := 2; p.fMarginBottom := 2;p.SetTextAt(p.fMarginLeft, 0, 3, 0, 'Hello World', tmLeft);p.EndPage;p.CloseFile;p.Destroy;end;
  • 33.
    PDFs validierenWas wirdgeprüft:für die entsprechenden Objekte werden auch die passenden Datentypen genutzt keine unnötige Konvertierung (zB Kreis zu Linienstücken)Wenig redundanter Code – Analyse der Content-StreamsBilder in gut komprimierenden Formaten (Analyse der XObjects)Tools zum Validieren:PDF ToolKit (http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)Xpdf (http://foolabs.com/xpdf/)Editoren (vim, notepad, …)Viewer (Acrobat Reader, Xpdf)Rasterizer (gs, pdftoppm, …)Preflight von Adobe Acrobat3-Heights PDF Validator (http://www.pdf-tools.com/)Callas pdfaPilot 2 (http://www.callassoftware.com/callas/doku.php/de)Onlinedienst: http://www.validatepdfa.com/de/Software-Übersicht: http://www.pdfa.org/doku.php?id=pdfa:produkte:validieren
  • 34.
    PDF-SignaturenZiel: Identität desAbsenders feststellenPDF/A erlaubt nur Dokumentsignatur (PDF/A Konformität für sichtbare Signaturen - Schriftarten einbetten!)Eintragung ins „Signaturedictionary“ des Document-CatalogsUmgekehrtes Public-Key-VerfahrenTools zum Signieren:Zb Online via: http://www.buergerkarte.at/pdf-as/UpdateFormWeitere Tools: http://www.pdfa.org/doku.php?id=pdfa:produkte:signaturen
  • 35.
    Verschlüsselung / PasswortschutzVerschlüsseln/ Passwort bei PDF/A-Files lt. Standard nicht erlaubtLösungsansatz: PDF-Files unverschlüsselt anlegen, und dann auf passwortgeschütztem Volume / Datenträger ablegenBis v1.4: MD5, RC4-40-128Bit,Ab v1.4: PKCS#7 with SHA384, SHA512, RIPEMD160, DSA up to 4096-bit, RSA up to 4096-bitsTools (Variable Key-Länge):Acrobat OnboardVeryPDF (http://www.verypdf.com/encryptpdf/index.htm)PDF Encrypt Tool v2 (http://www.pdf-convert.com/pdf-encrypt-tool/index.htm)A-Pdf (http://www.a-pdf.com/security/password.htm)PDF-Toolkit (http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/) Beispiel mit PDF-Toolkit:pdftk mydoc.pdf output mydoc.128.pdf owner_pwfoopass
  • 36.
    Tipps & TricksHerausforderungenbeim Konvertieren:Farben: Farbprofile in der Quelle fehlen – Annahmen über Farbraum müssen getroffen werdenSchriften: Fehlende Schriften müssen ersetzt werden. Voraussetzung: Text muss als Unicode vorliegenTransparenz: Verflachen von Transparenz ist komplex  Gefahr von InformationsverlustDigitale Signaturen: Prüfen, Dokumentieren, Neu SignierenPlatz sparen zB durch: Absplitten von Elementen (zB Schriftarten) und späterem Mergen (vgl. pdf-tools.com)Daten-Deduplizierung – zB von EMC
  • 37.
    Tipps & TricksBestPractice bei Umwandlung von E-MailsProbleme: Attachment-formate, Verschiedene Informationen (Header, Body, RTF, Text Only, usw…)Body und Anhänge einzeln konvertieren, dann in ein Dokument zusammenfassen. Signaturen auch einzeln behandeln.Best Practice bei WebseitenProblem: Druck-Ansicht oder Bildschirm-AnsichtEinen Browser als Referenz festlegen / evtl. Richtlinien für archivfreundliche Seitengestaltung / entweder Bildschirm oder Druckdarstellung / Zusätzliche Inhalte speichern (zB Texte, Bilder, Fonts, Hintergründe, Flash-Previews)
  • 38.
    Doku / LiteraturAllgemeinerPDF/A ÜberblickPDF/A Kompakt (gratis, aber registrierung nötig – recht guter überblick): http://www.pdfa.org/doku.php?id=pdfa:pdfa_kompaktGenerelle Infos zu PDFs:http://www.prepressure.com/pdf/basicsDiplomarbeit mit Allgemeinen Infos: http://www.iicm.tu-graz.ac.at/thesis/dekert.pdfPDF-ReferenzenPDFlibCookbook:  http://www.pdflib.com/pdflib-cookbook/PDF-Bibel: http://www.pdflib.com/developer/technical-documentation/books/postscript-pdf-bibel/ISO-Standard 19005-1:2005 (CHF 118,-): http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=38920(Achtung: Corrigendum 1 beachten)PDF-Standard lt. ISO 3200: http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdfSchnellerÜberblick der Dateistruktur: http://www.planetpdf.com/planetpdf/pdfs/seyboldseminars/ny02/king_jim_PDFAsPackageAnnot.pdfLangzeitarchivierungNestor-Handbuch: eine kleine Enzyklopädie der digitalen Langzeitarchivierung: http://nestor.sub.uni-goettingen.de/handbuch/nestor-handbuch_23.pdfSonstigesBericht über die Genauigkeit von PDF/A-Validatoren von PDFLib: http://www.pdflib.com/fileadmin/pdflib/pdf/pdfa/2009-05-04-Bavaria-report-on-PDFA-validation-accuracy.pdfGute Software-Übersichtsseite: http://www.pdfa.org/doku.php?id=pdfa:produktePDF/A Competence Center: http://www.pdfa.org/
  • 39.
    Richard GaunDiplom-WirtschaftsinformatikerMail: richard@gaun.euFon:+43 (0) 680 / 123 87 87Twitter: RichardGaunIT-Consulting mit 360°-Blick.Kontakt