PDF 2.0: co się zmieniło
ISO 32000-2 Evidence: Standard-backed
W skrócie
Dział zatytułowany „W skrócie”PDF 2.0 to ISO 32000-2. To pierwsza specyfikacja PDF w całości należąca do ISO, a nie do Adobe. To przede wszystkim konsolidacja i uporządkowanie 1.7, nie radykalne przeprojektowanie. Ta strona opisuje, co faktycznie się zmieniło, które zmiany odczuwa się w praktyce oraz jak NextPDF domyślnie obiera bazę 2.0 za cel, a mimo to potrafi zapisać starszą strukturę pliku, gdy wymaga tego profil.
Dlaczego to ma znaczenie
Dział zatytułowany „Dlaczego to ma znaczenie”„PDF 2.0” brzmi tak, jakby oznaczał inny format. Tak nie jest. Plik 2.0 korzysta z tego samego modelu obiektów, tablicy xref i przyczepki co 1.7, przez co łatwo nie docenić rzeczywistych zmian. Problemy powodują nie najbardziej nagłaśniane funkcje, lecz zaostrzenia: reguły, które w 1.7 były opcjonalne, a teraz są oczekiwane, oraz funkcje, które po cichu usunięto. Dokument, który był całkowicie poprawnym plikiem 1.7, może być niezgodny z 2.0 bez żadnej widocznej różnicy.
Drugi powód, dla którego to ma znaczenie, to kierunek rozwoju. NextPDF to silnik PDF 2.0. Gdy wiesz, czego oczekuje 2.0 i w których miejscach celowo odbiega od 1.7, łatwiej zrozumieć, dlaczego silnik odmawia pewnych rzeczy, rygorystyczniej osadza czcionki i domyślnie używa strumienia odsyłaczy zamiast tablicy.
Wersja zwięzła
Dział zatytułowany „Wersja zwięzła”- PDF 2.0 = ISO 32000-2; należy do ISO i rozwija (a nie zastępuje) 1.7.
- Nagłówek staje się
%PDF-2.0; zgodny program zapisujący deklaruje wersję 2.0 w nagłówku lub w katalogu/Version. - Większość struktury pliku jest bez zmian — te same obiekty pośrednie, ta sama przyczepka, ta sama dyscyplina
startxref/%%EOF. - Naturalnym mechanizmem domyślnym 2.0 jest strumień odsyłaczy; klasyczna 20-bajtowa tablica nadal jest dozwolona i nadal wymagana przez niektóre profile PDF/A.
- 2.0 dodaje elementy (na przykład bogatszą strukturę plików powiązanych i części dokumentu, silniejsze szyfrowanie dzięki rozszerzeniu AES-256-GCM) i usuwa elementy (część znaczników struktury; zaostrzone oczekiwania dotyczące osadzania czcionek; wycofane kolekcje znaków CJK).
- NextPDF domyślnie celuje w 2.0 i potrafi serializować strukturę 1.7/1.4, gdy wymaga tego profil zgodności.
Jak NextPDF do tego podchodzi
Dział zatytułowany „Jak NextPDF do tego podchodzi”Wersja to decyzja wyrażona w jednym miejscu: w strategii serializacji.
Pdf20StreamStrategy (src/Writer/Pdf20StreamStrategy.php) zapisuje nagłówek %PDF-2.0, deklaruje /2.0 jako wersję katalogu i emituje skompresowany strumień odsyłaczy. Przenosi też wprost zaostrzenie dotyczące czcionek z 2.0. W profilu 2.0 może potraktować nieosadzoną standardową czcionkę Type 1 jako błąd, a nie tylko o niej ostrzegać, ponieważ standard oczekuje teraz osadzenia tych czcionek. Dwie strategie tablicowe (Pdf17TableStrategy, Pdf14TableStrategy) istnieją właśnie dlatego, że niektóre profile potrzebują starszego kształtu. PDF/A-2/-3 nakazują tradycyjną tablicę odsyłaczy, a PDF/A-1 dodatkowo zakazuje strumieni obiektów i odsyłaczy. Wszystkie trzy strategie implementują jeden interfejs PdfSerializationStrategy, więc program zapisujący jest identyczny po obu stronach tej granicy. Zmienia się tylko kształt trailer/xref.
Silniejsze szyfrowanie jest wpięte w ten sam przemyślany sposób. PdfXrefWriter (src/Writer/PdfXrefWriter.php) propaguje włączenie AES-256-GCM (rozszerzenie ISO/TS 32003 do 2.0) do słownika szyfrowania, tak aby emitowana wersja procedury obsługi i wpisy trybu szyfru odpowiadały faktycznie wytworzonym bajtom. Silnik nie deklaruje jednego szyfru, zapisując inny.
Ogólna zasada projektu jest prosta. 2.0 jest domyślne. Starszą strukturę można osiągnąć celowo, nigdy przypadkiem. A tam, gdzie 2.0 zaostrza regułę, NextPDF potrafi tę regułę utrzymać, zamiast po cichu ją rozluźniać.
- 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
Co mówią dowody
Dział zatytułowany „Co mówią dowody”Deklaracja wersji jest normatywna. Spec: ISO 32000-2, §7.5.2 ISO 32000-2 §7.5.2 stanowi, że procesor zapisujący zgodny plik musi wskazać wersję 2.0 — albo w nagłówku, albo jako wpis katalogu /Version — oraz że nagłówek to %PDF-1.n lub %PDF-2.n, po którym następuje pojedynczy znacznik końca wiersza.
Spec: ISO 32000-2, §7.7.2 ISO 32000-2 §7.7.2 dodaje, że wpis katalogu
/Version nadpisuje wcześniejszą wersję z nagłówka, co jest dokładnie tym, co umożliwia
przyrostowe podniesienie wersji. Evidence: Standard-backed
To, że 2.0 jest konsolidacją, a nie przepisaniem od nowa, widać w tym, co zachowuje: strumień odsyłaczy (/Type /XRef) to ten sam mechanizm wprowadzony w PDF 1.5 i przeniesiony jako wartość domyślna 2.0 ( Spec: ISO 32000-2, §7.5.8 ISO 32000-2 §7.5.8 ). Struktura obiektów pośrednich, przyczepki i startxref jest niezmieniona względem opisu z poprzedniej strony.
Zmiany, które mają znaczenie, to usunięcia i zaostrzenia. Standard wskazuje, że sześć standardowych elementów struktury obecnych w standardowej przestrzeni nazw struktury PDF 1.7 nie jest częścią przestrzeni nazw PDF 2.0 — Art, BlockQuote, TOC, Reference, BibEntry i Code ( Spec: ISO 32000-2, Annex L.3 ISO 32000-2 Annex L.3 , przy czym różnice w przestrzeni nazw są zdefiniowane zgodnie z Spec: ISO 32000-2, §14.8.6 ISO 32000-2 §14.8.6 ). Zaostrza też czternaście standardowych czcionek Type 1: tam, gdzie 1.0–1.7 pozwalały ich słownikom pomijać wpisy metryk, 2.0 zamyka to pozwolenie ( Spec: ISO 32000-2, §9.6.2.1 ISO 32000-2 §9.6.2.1 ). Rewiduje też predefiniowane kolekcje znaków CJK. Na przykład Adobe-Korea1 jest wycofana w 2.0. Adobe-KR jest dodana. Żadna z tych zmian nie wpływa na to, jak istniejąca strona wygląda. Wszystkie mogą zmienić to, czy jest zgodna.
| Kategoria | Przykłady (2.0 względem 1.7) | Czy zmienia wygląd? | Dlaczego to ma znaczenie |
|---|---|---|---|
| Bez zmian | Obiekty pośrednie, przyczepka, startxref/%%EOF, strumienie xref | — | 2.0 to ten sam model obiektów; większość narzędzi nadal działa |
| Dodane | Bogatsza struktura plików powiązanych / części dokumentu; szyfrowanie AES-256-GCM (ISO/TS 32003) | Nie | Nowa funkcja, którą się włącza; starsze czytniki mogą ją bezpiecznie zignorować |
| Zaostrzone | Oczekuje się osadzenia czcionek Standard-14; metryk nie można już pominąć | Nie | Poprawny plik 1.7 może być niezgodny z 2.0 |
| Usunięte | Sześć elementów struktury z przestrzeni nazw 1.7 (Art, BlockQuote, TOC, Reference, BibEntry, Code); wycofane kolekcje CJK (na przykład Adobe-Korea1) | Nie | Po cichu: nic widocznego nie sygnalizuje utraty zgodności |
Zmiany w PDF 2.0, które mają znaczenie, są w większości niewidoczne: dodatki, które się włącza, oraz zaostrzenia i usunięcia, które zmieniają zgodność bez zmiany ani jednego renderowanego piksela.
Praktyczny przykład
Dział zatytułowany „Praktyczny przykład”Jedyną widoczną różnicą między plikiem 2.0 a plikiem 1.7 są często dwa wiersze — nagłówek i wersja w katalogu — choć stojące za nimi reguły zgodności różnią się znacząco.
%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%%EOFCzytnik widzi %PDF-2.0 oraz /Version /2.0. Tym, czego nie widzi — a co widzi narzędzie sprawdzające zgodność — jest fakt, że od tego pliku oczekuje się teraz osadzenia standardowych czcionek oraz że nie może używać znaczników struktury usuniętych w 2.0. Różniących się bajtów jest niewiele. Różniących się reguł — nie.
Powszechne nieporozumienie
Dział zatytułowany „Powszechne nieporozumienie”Pułapką jest przekonanie: „generujemy PDF 2.0, więc mamy lepszą zgodność niż wcześniej.” Zapis %PDF-2.0 to deklaracja, a nie gwarancja. Plik może mieć nagłówek 2.0 i mimo to naruszać 2.0 — odwołując się do nieosadzonej standardowej czcionki lub używając funkcji usuniętej w 2.0 — dokładnie w sposób tolerowany w 1.7. Znacznik wersji podnosi poprzeczkę, względem której plik jest mierzony. Nie przenosi pliku ponad nią. Odwrotnym błędem jest założenie, że plik 1.7 działa jako 2.0 po zmianie nagłówka: zwykle renderuje się identycznie i nie przechodzi kontroli zgodności, ponieważ zaostrzenia są rzeczywiste, choć niewidoczne.
Ograniczenia i granice
Dział zatytułowany „Ograniczenia i granice”Celowanie w bazę 2.0 oznacza, że NextPDF domyślnie używa struktury pliku 2.0 i potrafi egzekwować zaostrzone reguły 2.0. Nie oznacza to, że każda opcjonalna funkcja 2.0 jest zaimplementowana, ani że emisja nagłówka 2.0 poświadcza dokument względem PDF/A, PDF/UA lub jakiegokolwiek innego profilu. To odrębne, surowsze cele zgodności nałożone na specyfikację bazową, każdy z własną walidacją.
Ta strona to praktyczne wprowadzenie do różnic między wersjami, a nie wyczerpujący rejestr zmian ISO 32000-2 względem 32000-1. Tam, gdzie konkretna funkcja lub wycofanie z 2.0 wpływa na zachowanie silnika, to zachowanie jest zakotwiczone we własnym punkcie normy. Ta strona pokazuje ogólny krajobraz, zamiast wyliczać każdą różnicę na poziomie pojedynczego punktu normy.
Mini-FAQ
Dział zatytułowany „Mini-FAQ”Czy PDF 2.0 jest wstecznie zgodny z czytnikami 1.7? W dużej mierze tak, jeśli chodzi o niezmienioną strukturę. Nowe funkcje 2.0 są zwykle projektowane tak, aby starszy czytnik mógł zignorować to, czego nie rozumie. Ale funkcja dostępna tylko w 2.0 nie będzie obsłużona przez czytnik 1.7.
Co wygrywa: nagłówek czy katalog /Version? Katalog /Version ma pierwszeństwo, gdy wskazuje późniejszą wersję niż nagłówek. To właśnie pozwala aktualizacji przyrostowej podnieść wersję pliku bez przepisywania nagłówka.
Dlaczego NextPDF domyślnie używa strumienia odsyłaczy, a nie tablicy? Strumień odsyłaczy to naturalny mechanizm PDF 2.0 — zwarty i zdolny do indeksowania obiektów skompresowanych. 20-bajtowa tablica jest nadal zapisywana, gdy wymaga tego profil (zwłaszcza niektóre poziomy PDF/A).
Powiązane dokumenty
Dział zatytułowany „Powiązane dokumenty”- Czym właściwie jest PDF — model obiektów i xref, które PDF 2.0 zachowuje po 1.7.
- Krajobraz standardów — gdzie ISO 32000-2 plasuje się wśród standardów śledzonych przez NextPDF oraz jak punkt normy staje się zachowaniem.
- Czcionki: najtrudniejsza część — zaostrzenie osadzania czcionek to jedna ze zmian 2.0, które naprawdę czuć w praktyce.
Słowniczek
Dział zatytułowany „Słowniczek”- PDF 2.0 — specyfikacja PDF znormalizowana jako ISO 32000-2, pierwsze wydanie należące do ISO, a nie do Adobe.
- ISO 32000-1 — normalizacja ISO formatu PDF 1.7 firmy Adobe; baza, na której opiera się PDF 2.0.
- ISO/TS 32003 — specyfikacja techniczna rozszerzająca PDF 2.0 o szyfrowanie AES-256-GCM (AESV4).
- Katalog
/Version— wpis katalogu dokumentu podający wersję PDF; nadpisuje nagłówek, gdy wskazuje późniejszą wersję. - Strumień odsyłaczy — mechanizm odsyłaczy PDF 1.5+ / 2.0 (
/Type /XRef); wartość domyślna NextPDF, z klasyczną tablicą nadal dostępną dla starszych profili. - Zaostrzenie — reguła, która w 1.7 była opcjonalna lub dozwolona, a w 2.0 jest oczekiwana lub wymagana, zmieniająca zgodność bez zmiany wyglądu.