ISO 19005-4 (PDF/A-4): mapowanie funkcji NextPDF
W skrócie
Dział zatytułowany „W skrócie”International Organization for Standardization (ISO) 19005-4:2020 to profil archiwalny formatu Portable Document Format (PDF) 2.0 znany jako PDF/A-4. Ta strona mapuje ten profil na NextPDF bez rozszerzania deklarowanego zakresu obsługi: pokazuje, co emituje Core, co dodaje rozszerzenie nextpdf/pro i czego NextPDF wprost nie obejmuje. NextPDF emituje struktury istotne dla PDF/A-4; tylko walidator może stwierdzić, czy plik jest zgodny.
Instalacja
Dział zatytułowany „Instalacja”composer require nextpdf/core:^3# PDF/A-4 file authoring (OutputIntent + ICC + XMP) requires:# composer require nextpdf/proPrzegląd koncepcyjny
Dział zatytułowany „Przegląd koncepcyjny”ISO 19005-4:2020 opiera się na ISO 32000-2:2020 (PDF 2.0), podczas gdy PDF/A-2 i PDF/A-3 opierają się na ISO 32000-1:2008 (PDF 1.7). NextPDF odzwierciedla tę różnicę pochodzenia w ConformanceMode::requiresPdf17(). Metoda zwraca false dla każdego wariantu PDF/A-4 oraz true dla PDF/A-2 i PDF/A-3.
PDF/A-4 definiuje trzy warianty zgodności. Profil bazowy nie używa litery pdfa:conformance. PDF/A-4e (załącznik B, treści inżynierskie / 3D) ustawia pdfa:conformance = E. PDF/A-4f (załącznik A, pliki osadzone) ustawia pdfa:conformance = F. ISO 19005-4:2020 §6.7.3 określa schemat identyfikacji PDF/A w przestrzeni nazw Association for Intelligent Information Management (AIIM). Wskazuje on, że plik niezgodny ani z PDF/A-4e, ani z PDF/A-4f nie zawiera wpisu pdfa:conformance. NextPDF dokładnie odzwierciedla to zachowanie w ConformanceMode::pdfaConformanceLetter(): PdfA4 zwraca pusty ciąg znaków, PdfA4e zwraca E, PdfA4f zwraca F.
Kluczową granicą między edycjami jest tworzenie pliku PDF/A-4. Słownik OutputIntent, osadzony profil International Color Consortium (ICC), schemat rozszerzeń Extensible Metadata Platform (XMP), gwarancje tworzenia podzbiorów czcionek oraz zakaz szyfrowania są zaimplementowane w komponencie Enterprise PdfAManager. Komponent Enterprise PdfAManager jest częścią rozszerzenia nextpdf/pro. W instalacji zawierającej tylko Core Document::enablePdfA() zgłasza InvalidConfigException, ponieważ funkcja security.pdfa nie jest zarejestrowana. Gotowy do uruchomienia przykład (examples/32-pdfa4-icc.php) ilustruje to: sprawdza rejestr funkcji i przechodzi w tryb degradacji z czytelnym komunikatem zamiast śladu stosu.
Dlatego w samym Core powierzchnia PDF/A-4 jest wyłącznie dyskryminatorem. NextPDF rejestruje, który wariant PDF/A-4 deklaruje dokument. NextPDF emituje znaczniki pdfaid:part = 4 / pdfa:conformance zdefiniowane przez schemat. Utworzenie kompletnego pliku PDF/A-4 — oraz sprawdzenie jego zgodności — to odrębne kroki. Pierwszy krok wymaga nextpdf/pro. Drugi krok wymaga veraPDF.
Powierzchnia API
Dział zatytułowany „Powierzchnia API”| Powierzchnia | Edycja | Co udostępnia |
|---|---|---|
ConformanceMode::PdfA4 / PdfA4e / PdfA4f | core | Dyskryminator wariantu |
ConformanceMode::pdfaPart() → 4 | core | Numer części ISO 19005 |
ConformanceMode::pdfaConformanceLetter() → '' / 'E' / 'F' | core | Litera zgodności zgodnie z §6.7.3 |
ConformanceMode::requiresPdf17() → false | core | Bramka pochodzenia PDF 2.0 |
Document::enablePdfA() | pro | Tworzenie OutputIntent + ICC + XMP; w Core zgłasza InvalidConfigException |
Przykład kodu — szybki start
Dział zatytułowany „Przykład kodu — szybki start”<?php
declare(strict_types=1);
use NextPDF\Conformance\ConformanceMode;
// Core: introspect the declared PDF/A-4f contract.$mode = ConformanceMode::PdfA4f;$mode->pdfaPart(); // 4$mode->pdfaConformanceLetter(); // 'F' (ISO 19005-4:2020 §6.7.3 / Annex A)$mode->requiresPdf17(); // false (PDF/A-4 is PDF 2.0 lineage)Przykład kodu — produkcja
Dział zatytułowany „Przykład kodu — produkcja”<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Exception\InvalidConfigException;use NextPDF\Support\CapabilityRegistry;
// PDF/A-4 file authoring requires the Premium extension. Probe first so a// Core-only install gets a clear rationale, not a stack trace.$registry = CapabilityRegistry::getInstance();if (!$registry->get('security.pdfa')->isAvailable()) { throw new InvalidConfigException( configKey: 'security.pdfa', givenValue: 'Core-only install', expectedType: 'nextpdf/pro extension (Enterprise PdfAManager)', );}
$doc = Document::createStandalone();$doc->enablePdfA(); // Emits OutputIntent + ICC + pdfaid XMP (Premium).// … write content …$doc->save(__DIR__ . '/out/archive-a4.pdf');
// The file now CARRIES PDF/A-4 structures. Conformance is still unproven// until veraPDF asserts it://// verapdf --flavour 4 out/archive-a4.pdfPrzypadki brzegowe i pułapki
Dział zatytułowany „Przypadki brzegowe i pułapki”- Core nie może utworzyć pliku PDF/A-4. W Core
enablePdfA()zgłasza wyjątek. Core udostępnia jedynie dyskryminator i znaczniki XMP. - Bazowy PDF/A-4 nie emituje
pdfa:conformance. Zgodnie z ISO 19005-4:2020 §6.7.3 tylko PDF/A-4e i PDF/A-4f ustawiają literę.ConformanceMode::PdfA4z założenia zwraca pusty ciąg znaków. - Pochodzenie PDF 2.0, a nie PDF 1.7. Częstym błędem jest ponowne użycie potoku PDF/A-3, który oczekuje
%PDF-1.7. PDF/A-4 to PDF 2.0;requiresPdf17()zwracafalsedla wszystkich wariantów PDF/A-4. - Walidacja ICC należy do Premium. Walidacja ICC OutputIntent zgodnie z ISO 19005-4:2020 §6.2.2 (sygnatura
acsp, tablica znaczników, punkt bieli D50) jest obsługiwana przez komponent EnterprisePdfAManager, a nie przez Core. - Biblioteka nie certyfikuje pliku. Ustawienie
PdfA4fi emitowanie znaczników nie oznacza, że wynik jest prawidłowym plikiem PDF/A-4f. Zwaliduj za pomocą veraPDF.
Wydajność
Dział zatytułowany „Wydajność”Powierzchnia PDF/A-4 w Core to czysta introspekcja typów wartościowych: dopasowanie match na wyliczeniu, O(1) i brak alokacji. Ścieżka tworzenia w Premium dodaje pakiet OutputIntent i ICC podczas zapisu. Koszt wynika z rozmiaru osadzonego profilu i jest obsługiwany w ramach budżetu zapisu. Walidacja veraPDF przebiega poza główną ścieżką, a nie podczas generowania.
Uwagi dotyczące bezpieczeństwa
Dział zatytułowany „Uwagi dotyczące bezpieczeństwa”PDF/A-4 zakazuje szyfrowania. Komponent Enterprise PdfAManager egzekwuje niezmiennik zakazu szyfrowania i porządkuje go względem enablePdfA(), tak aby kod wywołujący nie mógł przypadkowo połączyć Advanced Encryption Standard in Galois/Counter Mode (AES-GCM) z trybem archiwalnym. Zabezpieczenie wyprzedzające w HasSecurity::enablePdfA() w Core odrzuca nieobsługiwaną kombinację, zanim zostaną zapisane jakiekolwiek bajty. Szczegóły dotyczące potoku archiwalnego znajdziesz w modelu zagrożeń projektu.
Zgodność
Dział zatytułowany „Zgodność”Ta strona jest mapowaniem funkcji, a nie deklaracją zgodności.
| Obszar ISO 19005-4:2020 | Klauzula | Zakres pokrycia NextPDF | Status |
|---|---|---|---|
| Schemat identyfikacji wariantu | §6.7.3 | ConformanceMode emituje pdfaid:part = 4 oraz literę pdfa:conformance | Zadeklarowane (Core; testy jednostkowe w tests/Unit/Conformance/) |
| Bramka pochodzenia PDF 2.0 | §6.7.3 / bazowy | requiresPdf17() zwraca false dla wszystkich przypadków PDF/A-4 | Zweryfikowane (testy jednostkowe) |
| OutputIntent + osadzony ICC | §6.2.2 | Enterprise PdfAManager (nextpdf/pro) | Tylko Premium (nie Core) |
| Schemat rozszerzeń XMP, tworzenie podzbiorów czcionek, zakaz szyfrowania | §6 / załączniki A/B | Enterprise PdfAManager (nextpdf/pro) | Tylko Premium (nie Core) |
| Stwierdzenie zgodności | Klauzula 5 | Nie wykonywane przez NextPDF — veraPDF | Wyraźny brak pokrycia |
Obsługa to nie zgodność — ta strona celowo rozdziela te dwa pojęcia. (a) NextPDF Core emituje struktury, które ISO 19005-4:2020 §6.7.3 definiuje dla identyfikacji wariantu; jest to implementacja potwierdzona przez tests/Unit/Conformance/ConformanceModePdfAVariantTest.php (test przechodzący). (b) Zgodność pliku z PDF/A-4 jest odrębnym stwierdzeniem, którego może dokonać wyłącznie walidator, zgodnie z klauzulą 5 ISO 19005-4:2020. Klauzula 5 stanowi, że właściwego stwierdzenia zgodności z wymaganiami normatywnymi dokonuje narzędzie sprawdzające. NextPDF formułuje stwierdzenie (a). NextPDF nie formułuje stwierdzenia (b). Zwaliduj za pomocą veraPDF (verapdf --flavour 4 … lub php oracle/run.php dla mechanizmu oracle — który uruchamia się tylko wtedy, gdy obecny jest plik binarny veraPDF, jest to bramka włączana opcjonalnie).
Sformułowania „PDF/A-4 compliant”, „fully conformant” i „PDF/A-4 certified” są celowo nieobecne na tej stronie. NextPDF emituje struktury istotne dla PDF/A-4; nie gwarantuje zgodnego pliku.
Cytaty są parafrazami z korpusu zgodności NextPDF. Pełne 64-znakowe skróty reference_id zapisano w nagłówku frontmatter strony oraz w docs/public/modules/core/_normative-evidence-conf.md.
Zobacz także
Dział zatytułowany „Zobacz także”- Moduł Conformance — obsługa
ConformanceModei oracle veraPDF - Moduł Compliance — walidator PDF/R-1 i gramatyka Arlington
- Mapowanie specyfikacji PDF/UA-2 — odpowiednik profilu dostępności