Przejdź do głównej zawartości
getnextpdf.com

Pro edycja

Compliance — pełna dokumentacja referencyjna

Moduł Compliance łączy trzy niezależne powierzchnie w NextPDF\Pro\Compliance:

  • Raportowanie znaczników języka — fasada ścisłej polityki /Lang PDF/UA-2 oraz ustrukturyzowany reporter zdarzeń zgodności w kształcie PSR-3.
  • Obsługa e-faktur — walidacja Factur-X 1.08 / ZUGFeRD 2.4 względem modelu semantycznego EN 16931 oraz emisja hybrydowego PDF/A-3.
  • Proweniencja — osadzanie i wyodrębnianie dostarczonych przez wywołującego magazynów manifestów C2PA przez utwardzony na ataki parser JUMBF; synteza twierdzeń pozostaje bramkowana jako podgląd.

Moduł raportuje to, co sprawdza. Nie certyfikuje dokumentów i nie wykonuje podpisywania kryptograficznego.

Ta funkcja jest dostarczana w NextPDF Pro (nextpdf/pro) i aktywuje się przy kopercie licencyjnej poziomu Pro. Wdrożenie bez tego uprawnienia nie ładuje klas tej funkcji. Porównaj edycje i uzyskaj licencję.

Nie istnieje flaga licencyjna dla poszczególnych funkcji. Jest to funkcja edycji Pro. Eksperymentalny konstruktor twierdzeń C2PA dodatkowo wymaga jawnego włączenia w środowisku (zobacz Przypadki brzegowe i tryby awarii).

