Zum Inhalt springen

NextPDF für CodeIgniter 4 konfigurieren

Die Konfiguration liegt in NextPDF\CodeIgniter\Config\NextPdf, einer Unterklasse von CodeIgniters BaseConfig. Werte überschreiben Sie, indem Sie die Klasse in app/Config/ erweitern oder .env-Schlüssel mit dem Präfix nextpdf. setzen. Die Standardwerte funktionieren ohne weitere Konfiguration.

NextPdf ist eine typisierte BaseConfig. Sie ist bewusst nicht final. Gemäß der CodeIgniter-Konvention erweitert die Anwendungskonfiguration die Paketklasse, damit die Anwendung die Standardwerte überschreiben kann. Beim Erzeugen der Konfiguration löst BaseConfig für jede öffentliche Eigenschaft die Umgebungs-Overrides auf. Diese Auflösung berücksichtigt auch verschachtelte Array-Schlüssel.

Die Standardpfade für Schriften und Cache verwenden die CodeIgniter-Konstante WRITEPATH: WRITEPATH . 'fonts' und WRITEPATH . 'cache/nextpdf'.

Jeder unten aufgeführte Schlüssel ist eine öffentliche Eigenschaft von NextPdf. Die Standardwerte sind die verifizierten Werte aus dem Paketquellcode.

SchlüsselTypStandardBeschreibung
pageFormatstringA4Seitenformat.
orientationstringPP für Hochformat oder L für Querformat.
unitstringmmMaßeinheit.
defaults.creatorstringNextPDFPDF-Creator-Metadaten.
defaults.authorstring''Autor-Metadaten; werden bei leerem Wert übersprungen.
defaults.languagestringenSprach-Tag des Dokuments.
defaults.margin_topfloat10.0Oberer Rand.
defaults.margin_rightfloat10.0Rechter Rand.
defaults.margin_bottomfloat10.0Unterer Rand.
defaults.margin_leftfloat10.0Linker Rand.
defaults.font_familystringdejavusansStandardschriftfamilie.
defaults.font_sizefloat12.0Standardschriftgröße.
defaults.trim_boxlist<float>|nullnullTrim-Box, sofern gesetzt.
defaults.bleed_boxlist<float>|nullnullBleed-Box, sofern gesetzt.

Das Paket wendet defaults.creator und defaults.language auf jedes Dokument an. defaults.author wird nur übernommen, wenn dieser Wert nicht leer ist.

SchlüsselTypStandardBeschreibung
fontsPathstringWRITEPATH/fontsVerzeichnis für Schriftdateien.
cachePathstringWRITEPATH/cache/nextpdfCache-Verzeichnis.
preloadFontslist<string>[]Absolute Schriftpfade, die beim Booten vorgewärmt werden.
imageCacheMbint50Budget des LRU-Bildcaches in MB.
fontCacheLockingbooltrueSperrt den Schriftcache nach dem Vorwärmen.

