Lewati ke konten

Mengonfigurasi NextPDF untuk CodeIgniter 4

Konfigurasi NextPDF dikelola oleh NextPDF\CodeIgniter\Config\NextPdf, sebuah subkelas BaseConfig milik CodeIgniter. Anda dapat mengganti nilainya dengan memperluas kelas tersebut di app/Config/ atau menetapkan kunci .env berawalan nextpdf.. Nilai standarnya berfungsi tanpa konfigurasi tambahan.

NextPdf merupakan BaseConfig bertipe. Kelas ini sengaja dibuat tidak final. Di CodeIgniter, konfigurasi aplikasi memperluas kelas paket agar aplikasi Anda dapat mengganti nilai standar. Saat CodeIgniter membangun konfigurasi, BaseConfig menerapkan penggantian dari lingkungan untuk setiap properti publik, termasuk kunci array bersarang.

Jalur standar untuk fon dan cache menggunakan konstanta WRITEPATH milik CodeIgniter: WRITEPATH . 'fonts' dan WRITEPATH . 'cache/nextpdf'.

Semua kunci di bawah ini adalah properti publik dari NextPdf. Nilai standarnya diverifikasi terhadap sumber paket.

KunciTipeStandarDeskripsi
pageFormatstringA4Format halaman.
orientationstringPP potret atau L lanskap.
unitstringmmSatuan ukuran.
defaults.creatorstringNextPDFMetadata pembuat Portable Document Format (PDF).
defaults.authorstring''Metadata penulis; dilewati jika kosong.
defaults.languagestringenTag bahasa dokumen.
defaults.margin_topfloat10.0Margin atas.
defaults.margin_rightfloat10.0Margin kanan.
defaults.margin_bottomfloat10.0Margin bawah.
defaults.margin_leftfloat10.0Margin kiri.
defaults.font_familystringdejavusansFamili fon standar.
defaults.font_sizefloat12.0Ukuran fon standar.
defaults.trim_boxlist<float>|nullnullTrim box, jika ditetapkan.
defaults.bleed_boxlist<float>|nullnullBleed box, jika ditetapkan.

Paket menerapkan defaults.creator dan defaults.language pada setiap dokumen. Paket hanya menerapkan defaults.author jika nilainya tidak kosong.

KunciTipeStandarDeskripsi
fontsPathstringWRITEPATH/fontsDirektori berkas fon.
cachePathstringWRITEPATH/cache/nextpdfDirektori cache.
preloadFontslist<string>[]Jalur fon absolut yang dipramuat saat boot.
imageCacheMbint50Anggaran cache citra least recently used (LRU) dalam megabita (MB).
fontCacheLockingbooltrueKunci cache fon setelah pemanasan awal.

