İçeriğe geç

NextPDF Laravel paketinin yapılandırılması

config/nextpdf.php dosyası php artisan vendor:publish --tag=nextpdf-config komutuyla yayımlanır. Her anahtar için bir ortam değişkeni yedeği ve sabit kodlanmış bir varsayılan değer bulunur. Bu sayfa, her anahtarı paketin config/nextpdf.php dosyasında göründüğü biçimde listeler.

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

Sağlayıcı, register() sırasında paket varsayılanlarını nextpdf yapılandırma anahtarının altında da birleştirir. Yapılandırma dosyası yayımlanmamış olsa bile tanımlanmamış anahtarlar aşağıdaki değerlere geri döner.

Çoğu ortam değişkeni, bir NEXTPDF_* adını ya da eski bir TCPDF_* adını kabul eder. Eski önek, UPGRADE.md dosyasında belgelenen geçiş döneminde kullanılabilir. Yeni dağıtımlar için NEXTPDF_* kullanın. Yapılandırma dosyası değerleri şu sırayla çözümlenir: ortam değişkeni → yayımlanmış dosya değeri → paket varsayılanı.

AnahtarOrtam (birincil)VarsayılanEtki
page_formatNEXTPDF_PAGE_FORMATA4Varsayılan sayfa biçimi: A4, A3, A5, Letter, Legal veya Tabloid
orientationNEXTPDF_ORIENTATIONPDikey (P) veya yatay (L)
unitNEXTPDF_UNITmmÖlçü birimi: pt, mm, cm veya in
defaults.creatorNEXTPDF_CREATORNextPDFBelge oluşturucu meta verisi; PdfDocumentInterface bağlamasına uygulanır
defaults.authorNEXTPDF_AUTHOR(boş)Yazar meta verisi; yalnızca boş olmadığında uygulanır
defaults.languageNEXTPDF_LANGenBelge dili; belge bağlamasına uygulanır
defaults.margin_top / _right / _bottom / _left10Varsayılan kenar boşlukları
defaults.font_familydejavusansVarsayılan yazı tipi ailesi
defaults.font_size12Varsayılan yazı tipi boyutu
defaults.trim_boxnullPunto cinsinden TrimBox [left, bottom, right, top] veya null
defaults.bleed_boxnullPunto cinsinden BleedBox [left, bottom, right, top] veya null

Sağlayıcı, defaults.creator, defaults.language ve (ayarlandığında) defaults.author değerlerini yeni çözümlenen her belgeye uygular. Değer boşsa sağlayıcı defaults.author değerini atlar.

AnahtarOrtam (birincil)VarsayılanEtki
pdfaNEXTPDF_PDFAnullPDF/A arşivleme düzeyi: null, 4, 4e veya 4f. Null olmayan bir değer, belge bağlamasında PDF/A’yı etkinleştirir ve şu paketi gerektirir: nextpdf/premium
fonts_pathNEXTPDF_FONTS_PATHresource_path('fonts')Ek TrueType yazı tipleri için dizin; yazı tipi kaydının arama yolunu ayarlar
cache_pathNEXTPDF_CACHE_PATHstorage_path('framework/cache/tcpdf')Çözümlenmiş yazı tipi ve geçici dosya önbellek dizini
icc_profile.rgbNEXTPDF_ICC_PROFILE_RGBnullRGB ICC profili yolu; PDF/A için gereklidir
icc_profile.cmykNEXTPDF_ICC_PROFILE_CMYKnullBaskı iş akışları için isteğe bağlı CMYK ICC profili
font_cache_lockingNEXTPDF_FONT_CACHE_LOCKINGtrueEşzamanlı kuyruk çalışanlarının yazması sırasında bozulmayı önlemek için yazı tipi önbelleğinde flock kullanır

pdfa için null olmayan bir değer Premium katmanını gerektirir. nextpdf/premium olmadan, pdfa ayarlanmış bir belge bağlamasını çözümlemek PDF/A sürüm türü için sınıf bulunamadı hatasına yol açar. Bu sayfa Premium arşivleme davranışını belgelemez. Premium belgelerine bakın.

Çalışan belleği (uzun ömürlü çalışma zamanları)

