Lewati ke konten

Mengonfigurasi paket Laravel NextPDF

config/nextpdf.php dipublikasikan oleh php artisan vendor:publish --tag=nextpdf-config. Setiap kunci memiliki fallback melalui variabel lingkungan dan nilai standar yang ditetapkan dalam kode. Halaman ini mencantumkan setiap kunci persis seperti yang muncul di config/nextpdf.php paket.

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

Saat register() berjalan, provider juga menggabungkan nilai standar paket di bawah kunci config nextpdf. Kunci yang belum disetel kemudian kembali menggunakan nilai di bawah ini, bahkan sebelum Anda memublikasikan berkas config.

Sebagian besar variabel lingkungan menerima nama NEXTPDF_* maupun nama lawas TCPDF_*. Prefiks lawas tetap tersedia selama masa transisi yang didokumentasikan dalam UPGRADE.md. Gunakan NEXTPDF_* untuk deployment baru. Berkas config menentukan nilai dalam urutan ini: variabel lingkungan → nilai dari berkas yang dipublikasikan → nilai standar paket.

KunciEnv (utama)StandarEfek
page_formatNEXTPDF_PAGE_FORMATA4Format halaman standar: A4, A3, A5, Letter, Legal, atau Tabloid
orientationNEXTPDF_ORIENTATIONPTegak (P) atau lanskap (L)
unitNEXTPDF_UNITmmSatuan pengukuran: pt, mm, cm, atau in
defaults.creatorNEXTPDF_CREATORNextPDFMetadata pembuat dokumen; diterapkan pada binding PdfDocumentInterface
defaults.authorNEXTPDF_AUTHOR(kosong)Metadata penulis; diterapkan hanya jika tidak kosong
defaults.languageNEXTPDF_LANGenBahasa dokumen; diterapkan pada binding dokumen
defaults.margin_top / _right / _bottom / _left10Margin standar
defaults.font_familydejavusansKeluarga fon standar
defaults.font_size12Ukuran fon standar
defaults.trim_boxnullTrimBox [left, bottom, right, top] dalam poin, atau null
defaults.bleed_boxnullBleedBox [left, bottom, right, top] dalam poin, atau null

Provider menerapkan defaults.creator, defaults.language, dan (jika disetel) defaults.author ke setiap dokumen yang baru diselesaikan. Provider melewati defaults.author jika nilainya kosong.

KunciEnv (utama)StandarEfek
pdfaNEXTPDF_PDFAnullTingkat pengarsipan PDF/A: null, 4, 4e, atau 4f. Nilai non-null mengaktifkan PDF/A pada binding dokumen dan memerlukan nextpdf/premium
fonts_pathNEXTPDF_FONTS_PATHresource_path('fonts')Direktori untuk fon TrueType tambahan; menetapkan jalur pencarian registri fon
cache_pathNEXTPDF_CACHE_PATHstorage_path('framework/cache/tcpdf')Direktori cache fon yang telah diurai dan berkas sementara
icc_profile.rgbNEXTPDF_ICC_PROFILE_RGBnullJalur profil ICC RGB; wajib untuk PDF/A
icc_profile.cmykNEXTPDF_ICC_PROFILE_CMYKnullProfil ICC CMYK opsional untuk alur kerja cetak
font_cache_lockingNEXTPDF_FONT_CACHE_LOCKINGtrueGunakan flock pada cache fon untuk mencegah kerusakan saat pekerja antrean konkuren menulis

Nilai pdfa non-null memerlukan tier Premium. Tanpa nextpdf/premium, menyelesaikan binding dokumen dengan pdfa yang disetel memunculkan kesalahan class-not-found untuk tipe versi PDF/A. Halaman ini tidak mendokumentasikan perilaku pengarsipan Premium. Lihat dokumentasi Premium.

KunciEnv (utama)StandarEfek
preload_fonts[]Jalur berkas fon absolut yang diurai saat boot pekerja. Registri fon dikunci setelah warmup
image_cache_mbNEXTPDF_IMAGE_CACHE_MB50Anggaran cache gambar least recently used (LRU) dalam megabita (MB). 0 menonaktifkan caching. Tidak ada batas atas yang diberlakukan pada tingkat provider

Anggaran cache gambar tidak memiliki batas atas yang diberlakukan oleh provider. Gunakan batas memori kontainer atau php.inimemory_limit untuk membatasinya. Berkas config menyarankan maksimum praktis 256 MB.

KunciEnv (utama)StandarEfek
signature.enabledNEXTPDF_SIGN_ENABLEDfalseJika false, atau jika sertifikat kosong, SignerInterface diselesaikan menjadi null
signature.certificateNEXTPDF_SIGN_CERTnullJalur sertifikat penandatanganan
signature.private_keyNEXTPDF_SIGN_KEYnullJalur kunci privat
signature.passwordNEXTPDF_SIGN_PASSWORD(kosong)Frasa sandi kunci
signature.extra_certs[]Jalur sertifikat CA perantara
signature.levelNEXTPDF_SIGN_LEVELB-BTingkat baseline PDF Advanced Electronic Signatures (PAdES) yang diteruskan ke penanda tangan

Paket Core yang didokumentasikan di sini tidak menyertakan implementasi penanda tangan; SignerInterface diselesaikan menjadi null hingga nextpdf/premium menyediakannya. Dengan Premium, level: B-B menghasilkan tanda tangan baseline PAdES B-B. Baseline PAdES yang lebih tinggi bergantung pada otoritas stempel waktu yang dikonfigurasi dan kapabilitas Premium; halaman ini tidak mendokumentasikan tingkat tersebut.

