Zum Inhalt springen

NextPDF-Laravel-Paket konfigurieren

config/nextpdf.php wird mit php artisan vendor:publish --tag=nextpdf-config veröffentlicht. Jeder Schlüssel hat einen Fallback über eine Umgebungsvariable und einen fest codierten Standardwert. Diese Seite dokumentiert jeden Schlüssel exakt so, wie er in der config/nextpdf.php des Pakets steht.

Terminal-Fenster
php artisan vendor:publish --tag=nextpdf-config

Der Provider führt während register() außerdem die Paketstandards unter dem Konfigurationsschlüssel nextpdf zusammen. Nicht gesetzte Schlüssel greifen daher bereits vor dem Veröffentlichen auf die unten stehenden Werte zurück.

Die meisten Umgebungsvariablen akzeptieren entweder einen NEXTPDF_*-Namen oder einen veralteten TCPDF_*-Namen. Das veraltete Präfix wird während des in UPGRADE.md dokumentierten Übergangszeitraums unterstützt; neue Deployments sollten die Schreibweise NEXTPDF_* verwenden. Die Konfigurationsdatei löst Werte in dieser Reihenfolge auf: Umgebungsvariable → veröffentlichter Dateiwert → Paketstandard.

SchlüsselEnv (primär)StandardWirkung
page_formatNEXTPDF_PAGE_FORMATA4Standardseitenformat (A4, A3, A5, Letter, Legal, Tabloid)
orientationNEXTPDF_ORIENTATIONPHochformat (P) oder Querformat (L)
unitNEXTPDF_UNITmmMaßeinheit (pt, mm, cm, in)
defaults.creatorNEXTPDF_CREATORNextPDFMetadaten zum Dokumentersteller; werden auf die PdfDocumentInterface-Bindung angewendet
defaults.authorNEXTPDF_AUTHOR(leer)Autorenmetadaten; werden nur angewendet, wenn sie nicht leer sind
defaults.languageNEXTPDF_LANGenDokumentsprache; angewendet auf die Dokumentbindung
defaults.margin_top / _right / _bottom / _left10Standardränder
defaults.font_familydejavusansStandardschriftfamilie
defaults.font_size12Standardschriftgröße
defaults.trim_boxnullTrimBox [left, bottom, right, top] in Punkten oder null
defaults.bleed_boxnullBleedBox [left, bottom, right, top] in Punkten oder null

Der Provider wendet defaults.creator, defaults.language und (falls gesetzt) defaults.author auf jedes neu aufgelöste Dokument an. Der Zweig defaults.author wird übersprungen, wenn der Wert leer ist.

SchlüsselEnv (primär)StandardWirkung
pdfaNEXTPDF_PDFAnullPDF/A-Archivierungsstufe (null, 4, 4e, 4f). Ein Wert ungleich null aktiviert PDF/A auf der Dokumentbindung und erfordert nextpdf/premium
fonts_pathNEXTPDF_FONTS_PATHresource_path('fonts')Verzeichnis für zusätzliche TrueType-Schriften; steuert den Suchpfad der Schriftregistrierung
cache_pathNEXTPDF_CACHE_PATHstorage_path('framework/cache/tcpdf')Cache-Verzeichnis für geparste Schriften und temporäre Dateien
icc_profile.rgbNEXTPDF_ICC_PROFILE_RGBnullPfad zum RGB-ICC-Profil; erforderlich für PDF/A
icc_profile.cmykNEXTPDF_ICC_PROFILE_CMYKnullOptionales CMYK-ICC-Profil für Druckworkflows
font_cache_lockingNEXTPDF_FONT_CACHE_LOCKINGtrueVerwendet flock für den Schrift-Cache, um Beschädigungen zu verhindern, wenn mehrere Queue-Worker parallel schreiben

Wird pdfa auf einen Wert ungleich null gesetzt, ist die Premium-Stufe erforderlich. Ohne nextpdf/premium löst das Auflösen der Dokumentbindung mit gesetztem pdfa einen Class-not-found-Fehler für den PDF/A-Versionstyp aus. Diese Seite beschreibt das Premium-Archivierungsverhalten nicht; siehe die Premium- Dokumentation.