Registri fon menolak setiap fontsPath yang berisi stream wrapper (://) atau null byte, lalu melempar kesalahan runtime. Lihat /integrations/codeigniter/security-and-operations/.

KunciTipeStandarDeskripsi
pdfastring|nullnullVersi PDF/A: 4, 4e, 4f.
iccProfile.rgbstring|nullnullJalur profil International Color Consortium (ICC) untuk ruang warna merah, hijau, dan biru (RGB).
iccProfile.cmykstring|nullnullJalur profil ICC untuk ruang warna cyan, magenta, kuning, dan key (CMYK).

pdfa hanya berlaku jika NextPDF Pro terpasang dan kapabilitas pengarsipan tersedia. Jika hanya core yang terpasang, kunci ini diabaikan.

Tanda tangan digital (NextPDF Pro / Enterprise)

Bagian berjudul “Tanda tangan digital (NextPDF Pro / Enterprise)”
KunciTipeStandarDeskripsi
signature.enabledboolfalseAktifkan layanan penanda tangan.
signature.certificatestring|nullnullJalur berkas sertifikat.
signature.private_keystring|nullnullJalur berkas kunci privat.
signature.passwordstring''Kata sandi kunci privat.
signature.extra_certslist<string>[]Jalur sertifikat rantai tambahan.
signature.levelstringB-BPengidentifikasi tingkat tanda tangan.

Services::pdfSigner() mengembalikan null kecuali signature.enabled bernilai true dan signature.certificate tidak kosong. Tingkat standar adalah B-B. NextPDF Pro menyediakan tanda tangan baseline B-B. Tingkat validasi jangka panjang merupakan kapabilitas Enterprise terpisah dan didokumentasikan dalam referensi Premium, bukan di sini.

PDF Advanced Electronic Signatures (PAdES) B-T dihasilkan oleh mesin Core. Integrasi CodeIgniter sendiri tidak menambahkan B-T, dan Pro hanya menyediakan baseline B-B. Dokumentasi ini akan diperbarui jika dan ketika Pro B-T dirilis.

KunciTipeStandarDeskripsi
tsa.urlstring|nullnullURL endpoint Time Stamp Authority (TSA).
tsa.usernamestring''Nama pengguna untuk autentikasi dasar TSA.
tsa.passwordstring''Kata sandi autentikasi dasar TSA.
tsa.certstring|nullnullJalur sertifikat klien.
tsa.keystring|nullnullJalur kunci klien.
tsa.timeoutint30Batas waktu permintaan dalam detik.
tsa.pinned_public_keyslist<string>[]Kunci publik TSA yang di-pin.
tsa.warn_on_key_rotationbooltruePeringatkan saat rotasi kunci TSA.
tsa.allow_insecure_httpboolfalseIzinkan HTTP teks polos ke TSA.

Services::tsaClient() mengembalikan null saat tsa.url bernilai null atau string kosong. Jika Anda memilih tingkat tanda tangan yang memerlukan stempel waktu, penanda tangan melampirkan klien TSA secara otomatis.

KunciTipeStandarDeskripsi
ocspCache.enabledbooltrueAktifkan cache respons Online Certificate Status Protocol (OCSP).
ocspCache.ttlint86400Time to live (TTL) cache dalam detik.
ocspCache.directorystring|nullnullDirektori cache; standar mesin jika null.
KunciTipeStandarDeskripsi
artisan.chrome_binarystring|nullnullJalur biner Chrome/Chromium.
artisan.render_timeoutint30Batas waktu render dalam detik.
artisan.default_cssstring''Lembar gaya standar.
artisan.no_sandboxboolfalseTeruskan --no-sandbox ke Chrome.
artisan.max_html_sizeint5000000Ukuran maksimum HTML masukan dalam bita.

Perender Chrome hanya dikonfigurasi untuk dokumen jika artisan.chrome_binary sudah ditetapkan dan nextpdf/artisan terpasang.

BaseConfig menerapkan penggantian dari lingkungan per properti. Kunci yang dicari adalah nama kelas pendek dalam huruf kecil, nextpdf, diikuti jalur properti. Gunakan titik untuk mengakses kunci array bersarang. Bentuk bertitik maupun bergaris bawah sama-sama diterima.

.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

Awalannya berupa nama kelas pendek dalam huruf kecil. Awalan ini tetap nextpdf meskipun kelasnya ditulis NextPdf. Anda juga dapat menggunakan bentuk yang sepenuhnya terkualifikasi (NextPDF\CodeIgniter\Config\NextPdf.fontsPath).

Untuk konfigurasi yang bertipe dan terkontrol versi, perluas kelas paket di app/Config/. CodeIgniter memuat kelas aplikasi alih-alih nilai standar paket. Berkas ini mendeklarasikan sebuah kelas dan tidak menimbulkan efek samping. Hal ini menjaganya tetap selaras dengan ekspektasi PSR-1 bahwa sebuah berkas mendeklarasikan simbol atau menjalankan logika berefek samping, tetapi tidak keduanya (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,
];
}
  • Mengganti satu kunci bersarang dengan .env hanya mengubah kunci itu saja; sisa array mempertahankan nilai standarnya.
  • Nilai .env berupa string. CodeIgniter mengonversi true/false dan string numerik. Beri tanda kutip pada nilai yang harus tetap menjadi string literal.
  • Jika Anda memperluas kelas dengan array defaults parsial, seluruh array akan diganti. Sertakan setiap kunci, seperti ditunjukkan di atas.

Jauhkan jalur sertifikat dan kunci dari kendali sumber. Sediakan melalui .env atau pengelola rahasia. tsa.allow_insecure_http harus tetap false di produksi. Lihat /integrations/codeigniter/security-and-operations/.

  • Berkas ekstensi konfigurasi aplikasi mendeklarasikan satu kelas dan tidak memiliki efek samping (PSR-1 §x1.x1.p3).

Core NextPDF berlisensi Apache-2.0. Kunci signature.* dan pdfa hanya berlaku jika NextPDF Pro atau Enterprise terpasang. Paket CodeIgniter mengekspos metode layanan yang sesuai. Metode tersebut mengembalikan null hingga Anda memasang paket Premium yang sesuai. Lihat </get-license/?intent=codeigniter-signing>.

  • /integrations/codeigniter/install/ — pasang paketnya.
  • /integrations/codeigniter/quickstart/ — PDF pertama.
  • /integrations/codeigniter/production-usage/ — kontroler dan job antrean yang terhubung melalui DI.
  • /integrations/codeigniter/security-and-operations/ — pengerasan konfigurasi penandatanganan dan jalur.