Okno terminala
composer require nextpdf/pro:^3
SymbolParametryDomyślne zachowanieZwracaZgłasza lub kończy się błędemUwagi
LangComplianceReporter::warn() / ::error()string $tag, string $reason, ?string $clauseReference = nullEmituje jeden ustrukturyzowany rekord JSON na każde zdarzenie znacznika języka przez logger PSR-3voidJsonException, jeśli kodowanie rekordu do JSON się nie powiedziewarn = odrzucenie w trybie lax; error = odrzucenie w trybie strict
LangComplianceReporter::reportException()InvalidBcp47TagException $exception, string $severity = 'error'Wyodrębnia znacznik i powód z wyjątku; deleguje do warn() lub error()voidJak wyżejŚcieżka wygody
LangComplianceReporter::buildRecord()string $severity, string $tag, string $reason, ?string $clauseReference = nullBuduje tablicę rekordu bez logowaniaarrayNie zgłasza wyjątkuDo niestandardowych ujść, np. podsumowań JSON per plik
ConformancePolicy::default()?LoggerInterface $logger = nullŚcisła polityka UA-2: źle sformułowane lub niezarejestrowane znaczniki /Lang są odrzucaneselfNie zgłasza wyjątkuDomyślne ustawienie v5.0 jest ścisłe
ConformancePolicy::fromCore()CoreConformancePolicy $core, ?LoggerInterface $logger = nullOpakowuje istniejącą politykę Core bez zmian; żadna oś nie jest przełączanaselfNie zgłasza wyjątkuPreferuj default() dla ścisłej postawy
ConformancePolicy::withStrictUa2()bool $enabledZwraca kopię z ustawioną osią ścisłą; wyłączenie emituje notice PSR-3selfNie zgłasza wyjątkuPrzestarzała rezygnacja; cel usunięcia 6.0.0
ConformancePolicy::isStrictUa2() / ::mode()Odczytuje bazową politykę Corebool / ConformanceModeNie zgłasza wyjątku
EInvoiceValidator::validate()string $pdfPathPełny potok: kontrola opakowania PDF/A-3, wyodrębnienie załącznika, wykrycie profilu, reguły EN 16931, SchematronEInvoiceValidationResultPodklasa EInvoiceException przy błędzie we/wy, źle sformułowanej strukturze PDF lub awarii narzędziZamrożony interfejs SPI; poprawnie sformułowany plik PDF niebędący e-fakturą zwraca wynik, nigdy nie zgłasza wyjątku
EInvoiceXmlValidator::validate()string $xmlPayload, ValidatorContext $contextWstępna kontrola strukturalna plus głęboki semantyczny korpus reguł EN 16931 na ładunku CIIkontraktowy ValidationResultNie zgłasza wyjątku dla niepoprawnego wejścia; odrzucenie ujawnia się jako nieudany wynik z ustaleniamiKonkretny walidator międzypoziomowy; wejście bramkowane przez XmlGuard
EInvoiceValidationResult::isValid()Prawda tylko wtedy, gdy opakowanie, specyfikacja załącznika, profil i składnia są spełnione oraz nie istnieje naruszenie FATALboolNie zgłasza wyjątkuSama pusta lista naruszeń nie oznacza poprawności
EInvoiceValidationResult::notAnEInvoice()Deterministyczny wynik: wszystko null, wszystko falseselfNie zgłasza wyjątkuFabryka dla przypadku „nie jest fakturą hybrydową”
EInvoiceProfileenum oparty na łańcuchachPrzypadki MINIMUM, BASIC_WL, BASIC, EN16931, EXTENDED, oparte na URN-ach BT-24isEn16931Conformant() zwraca false dla MINIMUM i BASIC_WL
EInvoiceSyntaxenum oparty na łańcuchachPrzypadki UN_CEFACT_CII, UBL_INVOICE, UBL_CREDIT_NOTETylko CII jest isFacturXEligible(); UBL jest tylko dla walidatora
BusinessRuleViolationstring $ruleId, BusinessRuleSeverity $severity, string $message, ?string $xpath = null, ?string $ramPath = nullNiezmienny DTO naruszeniaRodziny identyfikatorów reguł BR-, BR-CO-, BR-CL-, BR-DEC-, BR-FXEXT-
BusinessRuleSeverityenum oparty na łańcuchachFATAL unieważnia fakturę; WARNING sygnalizuje problem jakościowyOdzwierciedla poziomy Schematron EN 16931
FacturXEmbedder::embed()zobacz blok sygnaturyDołącza strumień pliku osadzonego, filespec i XMP do źródła PDF/A; przepisuje xrefvoidEInvoiceException przy źle sformułowanym XML, nieczytelnym źródle, brakującym katalogu, źródle ze strumieniem obiektów lub strumieniem xref, lub niepowodzeniu zapisu wyjściaPlik źródłowy pozostaje nienaruszony
FacturXEmbedderOptions::default()/AFRelationship /Alternative, nazwa pliku factur-x.xml, typ INVOICE, wersja 1.0selfNie zgłasza wyjątkuDomyślne wartości spełniają niemiecki mandat i pozostają akceptowane we Francji
FacturXEmbedderOptions::withRelationship() / ::withFilename()stringZwraca kopię z zastosowanym nadpisaniemselfInvalidArgumentException poza zbiorami akceptacjiRelacje: Source, Data, Alternative; nazwy plików obejmują zugferd-invoice.xml i xrechnung.xml
FacturXEmbedderOptions::withDocumentType()string $documentTypeZwraca kopię z nadpisaniem typu dokumentu XMPselfNie zgłasza wyjątkuWartości nie są defensywnie wyliczane
FacturXContractEmbedder::embed()string $pdfBytes, string $xmlPayload, EmbedderOptions $optionsAdapter bajt-wejście, bajt-wyjście nad FacturXEmbedder przez krótko żyjące pliki tymczasowestringEInvoiceException; profil XRECHNUNG jest odrzucany jako dostępny tylko w EnterpriseMiędzypoziomowa implementacja EmbedderInterface
C2paManifestEmbedder::embed()string $pdfBytes, ManifestStore $storeOsadza bajtową serializację magazynu w lokalizacji profilustringC2paException przy dowolnym niepowodzeniu osadzaniaZamrożony interfejs SPI; tylko bajty, bez we/wy
C2paManifestEmbedder::extract()string $pdfBytesParsuje osadzony magazyn przez utwardzony parser JUMBFManifestStore|nullPodklasa C2paException, gdy magazyn jest obecny, ale narusza limit utwardzeniaNull sygnalizuje brak; brak nigdy nie zgłasza wyjątku
ManifestStore::fromBoxes() / ::empty()list<JumbfBox> / —Buduje niezmienny obiekt wartości magazynuselfNie zgłasza wyjątkuKolejność ramek jest istotna dla równości w cyklu round-trip
ManifestStore::toBytes() / ::isEmpty() / ::size()Serializuje ramki główne; pusty magazyn serializuje się do pustego łańcuchastring / bool / intNie zgłasza wyjątku
JumbfBoxParser::parse()string $bytesParsuje ramki JUMBF na poziomie głównym przy twardych limitachlist<JumbfBox>MalformedJumbfException, JumbfBombException, JumbfCycleDetectedException, JumbfDepthExceededExceptionLimity: głębokość 8, 64 MiB na ramkę, 128 MiB łącznie, MAX_CHILDREN_PER_SUPERBOX 4096
JumbfBox::superbox() / ::leaf()string $tbox, …Buduje zweryfikowaną ramkę; toBytes() przechodzi round-trip przez parserselfMalformedJumbfException, gdy TBox nie ma dokładnie 4 bajtów
C2paCapabilityStatus::current() / ::summary()Raportuje dojrzałość możliwości C2PA, obecnie preview-draftself / stringNie zgłasza wyjątkuSprawdzalny maszynowo znacznik podglądu
Feature::PREVIEW_C2PA_DRAFT->isEnabled()Odczytuje środowisko procesu przy każdym wywołaniu; włącza tylko dosłowna wartość '1'boolNie zgłasza wyjątkuZmienna środowiskowa NEXTPDF_FEATURE_PREVIEW_C2PA_DRAFT
ExperimentalC2paEmbedder::buildManifestStore()string $sourceBytes, string $producerBuduje magazyn manifestów przypięty do wersji roboczej z jednym twierdzeniem powiązania skrótu SHA-256ManifestStoreKonstruktor zgłasza LogicException, gdy flaga podglądu jest wyłączonaPodgląd; format transmisji przypięty do migawki wersji roboczej; brak emisji podpisu twierdzenia

