PDF 2.0: wat is er veranderd?
ISO 32000-2 Evidence: Standard-backed
In het kort
Sectie met titel “In het kort”PDF 2.0 is ISO 32000-2. Het is de eerste PDF-specificatie die volledig in handen is van ISO in plaats van Adobe. Het is vooral een consolidatie en opschoning van 1.7, geen ingrijpende heruitvinding. Deze pagina laat zien wat er daadwerkelijk is veranderd, welke wijzigingen je in de praktijk merkt en hoe NextPDF standaard de 2.0-basislijn als doel hanteert, terwijl het nog steeds oudere bestandsstructuren kan schrijven wanneer een profiel dat vereist.
Waarom dit van belang is
Sectie met titel “Waarom dit van belang is”“PDF 2.0” klinkt alsof het een ander formaat zou zijn. Dat is het niet. Een 2.0-bestand gebruikt hetzelfde objectmodel, dezelfde xref en dezelfde trailer als 1.7; daardoor onderschat je gemakkelijk de werkelijke wijzigingen. De wijzigingen die problemen veroorzaken, zijn niet de opvallende functies. Het zijn de aanscherpingen: regels die in 1.7 optioneel waren en nu worden verwacht, en functies die stilletjes zijn verwijderd. Een document dat als 1.7-bestand volledig geldig was, kan een niet-conform 2.0-bestand zijn zonder ook maar één zichtbaar verschil.
De andere reden waarom dit van belang is, is de richting. NextPDF is een PDF 2.0-engine. Zodra je weet wat 2.0 verwacht en waar het bewust afwijkt van 1.7, kun je beredeneren waarom de engine sommige dingen weigert, lettertypen strikter insluit en standaard kiest voor een cross-reference-stream in plaats van een tabel.
De korte versie
Sectie met titel “De korte versie”- PDF 2.0 = ISO 32000-2, eigendom van ISO, en bouwt voort op 1.7 in plaats van die te vervangen.
- De header wordt
%PDF-2.0; een conforme schrijver vermeldt de versie als 2.0 in de header of in de catalogus/Version. - Het grootste deel van de bestandsstructuur is onveranderd — dezelfde indirecte objecten, dezelfde trailer, dezelfde
startxref/%%EOF-discipline. - De cross-reference-stream is de natuurlijke standaard in 2.0; de klassieke 20-byte-tabel is nog steeds toegestaan en wordt door sommige PDF/A-profielen nog steeds vereist.
- 2.0 voegt functies toe (bijvoorbeeld rijkere structuur voor bijbehorende bestanden en documentonderdelen, sterkere versleuteling via de AES-256-GCM-extensie) en verwijdert andere (sommige structuurtags; aangescherpte verwachtingen voor het insluiten van lettertypen; afgeschafte CJK-tekencollecties).
- NextPDF hanteert standaard 2.0 als doel en kan 1.7/1.4-structuur serialiseren wanneer een conformiteitsprofiel dat vereist.
Hoe NextPDF dit aanpakt
Sectie met titel “Hoe NextPDF dit aanpakt”De versie is een beslissing, uitgedrukt op één plek: de serialisatiestrategie.
Pdf20StreamStrategy (src/Writer/Pdf20StreamStrategy.php) schrijft de %PDF-2.0-header, rapporteert /2.0 als catalogusversie en schrijft een gecomprimeerde cross-reference-stream. De aanscherping voor lettertypen in 2.0 zit daar ook rechtstreeks in. Binnen het 2.0-profiel kan het de regel tegen een niet-ingesloten standaard Type 1-lettertype afdwingen in plaats van er alleen voor te waarschuwen, omdat de standaard nu verwacht dat die lettertypen worden ingesloten. De twee tabelstrategieën (Pdf17TableStrategy, Pdf14TableStrategy) bestaan juist omdat sommige profielen de oudere vorm nodig hebben. PDF/A-2/-3 schrijven de traditionele cross-reference-tabel voor, en PDF/A-1 verbiedt daarnaast object- en cross-reference-streams. Alle drie de strategieën implementeren dezelfde PdfSerializationStrategy-interface, zodat de schrijver boven die strategielaag identiek blijft. Alleen de vorm van de trailer/xref verandert.
Sterkere versleuteling wordt op dezelfde weloverwogen manier aangesloten. PdfXrefWriter (src/Writer/PdfXrefWriter.php) geeft een AES-256-GCM-opt-in (de ISO/TS 32003-extensie op 2.0) door aan de versleutelingsdictionary, zodat de uitgegeven handler-versie en de cipher-modus-vermeldingen overeenkomen met de bytes die daadwerkelijk worden geproduceerd. De engine claimt niet de ene cipher om vervolgens een andere te schrijven.
Het ontwerp in grote lijnen is als volgt. 2.0 is de standaard. Oudere structuur is met opzet bereikbaar, nooit per ongeluk. En waar 2.0 een regel aanscherpt, kan NextPDF de aangescherpte lijn handhaven in plaats van die stilzwijgend te versoepelen.
- Step 1 of 3: ISO 32000-1 PDF 1.7 — the Adobe-authored base, adopted by ISO
- Step 2 of 3: ISO 32000-2 PDF 2.0 — ISO-owned consolidation, tightening, and additions
- Step 3 of 3: ISO/TS 32003 AES-256-GCM (AESV4) — an encryption extension to PDF 2.0
Wat het bewijs zegt
Sectie met titel “Wat het bewijs zegt”De versievermelding is normatief. Spec: ISO 32000-2, §7.5.2 ISO 32000-2 §7.5.2 stelt dat een processor die een conform bestand schrijft de versie moet identificeren — hetzij in de header, hetzij als de catalogusvermelding /Version — als 2.0, en dat de header %PDF-1.n of %PDF-2.n is, gevolgd door één end-of-line-markering.
Spec: ISO 32000-2, §7.7.2 ISO 32000-2 §7.7.2 voegt daaraan toe dat de catalogusvermelding
/Version een eerdere header-versie overschrijft; dat maakt precies
een incrementele versieverhoging mogelijk. Evidence: Standard-backed
Dat 2.0 een consolidatie is en geen herschrijving, blijkt uit wat het behoudt: de cross-reference-stream (/Type /XRef) is hetzelfde mechanisme dat in PDF 1.5 werd geïntroduceerd en als standaard in 2.0 is overgenomen ( Spec: ISO 32000-2, §7.5.8 ISO 32000-2 §7.5.8 ). De structuur van het indirecte object, de trailer en startxref is onveranderd ten opzichte van de beschrijving op de vorige pagina.
De wijzigingen die ertoe doen, zijn verwijderingen en aanscherpingen. De standaard legt vast dat zes standaardstructuurelementen die in de PDF 1.7-naamruimte voor standaardstructuur voorkomen, geen deel uitmaken van de PDF 2.0-naamruimte — Art, BlockQuote, TOC, Reference, BibEntry en Code ( Spec: ISO 32000-2, Annex L.3 ISO 32000-2 Annex L.3 , waarbij de naamruimteverschillen worden gedefinieerd volgens Spec: ISO 32000-2, §14.8.6 ISO 32000-2 §14.8.6 ). Ook voor de veertien standaard Type 1-lettertypen zijn de regels aangescherpt: waar 1.0–1.7 toestonden dat hun dictionaries metrics-vermeldingen weglieten, schaft 2.0 die toestemming af ( Spec: ISO 32000-2, §9.6.2.1 ISO 32000-2 §9.6.2.1 ). En het herziet de vooraf gedefinieerde CJK-tekencollecties. Zo is Adobe-Korea1 in 2.0 afgeschaft. Adobe-KR is toegevoegd. Geen van deze wijzigingen verandert hoe een bestaande pagina er uitziet. Ze kunnen wel allemaal veranderen of die conform is.
| Categorie | Voorbeelden (2.0 t.o.v. 1.7) | Verandert het uiterlijk? | Waarom het van belang is |
|---|---|---|---|
| Onveranderd | Indirecte objecten, trailer, startxref/%%EOF, xref-streams | — | 2.0 is hetzelfde objectmodel; de meeste tooling wordt overgenomen |
| Toegevoegd | Rijkere structuur voor bijbehorende bestanden / documentonderdelen; AES-256-GCM-versleuteling (ISO/TS 32003) | Nee | Nieuwe mogelijkheid waarvoor je kiest; wordt veilig genegeerd door oudere lezers |
| Aangescherpt | Standaard-14-lettertypen: insluiten wordt verwacht; metrics mogen niet langer worden weggelaten | Nee | Een geldig 1.7-bestand kan een niet-conform 2.0-bestand zijn |
| Verwijderd | Zes structuurelementen uit de 1.7-naamruimte (Art, BlockQuote, TOC, Reference, BibEntry, Code); afgeschafte CJK-collecties (bijvoorbeeld Adobe-Korea1) | Nee | Stil: niets zichtbaars verraadt het verlies van conformiteit |
De PDF 2.0-wijzigingen die ertoe doen, zijn meestal onzichtbaar: toevoegingen waarvoor je kiest, en aanscherpingen/verwijderingen die de conformiteit veranderen zonder één weergegeven pixel te veranderen.
Praktisch voorbeeld
Sectie met titel “Praktisch voorbeeld”Het enige zichtbare verschil tussen een 2.0-bestand en een 1.7-bestand is vaak twee regels — de header en de catalogusversie — ook al verschillen de conformiteitsregels erachter aanzienlijk.
%PDF-2.0 % was %PDF-1.7...1 0 obj<< /Type /Catalog /Version /2.0 % catalog states 2.0; overrides header if later /Pages 2 0 R >>endobj...% Cross-reference STREAM is the 2.0 default (was often a 20-byte table)99 0 obj<< /Type /XRef /Size 100 /W [1 2 2] /Filter /FlateDecode /Root 1 0 R >>stream<binary xref entries>endstreamendobjstartxref12345%%EOFEen lezer ziet %PDF-2.0 en een /Version /2.0. Wat het niet ziet — maar een conformiteitscontroleur wél — is dat van dit bestand nu wordt verwacht dat het zijn standaardlettertypen insluit en dat het de structuurtags die 2.0 heeft verwijderd niet mag gebruiken. Er zijn weinig bytes die verschillen. Voor de regels geldt dat niet.
Veelvoorkomend misverstand
Sectie met titel “Veelvoorkomend misverstand”De valkuil is: “we geven PDF 2.0 uit, dus we voldoen beter dan voorheen.” Het schrijven van %PDF-2.0 is een bewering, geen garantie. Een bestand kan de 2.0-header dragen en toch 2.0 schenden — door te verwijzen naar een niet-ingesloten standaardlettertype, of door een functie te gebruiken die 2.0 heeft verwijderd — precies op de manier die onder 1.7 werd getolereerd. De versiemarkering verhoogt de lat waaraan het bestand wordt afgemeten. Die tilt het bestand er niet overheen. De omgekeerde fout is aannemen dat een 1.7-bestand als 2.0 werkt door de header te wijzigen: meestal wordt het identiek weergegeven en faalt het op conformiteit, omdat de aanscherpingen reëel zijn, ook al zijn ze onzichtbaar.
Grenzen en beperkingen
Sectie met titel “Grenzen en beperkingen”De 2.0-basislijn als doel hanteren betekent dat NextPDF standaard uitgaat van 2.0-bestandsstructuur en de aangescherpte regels van 2.0 kan handhaven. Het betekent niet dat elke optionele 2.0-functie is geïmplementeerd, noch dat het uitgeven van een 2.0-header een document certificeert tegen PDF/A, PDF/UA of enig ander profiel. Dat zijn afzonderlijke, striktere conformiteitsdoelen die bovenop de basisspecificatie zijn gelaagd, elk met een eigen validatie.
Deze pagina is een praktische oriëntatie op de versieverschillen, geen uitputtende wijzigingslijst van ISO 32000-2 ten opzichte van 32000-1. Waar een specifieke 2.0-functie of -afschaffing het gedrag van de engine bepaalt, is dat gedrag verankerd in een eigen clausule. Deze pagina brengt het landschap in kaart in plaats van elke delta op clausuleniveau op te sommen.
Mini-FAQ
Sectie met titel “Mini-FAQ”Is PDF 2.0 achterwaarts compatibel met 1.7-lezers? Grotendeels, voor de onveranderde structuur. Nieuwe 2.0-functies zijn doorgaans zo ontworpen dat oudere lezers kunnen negeren wat ze niet begrijpen. Maar een 2.0-specifieke functie wordt niet gehonoreerd door een 1.7-lezer.
Wint de header of de catalogus /Version? De catalogus /Version heeft voorrang wanneer die een latere versie noemt dan de header. Daardoor kan een incrementele update de versie van een bestand verhogen zonder de header te herschrijven.
Waarom kiest NextPDF standaard voor een cross-reference-stream en niet voor een tabel? De cross-reference-stream is het natuurlijke PDF 2.0-mechanisme — compact en in staat om gecomprimeerde objecten te indexeren. De 20-byte-tabel wordt nog steeds geschreven wanneer een profiel (met name sommige PDF/A-niveaus) dat vereist.
Gerelateerde documentatie
Sectie met titel “Gerelateerde documentatie”- Wat een PDF eigenlijk is — het objectmodel en de xref die PDF 2.0 uit 1.7 behoudt.
- Het standaardenlandschap — waar ISO 32000-2 past tussen de standaarden die NextPDF volgt en hoe een clausule wordt vertaald naar gedrag.
- Lettertypen: het moeilijke deel — de aanscherping van het insluiten van lettertypen is een van de 2.0-wijzigingen die je daadwerkelijk merkt.
Verklarende woordenlijst
Sectie met titel “Verklarende woordenlijst”- PDF 2.0 — de PDF-specificatie die is gestandaardiseerd als ISO 32000-2, de eerste editie die in handen is van ISO in plaats van Adobe.
- ISO 32000-1 — de ISO-standaardisatie van Adobe’s PDF 1.7; de basis waarop PDF 2.0 voortbouwt.
- ISO/TS 32003 — een technische specificatie die PDF 2.0 uitbreidt met AES-256-GCM (AESV4)-versleuteling.
- Catalogus
/Version— de catalogusvermelding van het document die de PDF-versie aangeeft; overschrijft de header wanneer die een latere versie noemt. - Cross-reference-stream — het cross-reference-mechanisme van PDF 1.5+ / 2.0 (
/Type /XRef); de standaard van NextPDF, met de klassieke tabel nog steeds beschikbaar voor oudere profielen. - Aanscherping — een regel die in 1.7 optioneel of toegestaan was en in 2.0 wordt verwacht of vereist, waardoor de conformiteit verandert zonder dat het uiterlijk verandert.