KunciEnv (utama)StandarEfek
tsa.urlNEXTPDF_TSA_URLnullTitik akhir otoritas stempel waktu (TSA). Jika kosong, TsaClient diselesaikan menjadi null
tsa.username / tsa.passwordNEXTPDF_TSA_USERNAME / _PASSWORD(kosong)Kredensial HTTP TSA
tsa.cert / tsa.keyNEXTPDF_TSA_CERT / _KEYnullSertifikat / kunci klien untuk mutual Transport Layer Security (mTLS) ke TSA
tsa.timeoutNEXTPDF_TSA_TIMEOUT30Batas waktu HTTP dalam detik untuk klien PSR-18
tsa.pinned_public_keys[]Pin SubjectPublicKeyInfo (SPKI) SHA-256 Base64 (RFC 7469). Kosong menonaktifkan pinning
tsa.warn_on_key_rotationNEXTPDF_TSA_WARN_ROTATIONtrueMemunculkan peringatan saat TSA menyajikan SPKI yang tidak di-pin
tsa.allow_insecure_httpNEXTPDF_TSA_ALLOW_INSECURE_HTTPfalseMengizinkan HTTP teks polos ke TSA. Biarkan tetap false di produksi
KunciEnv (utama)StandarEfek
ocsp_cache.enabledNEXTPDF_OCSP_CACHE_ENABLEDtrueMenyimpan respons Online Certificate Status Protocol (OCSP) dalam cache selama validasi
ocsp_cache.ttlNEXTPDF_OCSP_CACHE_TTL86400TTL cache dalam detik
ocsp_cache.directoryNEXTPDF_OCSP_CACHE_DIRnullDirektori cache; null membuat cache hanya berada di memori
KunciEnv (utama)StandarEfek
queue.connectionNEXTPDF_QUEUE_CONNECTIONnullKoneksi antrean; null menggunakan koneksi standar
queue.queueNEXTPDF_QUEUE_NAMEpdfAntrean tempat GeneratePdfJob dikirim
queue.timeoutNEXTPDF_QUEUE_TIMEOUT120Batas waktu per pekerjaan dalam detik
KunciEnv (utama)StandarEfek
artisan.chrome_binaryNEXTPDF_ARTISAN_CHROME_BINARYnilai env atau tidak disetelJalur ke biner Chrome/Chromium
artisan.render_timeoutNEXTPDF_ARTISAN_RENDER_TIMEOUT30Batas waktu rendering dalam detik
artisan.default_cssNEXTPDF_ARTISAN_DEFAULT_CSS(kosong)CSS standar yang disuntikkan ke dalam HTML yang dirender
artisan.no_sandboxNEXTPDF_ARTISAN_NO_SANDBOXfalseMenonaktifkan sandbox Chrome
artisan.max_html_sizeNEXTPDF_ARTISAN_MAX_HTML_SIZE5000000Ukuran input HTML maksimum dalam bita

Bagian artisan hanya berlaku pada binding dokumen jika kelas browser-factory Chrome hadir (ekstensi nextpdf/artisan). Jika kelas tersebut tidak ada, bagian ini diabaikan.

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),
],
];
  • Jika signature.enabled = true tetapi signature.certificate kosong, SignerInterface tetap diselesaikan menjadi null; kedua nilai harus disetel.
  • tsa.url = null memaksa TsaClient menjadi null, bahkan jika kunci tsa.* lainnya terisi.
  • signature.level = null kembali menggunakan PAdES B-B pada penanda tangan.
  • image_cache_mb yang disetel ke null (bukan 0) kembali ke nilai standar 50 MB; 0 secara eksplisit menonaktifkan caching.
  • Variabel lingkungan lawas TCPDF_* tetap dapat dibaca tetapi sudah usang. Bermigrasilah ke NEXTPDF_*.

Pembacaan config menggunakan akses array O(1). preload_fonts melakukan penguraian O(f) sekali saat boot pekerja untuk menurunkan latensi permintaan pertama. image_cache_mb yang lebih besar mengurangi pendekodean gambar berulang dengan biaya memori yang menetap di proses.

tsa.allow_insecure_http melemahkan kepercayaan stempel waktu dan harus tetap false di produksi. URL TSA hanya boleh berasal dari konfigurasi tepercaya. Jika Anda mengeksposnya melalui antarmuka admin, gunakan firewall egress atau kebijakan DNS untuk memitigasi pemalsuan permintaan. Lihat /integrations/laravel/security-and-operations/.

Tidak ada standar normatif yang mengatur bentuk berkas konfigurasi. Semua kunci diverifikasi terhadap config/nextpdf.php paket pada revisi yang didokumentasikan. Premium menentukan semantik tingkat tanda tangan, yang berada di luar cakupan halaman Core ini.

Bagian signature dan tsa mengendalikan penandatanganan Premium saat nextpdf/premium terpasang. Kapabilitas Enterprise opsional ini tidak memerlukan perubahan kode paket Core. Lihat https://nextpdf.dev/get-license/?intent=laravel-signing.

  • /integrations/laravel/install/ — memublikasikan berkas config
  • /integrations/laravel/production-usage/ — melihat konfigurasi yang diterapkan di controller nyata
  • /integrations/laravel/security-and-operations/ — memperketat pengaturan TSA dan antrean
  • /integrations/laravel/boot-and-discovery/ — melihat binding yang dikendalikan oleh setiap kunci