Sygnatury punktów wejścia, dosłownie:

public static function default(?LoggerInterface $logger = null): self
public function withStrictUa2(bool $enabled): self
public function isStrictUa2(): bool
public function validate(string $pdfPath): EInvoiceValidationResult
public function embed(
string $sourcePdfPath,
string $xml,
EInvoiceProfile $profile,
string $outputPdfPath,
?FacturXEmbedderOptions $options = null,
): void
public function embed(string $pdfBytes, ManifestStore $store): string
public function extract(string $pdfBytes): ?ManifestStore

Raportowanie znaczników języka. LangComplianceReporter emituje jeden ustrukturyzowany rekord JSON na każde zdarzenie znacznika języka PDF/UA-2. Każdy rekord niesie stały dyskryminator zdarzenia, wagę (warn dla odrzucenia w trybie lax, error dla odrzucenia w trybie strict), wadliwy znacznik dosłownie, czytelny maszynowo powód, sparsowane składowe znacznika (lub null, gdy znacznik nie spełnia gramatyki kształtu RFC 5646), odniesienie do klauzuli ISO 14289-2 §8.4.4 oraz znacznik czasu UTC z mikrosekundami. JSON podróżuje jako treść komunikatu PSR-3; ujścia niżej w potoku parsują pole komunikatu bezpośrednio. ConformancePolicy to fasada Premium nad polityką zgodności Core. Jej ustawienie domyślne stosuje ścisłą obsługę języka UA-2 i odrzuca źle sformułowany lub niezarejestrowany znacznik docierający do /Lang. Pomocnik rezygnacji withStrictUa2(false) przywraca dotychczasowe zachowanie lax i loguje powiadomienie PSR-3, gdy efektywna wartość faktycznie się zmienia. NextPDF oznacza ten pomocnik jako przestarzały od v5.0 z celem usunięcia 6.0.0. Aby migrować: zaudytuj korpus pod kątem źle sformułowanych wartości /Lang za pomocą composer pdfua2:audit-lang-tags <pdf-or-dir>, popraw je, a następnie usuń wywołanie rezygnacji.