“Çalışan belleği (uzun ömürlü çalışma zamanları)” başlıklı bölüm
AnahtarOrtam (birincil)VarsayılanEtki
preload_fonts[]Çalışan başlatılırken ayrıştırılan mutlak yazı tipi dosyası yolları. Yazı tipi kaydı, ısınma sonrasında kilitlenir
image_cache_mbNEXTPDF_IMAGE_CACHE_MB50Megabayt (MB) cinsinden en uzun süredir kullanılmayan (LRU) görüntü önbelleği bütçesi. 0 önbelleğe almayı devre dışı bırakır. Sağlayıcı düzeyinde herhangi bir üst sınır uygulanmaz

Görüntü önbelleği bütçesi için sağlayıcı tarafından uygulanan bir üst sınır yoktur. Bunu sınırlamak için kapsayıcı düzeyinde bir bellek sınırı ya da php.inimemory_limit kullanın. Yapılandırma dosyası, pratikte 256 MB’lık bir üst sınır önerir.

AnahtarOrtam (birincil)VarsayılanEtki
signature.enabledNEXTPDF_SIGN_ENABLEDfalseFalse olduğunda ya da sertifika boş olduğunda SignerInterface şu değere çözümlenir: null
signature.certificateNEXTPDF_SIGN_CERTnullİmzalama sertifikası yolu
signature.private_keyNEXTPDF_SIGN_KEYnullÖzel anahtar yolu
signature.passwordNEXTPDF_SIGN_PASSWORD(boş)Anahtar parolası
signature.extra_certs[]Ara CA sertifikası yolları
signature.levelNEXTPDF_SIGN_LEVELB-Bİmzalayıcıya iletilen PDF Gelişmiş Elektronik İmzalar (PAdES) taban düzeyi

Burada belgelenen Core paketi bir imzalayıcı uygulaması içermez; SignerInterface, bir uygulama sağlanana kadar null olarak çözümlenir; bunu nextpdf/premium sağlar. Premium kullanıldığında level: B-B, bir PAdES B-B taban imzası üretir. Daha yüksek PAdES taban düzeyleri, yapılandırılmış bir zaman damgası otoritesine ve Premium yeteneğine bağlıdır; bu sayfa söz konusu düzeyleri belgelemez.

AnahtarOrtam (birincil)VarsayılanEtki
tsa.urlNEXTPDF_TSA_URLnullZaman damgası otoritesi (TSA) uç noktası. Boş olduğunda TsaClient şu değere çözümlenir: null
tsa.username / tsa.passwordNEXTPDF_TSA_USERNAME / _PASSWORD(boş)TSA HTTP kimlik bilgileri
tsa.cert / tsa.keyNEXTPDF_TSA_CERT / _KEYnullTSA ile karşılıklı aktarım katmanı güvenliği (mTLS) için istemci sertifikası / anahtarı
tsa.timeoutNEXTPDF_TSA_TIMEOUT30PSR-18 istemcisi için saniye cinsinden HTTP zaman aşımı
tsa.pinned_public_keys[]Base64 SHA-256 SubjectPublicKeyInfo (SPKI) sabitlemeleri (RFC 7469). Boş bırakıldığında sabitleme devre dışı kalır
tsa.warn_on_key_rotationNEXTPDF_TSA_WARN_ROTATIONtrueTSA sabitlenmemiş bir SPKI sunduğunda uyarı yayımlar
tsa.allow_insecure_httpNEXTPDF_TSA_ALLOW_INSECURE_HTTPfalseTSA için düz metin HTTP’ye izin verir. Üretimde false bırakın
AnahtarOrtam (birincil)VarsayılanEtki
ocsp_cache.enabledNEXTPDF_OCSP_CACHE_ENABLEDtrueDoğrulama sırasında çevrimiçi sertifika durumu protokolü (OCSP) yanıtlarını önbelleğe alır
ocsp_cache.ttlNEXTPDF_OCSP_CACHE_TTL86400Saniye cinsinden önbellek TTL’si
ocsp_cache.directoryNEXTPDF_OCSP_CACHE_DIRnullÖnbellek dizini; null önbelleği yalnızca bellekte tutar
AnahtarOrtam (birincil)VarsayılanEtki
queue.connectionNEXTPDF_QUEUE_CONNECTIONnullKuyruk bağlantısı; null varsayılan bağlantıyı kullanır
queue.queueNEXTPDF_QUEUE_NAMEpdfİçine GeneratePdfJob işinin gönderildiği kuyruk
queue.timeoutNEXTPDF_QUEUE_TIMEOUT120İş başına saniye cinsinden zaman aşımı
AnahtarOrtam (birincil)VarsayılanEtki
artisan.chrome_binaryNEXTPDF_ARTISAN_CHROME_BINARYortam değeri veya ayarlanmamışChrome/Chromium ikili dosyasının yolu
artisan.render_timeoutNEXTPDF_ARTISAN_RENDER_TIMEOUT30Saniye cinsinden işleme zaman aşımı
artisan.default_cssNEXTPDF_ARTISAN_DEFAULT_CSS(boş)İşlenen HTML’ye enjekte edilen varsayılan CSS
artisan.no_sandboxNEXTPDF_ARTISAN_NO_SANDBOXfalseChrome korumalı alanını devre dışı bırakır
artisan.max_html_sizeNEXTPDF_ARTISAN_MAX_HTML_SIZE5000000Bayt cinsinden en büyük HTML girişi boyutu

