Przejdź do głównej zawartości

Baza PDF 2.0: klauzule ISO 32000-2 implementowane przez NextPDF

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.

Okno terminala
composer require nextpdf/core:^3

Bazowe 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ę.

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 /Root trailera, 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ść /ID jest unikalna dla pliku i na potrzeby porównania jest normalizowana (usuwana). Dlatego większość wyjść wieloobiektowych korzysta z reproducibility_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.

SymbolDziałanie
ConformanceMode::PlainDomyślne — nieograniczone wyjście PDF 2.0.
ConformanceMode::requiresPdf17(): boolDla trybów PDF 2.0 zwraca False; writer generuje nagłówek %PDF-2.0.
NextPDF\Compliance\Validator\ArlingtonValidatorWeryfikacja krzyżowa gramatyki względem modelu Arlington PDF (wspiera weryfikację).
<?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";

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.

  • /ID jest unikalne dla pliku. Wyjście bazowe zawierające trailerowe /ID, /CreationDate lub 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::Plain nie jest PDF/A. Nie zawiera OutputIntent ani znacznika pdfaid. 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.

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).

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.

DeklaracjaSpecyfikacjaKlauzulareference_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.