Die Schrift-Registry weist einen fontsPath zurück, der einen Stream-Wrapper (://) oder ein Null-Byte enthält. Die Zurückweisung löst einen Laufzeitfehler aus. Siehe /integrations/codeigniter/security-and-operations/.

SchlüsselTypStandardBeschreibung
pdfastring|nullnullPDF/A-Version: 4, 4e, 4f.
iccProfile.rgbstring|nullnullPfad zum RGB-ICC-Profil.
iccProfile.cmykstring|nullnullPfad zum CMYK-ICC-Profil.

pdfa wird nur wirksam, wenn NextPDF Pro installiert ist und die Archivierungsfunktion verfügbar ist. Mit Core allein wird der Schlüssel ignoriert.

SchlüsselTypStandardBeschreibung
signature.enabledboolfalseAktiviert den Signer-Dienst.
signature.certificatestring|nullnullPfad zur Zertifikatsdatei.
signature.private_keystring|nullnullPfad zur Datei des privaten Schlüssels.
signature.passwordstring''Passwort für den privaten Schlüssel.
signature.extra_certslist<string>[]Pfade zu zusätzlichen Kettenzertifikaten.
signature.levelstringB-BBezeichner der Signaturstufe.

Services::pdfSigner() liefert null, wenn signature.enabled nicht true ist oder signature.certificate leer ist. Die Standardstufe ist B-B. NextPDF Pro stellt die B-B-Basissignatur bereit. Langfristige Validierungsstufen sind eine separate Enterprise-Fähigkeit. Sie sind in der Premium-Referenz dokumentiert, nicht hier.

PAdES B-T wird von der Core-Engine erzeugt. Die CodeIgniter-Integration fügt selbst kein B-T hinzu, und Pro liefert nur die B-B-Baseline. Diese Dokumentation wird aktualisiert, falls und sobald Pro B-T ausliefert.

SchlüsselTypStandardBeschreibung
tsa.urlstring|nullnullTSA-Endpunkt-URL.
tsa.usernamestring''TSA-Benutzername für Basic-Auth.
tsa.passwordstring''TSA-Passwort für Basic-Auth.
tsa.certstring|nullnullPfad zum Client-Zertifikat.
tsa.keystring|nullnullPfad zum Client-Schlüssel.
tsa.timeoutint30Timeout für Anfragen in Sekunden.
tsa.pinned_public_keyslist<string>[]Gepinnte öffentliche TSA-Schlüssel.
tsa.warn_on_key_rotationbooltrueWarnt bei TSA-Schlüsselrotation.
tsa.allow_insecure_httpboolfalseErlaubt Klartext-HTTP zur TSA.

Services::tsaClient() liefert null, wenn tsa.url null oder ein leerer String ist. Wenn eine Signaturstufe ausgewählt ist, die einen Zeitstempel erfordert, bindet der Signer den TSA-Client automatisch ein.

SchlüsselTypStandardBeschreibung
ocspCache.enabledbooltrueAktiviert den OCSP-Antwort-Cache.
ocspCache.ttlint86400Cache-TTL in Sekunden.
ocspCache.directorystring|nullnullCache-Verzeichnis; bei null der Engine-Standard.
SchlüsselTypStandardBeschreibung
artisan.chrome_binarystring|nullnullPfad zur Chrome-/Chromium-Binärdatei.
artisan.render_timeoutint30Render-Timeout in Sekunden.
artisan.default_cssstring''Standard-Stylesheet.
artisan.no_sandboxboolfalseÜbergibt --no-sandbox an Chrome.
artisan.max_html_sizeint5000000Maximale Größe des Eingabe-HTML in Bytes.

Der Chrome-Renderer wird nur auf dem Dokument konfiguriert, wenn artisan.chrome_binary gesetzt ist und nextpdf/artisan installiert ist.

BaseConfig löst Umgebungs-Overrides pro Eigenschaft auf. Der Lookup-Schlüssel besteht aus dem kleingeschriebenen kurzen Klassennamen, nextpdf, gefolgt vom Eigenschaftspfad. Verschachtelte Array-Schlüssel werden über Punkte adressiert. Akzeptiert werden sowohl die Punkt- als auch die Unterstrichform.

.env
nextpdf.fontsPath = /var/www/writable/fonts
nextpdf.imageCacheMb = 100
nextpdf.signature.enabled = true
nextpdf.signature.certificate = /etc/nextpdf/cert.pem
nextpdf.signature.private_key = /etc/nextpdf/key.pem
nextpdf.tsa.url = https://tsa.example.com/timestamp
nextpdf.artisan.chrome_binary = /usr/bin/chromium
nextpdf.defaults.creator = Acme Billing
nextpdf.defaults.language = zh-TW

Das Präfix ist der kleingeschriebene kurze Klassenname. Es bleibt nextpdf, obwohl die Klasse als NextPdf geschrieben wird. Die vollqualifizierte Form (NextPDF\CodeIgniter\Config\NextPdf.fontsPath) wird ebenfalls akzeptiert.

Für eine typisierte, versionskontrollierte Konfiguration erweitern Sie die Paketklasse in app/Config/. CodeIgniter lädt die Anwendungsklasse statt des Paketstandards. Diese Datei deklariert eine Klasse und verursacht keine Seiteneffekte. Damit entspricht sie der PSR-1-Erwartung, dass eine Datei entweder Symbole deklariert oder seiteneffektbehaftete Logik ausführt, aber nicht beides (PSR-1 §x1.x1.p3).

<?php
declare(strict_types=1);
namespace Config;
use NextPDF\CodeIgniter\Config\NextPdf as BaseNextPdf;
final class NextPdf extends BaseNextPdf
{
public int $imageCacheMb = 100;
public string $fontsPath = WRITEPATH . 'fonts';
/** @var array{creator: string, author: string, language: string, margin_top: float, margin_right: float, margin_bottom: float, margin_left: float, font_family: string, font_size: float, trim_box: list<float>|null, bleed_box: list<float>|null} */
public array $defaults = [
'creator' => 'Acme Billing',
'author' => 'Acme, Inc.',
'language' => 'en',
'margin_top' => 12.0,
'margin_right' => 12.0,
'margin_bottom' => 12.0,
'margin_left' => 12.0,
'font_family' => 'dejavusans',
'font_size' => 11.0,
'trim_box' => null,
'bleed_box' => null,
];
}
  • Wenn Sie einen einzelnen verschachtelten Schlüssel mit .env überschreiben, wird nur dieser Schlüssel überschrieben; der Rest des Arrays behält seinen Standard.
  • .env-Werte sind Strings. CodeIgniter wandelt true/false und numerische Strings um. Setzen Sie Werte in Anführungszeichen, wenn sie als literale Strings erhalten bleiben müssen.
  • Wenn Sie die Klasse mit einem partiellen defaults-Array erweitern, ersetzt das das gesamte Array. Nehmen Sie jeden Schlüssel auf, wie oben gezeigt.

Halten Sie Zertifikats- und Schlüsselpfade aus der Versionsverwaltung heraus. Stellen Sie sie über .env oder einen Secrets-Manager bereit. tsa.allow_insecure_http muss in der Produktion false bleiben. Siehe /integrations/codeigniter/security-and-operations/.

  • Die Datei zur Config-Erweiterung der Anwendung deklariert eine Klasse und verursacht keine Seiteneffekte (PSR-1 §x1.x1.p3).

NextPDF Core ist Apache-2.0. Die Signatur.*- und pdfa-Schlüssel werden nur wirksam, wenn NextPDF Pro oder Enterprise installiert ist. Das CodeIgniter-Paket stellt die entsprechenden Service-Methoden bereit. Diese Methoden liefern null, bis das passende Premium-Paket installiert ist. Siehe </get-license/?intent=codeigniter-signing>.

  • /integrations/codeigniter/install/ — installiert das Paket.
  • /integrations/codeigniter/quickstart/ — erstes PDF erstellen.
  • /integrations/codeigniter/production-usage/ — Controller mit DI-Verdrahtung und Queue-Jobs.
  • /integrations/codeigniter/security-and-operations/ — Härtung der Signatur- und Pfadkonfiguration.