Ga naar inhoud

NextPDF configureren voor CodeIgniter 4

De NextPDF-configuratie bevindt zich in NextPDF\CodeIgniter\Config\NextPdf, een subklasse van de CodeIgniter-BaseConfig. Je kunt waarden overschrijven door de klasse uit te breiden in app/Config/ of door .env-sleutels in te stellen met het voorvoegsel nextpdf.. De standaardwaarden werken zonder extra configuratie.

NextPdf is een getypeerde BaseConfig. De klasse is bewust niet final. In CodeIgniter breidt de applicatieconfiguratie de package-klasse uit, zodat je applicatie de standaardwaarden kan overschrijven. Wanneer CodeIgniter de configuratie opbouwt, past BaseConfig omgevingsoverschrijvingen toe op elke publieke eigenschap, inclusief geneste array-sleutels.

De standaardpaden voor lettertypen en de cache gebruiken de constante WRITEPATH van CodeIgniter: WRITEPATH . 'fonts' en WRITEPATH . 'cache/nextpdf'.

Elke sleutel hieronder is een publieke eigenschap van NextPdf. De standaardwaarden zijn geverifieerd aan de hand van de package-broncode.

SleutelTypeStandaardBeschrijving
pageFormatstringA4Paginaformaat.
orientationstringPP voor staand of L voor liggend.
unitstringmmMaateenheid.
defaults.creatorstringNextPDFMetadata voor de maker van het Portable Document Format (PDF).
defaults.authorstring''Metadata voor de auteur; wordt overgeslagen wanneer leeg.
defaults.languagestringenTaaltag van het document.
defaults.margin_topfloat10.0Bovenmarge.
defaults.margin_rightfloat10.0Rechtermarge.
defaults.margin_bottomfloat10.0Ondermarge.
defaults.margin_leftfloat10.0Linkermarge.
defaults.font_familystringdejavusansStandaardlettertypefamilie.
defaults.font_sizefloat12.0Standaardlettergrootte.
defaults.trim_boxlist<float>|nullnullTrim box, indien ingesteld.
defaults.bleed_boxlist<float>|nullnullBleed box, indien ingesteld.

De package past defaults.creator en defaults.language toe op elk document. defaults.author wordt alleen toegepast wanneer de waarde niet leeg is.

SleutelTypeStandaardBeschrijving
fontsPathstringWRITEPATH/fontsMap met lettertypebestanden.
cachePathstringWRITEPATH/cache/nextpdfCachemap.
preloadFontslist<string>[]Absolute lettertypepaden die bij het opstarten vooraf worden geladen.
imageCacheMbint50Budget voor de least-recently-used (LRU)-afbeeldingscache in megabytes (MB).
fontCacheLockingbooltrueVergrendelt de lettertypecache na het opwarmen.