SchlüsselEnv (primär)StandardWirkung
preload_fonts[]Liste absoluter Schriftdateipfade, die beim Worker-Start geparst werden. Die Schriftregistrierung wird nach dem Warm-up gesperrt
image_cache_mbNEXTPDF_IMAGE_CACHE_MB50LRU-Image-Cache-Budget in MB. 0 deaktiviert das Caching. Auf Provider-Ebene wird keine Obergrenze erzwungen

Das Image-Cache-Budget hat keine vom Provider erzwungene Obergrenze. Wenden Sie ein Speicherlimit auf Container-Ebene oder php.inimemory_limit an, um es zu begrenzen. Die Konfigurationsdatei empfiehlt ein praktisches Maximum von 256 MB.

SchlüsselEnv (primär)StandardWirkung
signature.enabledNEXTPDF_SIGN_ENABLEDfalseBei false (oder leerem Zertifikat) ergibt sich für SignerInterface der Wert null
signature.certificateNEXTPDF_SIGN_CERTnullPfad zum Signaturzertifikat
signature.private_keyNEXTPDF_SIGN_KEYnullPfad zum privaten Schlüssel
signature.passwordNEXTPDF_SIGN_PASSWORD(leer)Schlüssel-Passphrase
signature.extra_certs[]Pfade zu Zwischen-CA-Zertifikaten
signature.levelNEXTPDF_SIGN_LEVELB-BPAdES-Baseline-Stufe, die an den Signierer übergeben wird

Das hier dokumentierte Core-Paket liefert keine konkrete Signierer-Implementierung; die Bindung SignerInterface löst zu null auf, bis nextpdf/premium einen Signierer bereitstellt. Mit Premium erzeugt level: B-B eine PAdES-B-B-Baseline-Signatur. Höhere PAdES-Baselines hängen von einer konfigurierten Zeitstempelstelle und den Premium-Fähigkeiten ab; diese Seite dokumentiert jene Stufen nicht.

SchlüsselEnv (primär)StandardWirkung
tsa.urlNEXTPDF_TSA_URLnullTSA-Endpunkt. Bei leerem Wert ergibt sich für TsaClient der Wert null
tsa.username / tsa.passwordNEXTPDF_TSA_USERNAME / _PASSWORD(leer)HTTP-Anmeldedaten für die TSA
tsa.cert / tsa.keyNEXTPDF_TSA_CERT / _KEYnullClient-Zertifikat/-Schlüssel für mTLS zur TSA
tsa.timeoutNEXTPDF_TSA_TIMEOUT30HTTP-Timeout in Sekunden für den PSR-18-Client
tsa.pinned_public_keys[]Base64-SHA-256-SPKI-Pins (RFC 7469). Leer deaktiviert das Pinning
tsa.warn_on_key_rotationNEXTPDF_TSA_WARN_ROTATIONtrueGibt eine Warnung aus, wenn die TSA ein nicht gepinntes SPKI präsentiert
tsa.allow_insecure_httpNEXTPDF_TSA_ALLOW_INSECURE_HTTPfalseErlaubt Klartext-HTTP zur TSA. In der Produktion auf false belassen
SchlüsselEnv (primär)StandardWirkung
ocsp_cache.enabledNEXTPDF_OCSP_CACHE_ENABLEDtrueSpeichert OCSP-Antworten während der Validierung im Cache
ocsp_cache.ttlNEXTPDF_OCSP_CACHE_TTL86400Cache-TTL in Sekunden
ocsp_cache.directoryNEXTPDF_OCSP_CACHE_DIRnullCache-Verzeichnis; null hält den Cache nur im Arbeitsspeicher
SchlüsselEnv (primär)StandardWirkung
queue.connectionNEXTPDF_QUEUE_CONNECTIONnullQueue-Verbindung; null nutzt die Standardverbindung
queue.queueNEXTPDF_QUEUE_NAMEpdfQueue-Name, in die GeneratePdfJob gestellt wird
queue.timeoutNEXTPDF_QUEUE_TIMEOUT120Timeout pro Job in Sekunden
SchlüsselEnv (primär)StandardWirkung
artisan.chrome_binaryNEXTPDF_ARTISAN_CHROME_BINARYEnv-Wert oder nicht gesetztPfad zur Chrome-/Chromium-Binärdatei
artisan.render_timeoutNEXTPDF_ARTISAN_RENDER_TIMEOUT30Render-Timeout in Sekunden
artisan.default_cssNEXTPDF_ARTISAN_DEFAULT_CSS(leer)Standard-CSS, das in gerendertes HTML injiziert wird
artisan.no_sandboxNEXTPDF_ARTISAN_NO_SANDBOXfalseDeaktiviert die Chrome-Sandbox
artisan.max_html_sizeNEXTPDF_ARTISAN_MAX_HTML_SIZE5000000Maximale HTML-Eingabegröße in Bytes

