Przejdź do głównej zawartości

Konfiguracja pakietu NextPDF Symfony

Całe zachowanie pakietu konfigurujesz pod kluczem głównym nextpdf w pliku config/packages/nextpdf.yaml. Każdy klucz ma wartość domyślną, więc ustawiasz tylko wartości, które chcesz zmienić. Ta strona dokładnie odzwierciedla Configuration.php.

NextPDF\Symfony\DependencyInjection\Configuration definiuje schemat. Nieprawidłowe wartości powodują podczas budowania kontenera błąd zgłaszany jako wyjątek Symfony InvalidConfigurationException.

KluczTypDomyślnieWalidacja
page_formatenumA4jedna z wartości A4, A3, A5, Letter, Legal, Tabloid
orientationenumPjedna z wartości P, L
unitenummmjedna z wartości pt, mm, cm, in
pdfaskalarnulljedna z wartości null, 4, 4e, 4f
fonts_pathskalar%kernel.project_dir%/resources/fonts
cache_pathskalar%kernel.cache_dir%/nextpdf
image_cache_mbliczba całkowita50minimum 0
font_cache_lockingwartość logicznatrue
preload_fontslista łańcuchów znaków[]
KluczTypDomyślnie
icc_profile.rgbskalarnull
icc_profile.cmykskalarnull

Dotyczy każdego dokumentu tworzonego przez PdfFactory.

KluczTypDomyślnie
defaults.creatorskalarNextPDF
defaults.authorskalar(puste)
defaults.languageskalaren
defaults.margin_topliczba zmiennoprzecinkowa10.0
defaults.margin_rightliczba zmiennoprzecinkowa10.0
defaults.margin_bottomliczba zmiennoprzecinkowa10.0
defaults.margin_leftliczba zmiennoprzecinkowa10.0
defaults.font_familyskalardejavusans
defaults.font_sizeliczba zmiennoprzecinkowa12.0
defaults.trim_boxzmiennanull
defaults.bleed_boxzmiennanull

PdfFactory odczytuje creator, author oraz language z tej sekcji i stosuje je do każdego nowego dokumentu. Pakiet przechowuje pozostałe klucze jako parametry kontenera używane przez silnik.

Ma zastosowanie tylko wtedy, gdy nextpdf/artisan jest zainstalowany i wykryty.

KluczTypDomyślnie
artisan.chrome_binaryskalarnull
artisan.render_timeoutliczba całkowita30
artisan.default_cssskalar(puste)
artisan.no_sandboxwartość logicznafalse
artisan.max_html_sizeliczba całkowita5000000

Ma zastosowanie tylko wtedy, gdy nextpdf/premium jest zainstalowany. Gdy pakiet i poziom Pro są obecne, obsługiwaną konfiguracją podpisywania jest profil bazowy B-B. Węzeł level przyjmuje poniższe wartości tekstowe, aby zachować zgodność schematu z szerszą rodziną konfiguracji NextPDF. Ten pakiet udostępnia podpisywanie B-B. Profile wykraczające poza B-B są opisane oddzielnie w dokumentacji NextPDF Premium i nie są tutaj deklarowane.

KluczTypDomyślnieWalidacja
signature.enabledwartość logicznafalse
signature.certificateskalarnull
signature.private_keyskalarnull
signature.passwordskalar(puste)
signature.extra_certslista łańcuchów znaków[]
signature.levelenumB-Bakceptowany zbiór: B-B, B-T, B-LT, B-LTA (B-B jest dostarczane; B-T/B-LT/B-LTA to wartości zgodności schematu, a nie dostarczona funkcja Pro)

Compiler pass rejestruje usługę podpisującą tylko wtedy, gdy signature.enabled ma wartość true oraz signature.certificate jest ustawiony; w przeciwnym razie sekcja pozostaje nieaktywna.

Konfiguracja klienta urzędu znacznika czasu (Time Stamp Authority, TSA), używana przez podpisywanie w Pro, gdy jest skonfigurowana.

KluczTypDomyślnie
tsa.urlskalarnull
tsa.usernameskalar(puste)
tsa.passwordskalar(puste)
tsa.certskalarnull
tsa.keyskalarnull
tsa.timeoutliczba całkowita30
tsa.allow_insecure_httpwartość logicznafalse
tsa.pinned_public_keyslista łańcuchów znaków[]
tsa.warn_on_key_rotationwartość logicznatrue

Pakiet rejestruje usługę klienta TSA tylko wtedy, gdy tsa.url jest ustawiony.

KluczTypDomyślnie
ocsp_cache.enabledwartość logicznatrue
ocsp_cache.ttlliczba całkowita86400
ocsp_cache.directoryskalarnull

Ustawienia generowania asynchronicznego, używane wtedy, gdy symfony/messenger jest zainstalowany.

KluczTypDomyślnie
messenger.transportskalarasync
messenger.timeoutliczba całkowita120
messenger.retriesliczba całkowita3

Plik konfiguracyjny pokazujący każdą sekcję wraz z jej wartościami domyślnymi:

nextpdf:
page_format: A4
orientation: P
unit: mm
pdfa: ~
fonts_path: '%kernel.project_dir%/resources/fonts'
cache_path: '%kernel.cache_dir%/nextpdf'
image_cache_mb: 50
font_cache_locking: true
preload_fonts: []
icc_profile:
rgb: ~
cmyk: ~
defaults:
creator: NextPDF
author: ''
language: en
margin_top: 10.0
margin_right: 10.0
margin_bottom: 10.0
margin_left: 10.0
font_family: dejavusans
font_size: 12.0
trim_box: ~
bleed_box: ~
artisan:
chrome_binary: ~
render_timeout: 30
default_css: ''
no_sandbox: false
max_html_size: 5000000
signature:
enabled: false
certificate: ~
private_key: ~
password: ''
extra_certs: []
level: B-B
tsa:
url: ~
username: ''
password: ''
cert: ~
key: ~
timeout: 30
allow_insecure_http: false
pinned_public_keys: []
warn_on_key_rotation: true
ocsp_cache:
enabled: true
ttl: 86400
directory: ~
messenger:
transport: async
timeout: 120
retries: 3