Obsługa e-faktur. EInvoiceValidator to zamrożony kontrakt SPI dla walidacji hybrydowego PDF: kontrola opakowania PDF/A-3, wyodrębnienie załącznika /AF, wykrycie profilu z identyfikatora specyfikacji BT-24, silnik reguł biznesowych EN 16931 oraz przebieg Schematron. Poprawnie sformułowany plik PDF inny niż Factur-X zwraca EInvoiceValidationResult::notAnEInvoice() zamiast zgłaszać wyjątek; tylko błędy we/wy, źle sformułowana struktura PDF lub awarie narzędzi podnoszą podklasę EInvoiceException. EInvoiceXmlValidator to konkretny międzypoziomowy walidator XML: bramkuje wejście przez Core XmlGuard, uruchamia wstępną kontrolę strukturalną oraz głęboki semantyczny korpus reguł EN 16931 i zawodzi bezpiecznie — błędy silnika ujawniają się jako ustalenia błędów, nigdy jako ciche przejścia. FacturXEmbedder przekształca źródło PDF/A w hybrydowy PDF/A-3: dołącza strumień pliku osadzonego, filespec z konfigurowalnym /AFRelationship oraz pakiet rozszerzenia XMP Factur-X, a następnie przepisuje klasyczną tablicę odniesień krzyżowych. Zarówno tablica /AF katalogu, jak i drzewo nazw /Names /EmbeddedFiles odwołują się do załącznika, więc czytniki dziedziczące ZUGFeRD go rozwiązują.

Proweniencja. C2paManifestEmbedder osadza dostarczony przez wywołującego magazyn manifestów C2PA w ciągu bajtów PDF lub jeden wyodrębnia. ManifestStore to niezmienny obiekt wartości przekraczający granicę. Spoina jest tylko bajtowa i neutralna wobec dostawcy: nie syntetyzuje twierdzeń, nie pobiera odniesień URI ani nie rozwiązuje powiązań skrótów oraz nie wykonuje żadnych operacji we/wy sieci ani systemu plików. extract() zwraca null przy braku i jest tani na plikach PDF bez magazynu. Każde niepuste wyodrębnienie przeszło już limity utwardzenia JumbfBoxParser.