Yapılandırmadaki artisan bölümü, belge bağlamasına yalnızca bir Chrome tarayıcı fabrikası sınıfı mevcut olduğunda uygulanır (nextpdf/artisan uzantısı). Söz konusu sınıf bulunmadığında bölüm yok sayılır.

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 olduğunda, signature.certificate boşsa SignerInterface yine null olarak çözümlenir; her iki değer de ayarlanmalıdır.
  • tsa.url = null, TsaClient değerinin null olarak çözümlenmesini zorlar; diğer tsa.* anahtarları doldurulmuş olsa bile.
  • signature.level = null, imzalayıcıda PAdES B-B düzeyine geri döner.
  • image_cache_mb değerinin null olarak ayarlanması (0 değil) 50 MB’lık varsayılana geri döner; 0 önbelleğe almayı açıkça devre dışı bırakır.
  • Eski TCPDF_* ortam değişkenleri okunabilir kalır ancak kullanımdan kaldırılmıştır. NEXTPDF_* değişkenlerine geçin.

Yapılandırma okuması O(1) dizi erişimi kullanır. preload_fonts, daha düşük ilk istek gecikmesi için çalışan başlatılırken tek seferlik bir O(f) ayrıştırma ödünleşimi getirir. Daha büyük bir image_cache_mb, işlemde yerleşik bellek pahasına tekrarlanan görüntü kod çözmeyi azaltır.

tsa.allow_insecure_http zaman damgası güvenini zayıflatır ve üretimde false olarak kalmalıdır. TSA URL’leri yalnızca güvenilir yapılandırmadan gelmelidir. Bunları bir yönetim yüzeyi üzerinden açığa çıkarırsanız, istek sahteciliği riskini azaltmak için çıkış güvenlik duvarı ya da DNS ilkesi kullanın. Bkz. /integrations/laravel/security-and-operations/.

Yapılandırma dosyasının biçimini düzenleyen normatif bir standart yoktur. Tüm anahtarlar, belgelenen revizyonda paketin config/nextpdf.php dosyasına göre doğrulanır. İmza düzeyi anlamları Premium tarafından yönetilir; bunlar bu Core sayfasının kapsamı dışındadır.

İmza ve tsa bölümleri, nextpdf/premium kurulu olduğunda Premium imzalamayı yönlendirir. Bu isteğe bağlı Enterprise yeteneği, Core paketinde kod değişikliği gerektirmez. <https://nextpdf.dev/get-license/? adresine bakın.intent=laravel-signing>.

  • /integrations/laravel/install/ — yapılandırma dosyasını yayımlayın
  • /integrations/laravel/production-usage/ — yapılandırmanın gerçek bir denetleyicide uygulanışını görün
  • /integrations/laravel/security-and-operations/ — TSA ve kuyruk ayarlarını sıkılaştırın
  • /integrations/laravel/boot-and-discovery/ — her anahtarın hangi bağlamayı yönlendirdiğini görün