Het lettertyperegister wijst elke fontsPath af die een stream wrapper (://) of een null-byte bevat, en geeft een runtimefout. Zie /integrations/codeigniter/security-and-operations/.

SleutelTypeStandaardBeschrijving
pdfastring|nullnullPDF/A-versie: 4, 4e, 4f.
iccProfile.rgbstring|nullnullPad naar het International Color Consortium (ICC)-profiel voor rood, groen en blauw (RGB).
iccProfile.cmykstring|nullnullPad naar het International Color Consortium (ICC)-profiel voor cyaan, magenta, geel en zwart (CMYK).

pdfa is alleen van kracht wanneer NextPDF Pro is geïnstalleerd en de archiveringscapaciteit beschikbaar is. Wanneer je alleen core gebruikt, wordt de sleutel genegeerd.

Digitale handtekening (NextPDF Pro / Enterprise)

Sectie met titel “Digitale handtekening (NextPDF Pro / Enterprise)”
SleutelTypeStandaardBeschrijving
signature.enabledboolfalseSchakelt de ondertekeningsservice in.
signature.certificatestring|nullnullPad naar het certificaatbestand.
signature.private_keystring|nullnullPad naar het privésleutelbestand.
signature.passwordstring''Wachtwoord voor de privésleutel.
signature.extra_certslist<string>[]Paden naar aanvullende ketencertificaten.
signature.levelstringB-BIdentifier van het handtekeningniveau.

Services::pdfSigner() retourneert null tenzij signature.enabled true is en signature.certificate niet leeg is. Het standaardniveau is B-B. NextPDF Pro levert de B-B-basishandtekening. Niveaus voor langetermijn- validatie zijn een afzonderlijke Enterprise-functionaliteit en zijn gedocumenteerd in de Premium-referentie, niet hier.

PDF Advanced Electronic Signatures (PAdES) B-T wordt geproduceerd door de Core- engine. De CodeIgniter-integratie voegt zelf geen B-T toe, en Pro levert uitsluitend de B-B-basis. Deze documentatie wordt bijgewerkt als en wanneer Pro B-T uitbrengt.

SleutelTypeStandaardBeschrijving
tsa.urlstring|nullnullEndpoint-URL van de Time Stamp Authority (TSA).
tsa.usernamestring''Gebruikersnaam voor TSA-basisauthenticatie.
tsa.passwordstring''Wachtwoord voor TSA-basisauthenticatie.
tsa.certstring|nullnullPad naar het clientcertificaat.
tsa.keystring|nullnullPad naar de clientsleutel.
tsa.timeoutint30Time-out van het verzoek in seconden.
tsa.pinned_public_keyslist<string>[]Gepinde publieke TSA-sleutels.
tsa.warn_on_key_rotationbooltrueWaarschuwt bij rotatie van de TSA-sleutel.
tsa.allow_insecure_httpboolfalseStaat HTTP in platte tekst naar de TSA toe.

Services::tsaClient() retourneert null wanneer tsa.url null of een lege tekenreeks is. Wanneer je een handtekeningniveau selecteert dat een tijdstempel vereist, koppelt de ondertekenaar automatisch de TSA-client.

SleutelTypeStandaardBeschrijving
ocspCache.enabledbooltrueSchakelt de responscache van het Online Certificate Status Protocol (OCSP) in.
ocspCache.ttlint86400Time to live (TTL) van de cache in seconden.
ocspCache.directorystring|nullnullCachemap; gebruikt de standaard van de engine wanneer null.
SleutelTypeStandaardBeschrijving
artisan.chrome_binarystring|nullnullPad naar het Chrome/Chromium-binaire bestand.
artisan.render_timeoutint30Time-out van de weergave in seconden.
artisan.default_cssstring''Standaardstijlblad.
artisan.no_sandboxboolfalseGeeft --no-sandbox door aan Chrome.
artisan.max_html_sizeint5000000Maximale grootte van de invoer-HTML in bytes.

De Chrome-weergave-engine wordt alleen voor het document ingesteld wanneer artisan.chrome_binary is ingesteld en nextpdf/artisan is geïnstalleerd.

BaseConfig verwerkt omgevingsoverschrijvingen per eigenschap. De opzoeksleutel is de korte klassenaam in kleine letters, nextpdf, gevolgd door het eigenschapspad. Gebruik punten om geneste array-sleutels te adresseren. Zowel punt- als underscore-notatie worden geaccepteerd.

.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

Het voorvoegsel is de korte klassenaam in kleine letters. Het blijft nextpdf ook als de klasse wordt geschreven als NextPdf. Je kunt ook de volledig gekwalificeerde vorm gebruiken (NextPDF\CodeIgniter\Config\NextPdf.fontsPath).

Voor getypeerde, versiebeheerde configuratie breid je de package-klasse uit in app/Config/. CodeIgniter laadt de applicatieklasse in plaats van de package-standaard. Dit bestand declareert een klasse en heeft geen neveneffecten. Daarmee blijft het in lijn met de PSR-1-verwachting dat een bestand ofwel symbolen declareert ofwel logica met neveneffecten uitvoert, maar niet beide (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,
];
}
  • Het overschrijven van één geneste sleutel met .env wijzigt alleen die sleutel; de rest van de array behoudt de standaardwaarde.
  • .env-waarden zijn tekenreeksen. CodeIgniter cast true/false en numerieke tekenreeksen. Zet waarden tussen aanhalingstekens als ze letterlijke tekenreeksen moeten blijven.
  • Het uitbreiden van de klasse met een gedeeltelijke defaults-array vervangt de volledige array. Neem elke sleutel op, zoals hierboven getoond.

Houd certificaat- en sleutelpaden buiten broncodebeheer. Lever ze aan via .env of een secrets manager. tsa.allow_insecure_http moet in productie false blijven. Zie /integrations/codeigniter/security-and-operations/.

  • Het configuratie-uitbreidingsbestand van de applicatie declareert één klasse en heeft geen neveneffecten (PSR-1 §x1.x1.p3).

NextPDF core is Apache-2.0. Sleutels signature.* en pdfa zijn alleen van kracht wanneer NextPDF Pro of Enterprise is geïnstalleerd. De CodeIgniter-package stelt de bijbehorende servicemethoden beschikbaar. Die methoden retourneren null totdat je de bijbehorende Premium-package installeert. Zie </get-license/?intent=codeigniter-signing>.

  • /integrations/codeigniter/install/ — de package installeren.
  • /integrations/codeigniter/quickstart/ — je eerste PDF.
  • /integrations/codeigniter/production-usage/ — DI-bedrade controllers en wachtrijtaken.
  • /integrations/codeigniter/security-and-operations/ — hardening van de ondertekenings- en padconfiguratie.