Baza PDF 2.0: klauzule ISO 32000-2 implementowane przez NextPDF
W skrócie
Dział zatytułowany „W skrócie”Oświadczenie o granicach. NextPDF implementuje przywołane klauzule; pełna zgodność z ISO 32000-2 nie jest deklarowana jako ogólna gwarancja.
ISO 32000-2:2020 to standard bazowy PDF 2.0. NextPDF Core domyślnie generuje nieograniczony plik PDF 2.0 (ConformanceMode::Plain): nagłówek %PDF-2.0, katalog dokumentu, strukturę odsyłaczy oraz zgodny trailer. Ta strona dokumentuje bazowe klauzule implementowane przez NextPDF oraz wyraźne ograniczenie. Biblioteka implementuje przywołane klauzule. Nie składa ogólnej deklaracji „w pełni zgodny z ISO 32000-2”. Plik zgodny to taki, który zgodny czytnik może przetworzyć w ramach standardu. Taki werdykt wydaje weryfikator, a nie flaga biblioteki.
Instalacja
Dział zatytułowany „Instalacja”composer require nextpdf/core:^3Bazowe wyjście PDF 2.0 jest w Core domyślne; nie trzeba wywoływać profilu. ConformanceMode::Plain jest domyślnym dyskryminatorem trybu. Profile PDF/A-4, PDF/UA-2, PDF/X i ZUGFeRD to ograniczone podzbiory nałożone na tę bazę.
Omówienie koncepcyjne
Dział zatytułowany „Omówienie koncepcyjne”Każdy dokument NextPDF zaczyna jako plik PDF 2.0, zanim zostanie zastosowany jakikolwiek profil. Writer realizuje wymagania strukturalne, które ISO 32000-2 nakłada na zgodny plik:
- Katalog dokumentu — §7.7.2: obiekt główny wskazywany przez
/Roottrailera, obecny w każdym wyjściu. - Struktura odsyłaczy — §7.5.8: tabela lub strumień odsyłaczy lokalizujący każdy obiekt.
- Trailer — §7.5.5: słownik trailera, który zgodny plik musi zawierać, łącznie z identyfikatorem pliku
/ID. Wartość/IDjest unikalna dla pliku i na potrzeby porównania jest normalizowana (usuwana). Dlatego większość wyjść wieloobiektowych korzysta zreproducibility_profile: structural, a nie z porównania bitowego. - Struktura logiczna — §14.7.2: gdy włączony jest tryb otagowany, baza
StructTreeRoot, stanowiąca podstawę profilu PDF/UA-2. - Rozszerzenie wersji — §7.12: gdy zadeklarowane jest rozszerzenie dewelopera, używany jest mechanizm słownika Extensions / prefiksu dewelopera.
NextPDF implementuje te klauzule. Nie przeprowadza pełnej oceny zgodności z ISO 32000-2. Do takiego rozstrzygnięcia użyj zewnętrznego walidatora, takiego jak weryfikator gramatyki Arlington lub veraPDF. NextPDF\Compliance udostępnia weryfikacje krzyżowe na poziomie strumienia bajtów (ArlingtonValidator), które ujawniają rozbieżności strukturalne. Wspierają weryfikację. Nie są certyfikatem.
Powierzchnia API
Dział zatytułowany „Powierzchnia API”| Symbol | Działanie |
|---|---|
ConformanceMode::Plain | Domyślne — nieograniczone wyjście PDF 2.0. |
ConformanceMode::requiresPdf17(): bool | Dla trybów PDF 2.0 zwraca False; writer generuje nagłówek %PDF-2.0. |
NextPDF\Compliance\Validator\ArlingtonValidator | Weryfikacja krzyżowa gramatyki względem modelu Arlington PDF (wspiera weryfikację). |
Przykład kodu — szybki start
Dział zatytułowany „Przykład kodu — szybki start”<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/baseline.pdf';
$doc = Document::createStandalone(); // ConformanceMode::Plain — PDF 2.0$doc->setTitle('PDF 2.0 baseline');$doc->writeHtml('<h1>Hello PDF 2.0</h1><p>Unconstrained baseline output.</p>');$doc->save($out);
echo "Wrote {$out} (%PDF-2.0). Validate structure with an external checker.\n";Przykład kodu — produkcja
Dział zatytułowany „Przykład kodu — produkcja”W środowisku produkcyjnym uruchamiaj zewnętrzny walidator strukturalny (Arlington / veraPDF) w ciągłej integracji (CI) dla reprezentatywnego wyjścia i uzależniaj przejście bramki od jego raportu. Biblioteka generuje strukturę; weryfikator rozstrzyga, czy jest ona zgodna. Biblioteka nie składa ogólnej deklaracji zgodności.
Przypadki brzegowe i pułapki
Dział zatytułowany „Przypadki brzegowe i pułapki”/IDjest unikalne dla pliku. Wyjście bazowe zawierające trailerowe/ID,/CreationDatelub prefiksy podzbiorów czcionek nie jest stabilne bajtowo. Porównuj według profilu strukturalnego (qpdf-normalize), a nie według surowego sha256.- Plain ≠ archiwalny.
ConformanceMode::Plainnie jest PDF/A. Nie zawiera OutputIntent ani znacznikapdfaid. Nie traktuj go jako archiwalnego. - Implementuje ≠ w pełni zgodny. Ta strona wymienia klauzule, które implementuje NextPDF. Nie stwierdza, że każda klauzula ISO 32000-2 jest spełniona dla każdego dokumentu. Jest to werdykt weryfikatora wydawany dla każdego dokumentu osobno.
- Rozszerzenia mają przestrzenie nazw. Rozszerzenie dewelopera korzysta ze słownika Extensions z §7.12 oraz zarejestrowanego prefiksu. Klucz prywatny bez prefiksu stanowi odstępstwo od bazy.
Wydajność
Dział zatytułowany „Wydajność”Generowanie bazy to główna ścieżka silnika. Budżet obejmuje czas rzeczywisty ≤ 1500 ms oraz szczytowe zużycie pamięci ≤ 64 MB dla typowego dokumentu. Bazowy writer obsługuje macierz backportu (PHP 8.1–8.4).
Uwagi dotyczące bezpieczeństwa
Dział zatytułowany „Uwagi dotyczące bezpieczeństwa”Bazowe wyjście PDF 2.0 nie zawiera szyfrowania ani podpisu, chyba że dodasz je jawnie. Szyfrowanie zapewnia poufność i jest omówione w osobnym przepisie. Bity uprawnień ISO opierają się na współpracy czytnika i nie stanowią kontroli dostępu. Baza nie daje żadnej gwarancji bezpieczeństwa.
Zgodność
Dział zatytułowany „Zgodność”| Deklaracja | Specyfikacja | Klauzula | reference_id |
|---|---|---|---|
| Zgodny plik PDF 2.0 musi zawierać zgodny trailer / strukturę pliku. | ISO 32000-2 | §7.5.5 | |
| Każdy obiekt można zlokalizować za pomocą tabeli lub strumienia odsyłaczy. | ISO 32000-2 | §7.5.8 | |
| Plik ma katalog dokumentu jako obiekt główny. | ISO 32000-2 | §7.7.2 | |
| Zgodność jest ujęta w kategoriach zgodnych writerów i czytników. | ISO 32000-2 | §7.2 | |
| Rozszerzenia wersji korzystają ze słownika Extensions / prefiksu dewelopera. | ISO 32000-2 | §7.12 | |
| Wyjście otagowane opiera się na bazowej strukturze logicznej ISO 32000-2. | ISO 32000-2 | §14.7.2 |
Cytacje są wskaźnikami do korpusu weryfikacyjnego w postaci identyfikatora klauzuli + reference_id. Żaden tekst standardów nie jest odtwarzany; NextPDF streszcza klauzule własnymi słowami.