Ten moduł raportuje to, co sprawdza. Nie certyfikuje dokumentu, nie czyni go prawnie wiążącym ani nie gwarantuje, że jakikolwiek wynik spełnia regulację. Walidator e-faktur nie jest walidatorem organu podatkowego i wyklucza rozszerzenia krajowe (na przykład włoskie SDI, francuskie Chorus Pro, niemieckie XRechnung). Jak stanowi EN 16931-1, wystawca faktury pozostaje odpowiedzialny za spełnienie reguł odpowiednich przepisów. Obsługa standardu nie jest zgodnością z nim. Skonsultuj się ze swoim zespołem ds. zgodności w sprawie wystarczalności regulacyjnej.

  • Poprawnie sformułowany plik PDF inny niż Factur-X zwraca wynik „nie jest e-fakturą”; nie zgłasza wyjątku.
  • Pusta lista naruszeń reguł biznesowych sama w sobie nie oznacza, że dokument jest poprawny; obowiązują też kontrole opakowania i załącznika.
  • FacturXEmbedder zawodzi bezpiecznie na źródłach używających skompresowanych strumieni obiektów (/Type /ObjStm) lub strumieni odniesień krzyżowych (/Type /XRef, hybrydowy /XRefStm). Najpierw zapisz takie źródła ponownie z klasyczną tablicą odniesień krzyżowych.
  • Ładunki XML są bramkowane przez Core XmlGuard: deklaracje DOCTYPE lub encji, nadmiernie duże wejście oraz niepoprawny UTF-8 są odrzucane z EInvoiceException na ścieżce osadzania lub jako nieudany wynik na ścieżce walidatora.
  • FacturXContractEmbedder odrzuca profil XRECHNUNG głośno zamiast po cichu go degradować; emisja XRechnung to funkcja Enterprise.
  • C2paManifestEmbedder::extract() odróżnia brak (null) od zniekształcenia (podklasa C2paException nazywająca naruszony niezmiennik: źle sformułowana struktura, bomba rozmiaru lub liczby, cykl przesunięć, głębokość zagnieżdżenia).
  • Konstrukcja ExperimentalC2paEmbedder zgłasza LogicException, chyba że flaga środowiskowa podglądu jest równa '1'. Jego format transmisji jest przypięty do migawki wersji roboczej C2PA i może się zmienić bez powiadomienia; nie emituje podpisu twierdzenia. Ta funkcja pozostaje podglądem, dopóki profil C2PA PDF się nie zamrozi.
  • Rezygnacja na rzecz lax dla ścisłego UA-2 jest przestarzała; migruj do ścisłego ustawienia domyślnego (zobacz Kontrakt zachowania).
  • Ten moduł nie wykonuje podpisywania kryptograficznego. Podpisywanie twierdzeń C2PA i powiernictwo kluczy są poza zakresem; zobacz moduł Security w zakresie zachowania podpisywania w trybie FIPS.
ZachowanieOdniesienieStatus
Deklaracja języka naturalnego (/Lang)ISO 14289-2:2024 §8.4.4Sprawdzane / raportowane
Model semantyczny faktury podstawowejEN 16931-1:2026Sprawdzane (wystawca pozostaje odpowiedzialny)
Pliki powiązane / strumienie plików osadzonychISO 32000-2:2020 §14.13.2Emitowane (/AF, /EF, /Params)
Relacja załącznika i reguły konteneraFactur-X 1.08 §3.1, §6.2Emitowane / sprawdzane (domyślnie /AFRelationship /Alternative)
Magazyn manifestów C2PA / JUMBFC2PA 2.1 §11.1Osadzanie / wyodrębnianie obsługiwane; synteza twierdzeń w podglądzie

To rejestruje specyfikacje, względem których zbudowano moduł, oraz to, co sprawdza lub emituje. Nie jest to deklaracja certyfikacji ani wystarczalności regulacyjnej. NextPDF nie posiada certyfikacji dla tych standardów.

  • Kształt rekordu reportera jest stabilnym kontraktem; reguły alertowania niżej w potoku mogą przypinać się do stałego dyskryminatora zdarzenia.
  • Wyłączenie ścisłego UA-2 emituje widoczne w telemetrii powiadomienie o przestarzałości tylko wtedy, gdy efektywna wartość się zmienia; ponowne potwierdzenie bieżącej wartości jest ciche.
  • Embedder Factur-X zachowuje bajty źródłowe dosłownie i dołącza nowe obiekty; dąży do zachowania zgodności PDF/A-3, ale nie waliduje ponownie. Przepuść wyjście przez zewnętrzny walidator PDF/A dla twardego poświadczenia.
  • Spoina C2PA zamraża pięć niezmienników: brak importów firm trzecich, kontrakt tylko bajtowy, brak we/wy, wyodrębnianie null przy braku oraz brak syntezy twierdzeń w warstwie stabilnej.
  • Limity JumbfBoxParser są publicznymi stałymi; wymiaruj akceptowane wejścia względem nich zamiast ponownie wyprowadzać limity.

Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz obsługiwaną publiczną powierzchnię API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków oraz prefiksy zgłoszeń są poza zakresem.