Der Abschnitt artisan wird nur dann auf die Dokumentbindung angewendet, wenn eine Chrome-Browser-Factory-Klasse vorhanden ist (die nextpdf/artisan-Erweiterung). Ist sie nicht vorhanden, wird der Abschnitt ignoriert.

resource: config/nextpdf.php (subset, verified against the published file)
<?php
declare(strict_types=1);
return [
'page_format' => env('NEXTPDF_PAGE_FORMAT', 'A4'),
'orientation' => env('NEXTPDF_ORIENTATION', 'P'),
'unit' => env('NEXTPDF_UNIT', 'mm'),
'pdfa' => env('NEXTPDF_PDFA', null),
'fonts_path' => env('NEXTPDF_FONTS_PATH', resource_path('fonts')),
'preload_fonts' => [],
'image_cache_mb' => env('NEXTPDF_IMAGE_CACHE_MB', 50),
'queue' => [
'connection' => env('NEXTPDF_QUEUE_CONNECTION', null),
'queue' => env('NEXTPDF_QUEUE_NAME', 'pdf'),
'timeout' => env('NEXTPDF_QUEUE_TIMEOUT', 120),
],
];
  • signature.enabled = true mit leerem signature.certificate löst SignerInterface dennoch zu null auf; beide müssen gesetzt sein.
  • tsa.url = null erzwingt TsaClient zu null, selbst wenn andere tsa.*-Schlüssel befüllt sind.
  • signature.level = null fällt beim Signierer auf PAdES B-B zurück.
  • image_cache_mb auf null (nicht 0) gesetzt, fällt auf den Standard von 50 MB zurück; 0 deaktiviert das Caching ausdrücklich.
  • Veraltete TCPDF_*-Umgebungsvariablen bleiben lesbar, sind aber veraltet; migrieren Sie zu NEXTPDF_*.

Das Lesen der Konfiguration ist ein O(1)-Array-Zugriff. preload_fonts tauscht einen einmaligen O(f)-Parse beim Worker-Start gegen geringere Latenz bei der ersten Anfrage. Ein größeres image_cache_mb reduziert wiederholtes Bilddecodieren auf Kosten von prozessresidentem Arbeitsspeicher.

tsa.allow_insecure_http schwächt das Vertrauen in Zeitstempel und muss in der Produktion false bleiben. TSA-URLs sollten ausschließlich aus vertrauenswürdiger Konfiguration stammen; werden sie über eine Admin-Oberfläche zugänglich gemacht, wenden Sie eine Egress-Firewall- oder DNS-Richtlinie an, um Request-Forgery zu entschärfen. Siehe /integrations/laravel/security-and-operations/.

Kein normativer Standard regelt die Form der Konfigurationsdatei; alle Schlüssel werden gegen die config/nextpdf.php des Pakets in der dokumentierten Revision verifiziert. Die Semantik der Signaturstufen wird von Premium geregelt und liegt außerhalb des Umfangs dieser Core-Seite.

Die Abschnitte signature und tsa steuern das Premium-Signieren, wenn nextpdf/premium installiert ist. Dies ist eine optionale Enterprise-Fähigkeit; das hier dokumentierte Core-Paket erfordert keine Codeänderung, um sie zu übernehmen. Siehe https://nextpdf.dev/get-license/?intent=laravel-signing.

  • /integrations/laravel/install/ — die Konfigurationsdatei veröffentlichen
  • /integrations/laravel/production-usage/ — Konfiguration in einem echten Controller anwenden
  • /integrations/laravel/security-and-operations/ — Härtung der TSA- und Queue-Einstellungen
  • /integrations/laravel/boot-and-discovery/ — welche Bindung jeder Schlüssel steuert