Pakiet ładuje swoje definicje usług z pliku config/services.php. Poniższa tabela dokładnie odzwierciedla zawartość tego pliku.

Identyfikator usługiWspółdzielonaPublicznaUwagi
NextPDF\Typography\FontRegistrytaktworzony z nextpdf.fonts_path; opcjonalny rejestrator zgodny z PHP Standard Recommendation 3 (PSR-3)
NextPDF\Contracts\FontRegistryInterface(alias)takalias dla FontRegistry
NextPDF\Graphics\ImageRegistrytakpamięć podręczna o ograniczonym rozmiarze typu least-recently-used (LRU); oznaczona tagiem kernel.reset (reset)
NextPDF\Core\DocumentFactorytakwspółdzieli oba rejestry
NextPDF\Contracts\DocumentFactoryInterface(alias)takalias dla DocumentFactory
NextPDF\Symfony\Service\PdfFactorytaktakodczytuje parametry defaults, pdfa oraz artisan
NextPDF\Contracts\PdfDocumentInterfacenietakfabryka [PdfFactory, create]
NextPDF\Core\Document(alias)alias dla PdfDocumentInterface
nextpdf.document(alias)takalias dla PdfDocumentInterface
NextPDF\Symfony\Http\PdfResponsetakbezstanowy pomocnik

Pakiet rejestruje również wiązania kontraktów EInvoice (EmbedderInterface, ValidatorInterface, ProfileInterface, SchematronRunnerInterface) tylko wtedy, gdy istnieją odpowiednie klasy implementacji Premium. Każda usługa jest niewspółdzielona, więc kod wywołujący otrzymuje nową instancję. Stan parsera z pojedynczego wywołania nigdy nie wycieka pomiędzy żądaniami.

nextpdf.document (oraz jego aliasy) jest niewspółdzielony: każde pobranie z kontenera zwraca odrębny dokument. Zgodnie z PHP Standard Recommendation 11 (PSR-11) kontener może zwrócić inną wartość przy kolejnych wywołaniach get() z tym samym identyfikatorem; zobacz PSR-11 §1.1.2. Rejestr czcionek jest współdzielony i blokowany po rozgrzaniu. Strukturalne dane czcionek są parsowane raz na proces i nie mogą zostać zmienione w trakcie żądania.

Usługi FontRegistry oraz ImageRegistry przyjmują opcjonalny Psr\Log\LoggerInterface; Symfony wiąże go za pomocą nullOnInvalid(). Rejestrator pozostaje opcjonalną, wymienną zależnością zgodną z kontraktem rejestratora PSR-3.

PdfFactory, PdfResponse, interfejs fabryki dokumentów oraz interfejs rejestru czcionek są publiczne. Można je pobrać z kontenera albo wskazać jako typ w autowirowanych kontrolerach i usługach. Zalecanym punktem wejścia jest wstrzykiwanie przez konstruktor NextPDF\Symfony\Service\PdfFactory.

  • pdfa ustawione bez Pro — wartość jest przechowywana, ale ignorowana. PdfFactory stosuje format Portable Document Format/Archival (PDF/A) tylko wtedy, gdy rozszerzenie Pro zostanie wykryte podczas kompilacji.
  • image_cache_mb: 0 — prawidłowe; wyłącza pamięć podręczną LRU obrazów. Wartości ujemne są odrzucane podczas budowania kontenera.
  • signature.enabled: true bez signature.certificate — usługa podpisująca nie jest rejestrowana; konfiguracja celowo pozostaje nieaktywna bez zgłaszania błędu.
  • Symbole zastępcze %kernel.*% — wartości domyślne fonts_path oraz cache_path używają parametrów kontenera Symfony; nadpisuj ścieżkami bezwzględnymi tylko wtedy, gdy wymagana jest dosłowna ścieżka.

Każdy wiersz zawiera normatywne twierdzenie z tej strony, powiązane z pełnym 64-znakowym szesnastkowym reference_id z bramkowanego korpusu organizacji opracowującej standardy (standards development organization, SDO). Pochodzenie, w tym manifest korpusu i transport użyty do pobrania, znajduje się w pliku _sidecars/rag-citations.yaml.

SpecyfikacjaKlauzulareference_idTwierdzenie
PSR-11psr_11_container#1.1.2.p3.bget() może zwracać różne wartości przy każdym pobraniu
PSR-3psr_3_logger#x3.p17Opcjonalna zależność LoggerInterface

Sekcje signature i tsa mają zastosowanie tylko wtedy, gdy nextpdf/premium (Pro) jest zainstalowany. Ta opcjonalna funkcja Pro nie wymaga żadnych zmian w kodzie pakietu Core opisanego w tym dokumencie. Zobacz </get-license/?intent=symfony-pro>.

  • /integrations/symfony/install/ — zainstaluj i zarejestruj pakiet.
  • /integrations/symfony/overview/ — przejrzyj podsumowanie możliwości.
  • /integrations/symfony/production-usage/ — bezpieczeństwo procesów roboczych i wzorce asynchroniczne.
  • /integrations/symfony/boot-and-discovery/ — zobacz, jak konfiguracja jest ustalana podczas uruchamiania.