NextPDF SSS
Bir bakışta
“Bir bakışta” başlıklı bölümBu sayfa, NextPDF’i değerlendirirken veya yeni bir proje başlatırken ilk akla gelen soruları yanıtlar. Her yanıt kısadır ve onu tam olarak ele alan sayfaya bağlanır. NextPDF, ISO 32000-2 tarafından tanımlanan dosya biçimi olan Taşınabilir Belge Biçimi (PDF) 2.0 belgelerini üreten ve inceleyen bir PHP 8.4 motorudur.
Yepyeniyseniz, önce Başlangıç sayfasını okuyun, ardından ayrıntılar için buraya geri dönün.
Başlarken
“Başlarken” başlıklı bölümHangi sürüme ihtiyacım var: Core, Pro mu yoksa Enterprise mi?
“Hangi sürüme ihtiyacım var: Core, Pro mu yoksa Enterprise mi?” başlıklı bölümCore ile başlayın. Açık kaynaklı çekirdek (nextpdf/core), Apache-2.0 lisansı
altında ve ücretsiz olarak PDF çıktısı üretir, desteklenen HTML’i PDF’lere işler ve
PDF’leri inceler. Core, PDF Gelişmiş Elektronik İmzaları (PAdES) B-B ve B-T temel
düzeyleri için zaten CMS SignedData imzaları üretir.
Gelişmiş üretim ve belge işlemleri, elektronik
fatura çıktısı (Factur-X / ZUGFeRD) veya uzak, bulut-KMS ve sıralı imzalama gibi
gelişmiş imzalama iş akışları gerektiğinde Pro’yu seçin.
PDF/A arşivleme yazma iş akışları, bir belge güvenlik deposu ve belge zaman
damgalarıyla PAdES uzun vadeli düzeyleri (B-LT / B-LTA), bir donanım güvenlik
modülü (HSM) aracılığıyla donanım destekli imzalama veya nitelikli elektronik
imzalar gerektiğinde Enterprise’ı seçin.
Pro ve Enterprise, ücretli ürün hattı olan NextPDF Premium’un iki lisanslı sürümüdür; bkz.
Yolunuzu seçin.
Gerçekten Apache-2.0 mı?
“Gerçekten Apache-2.0 mı?” başlıklı bölümEvet, çekirdek için. nextpdf/core, "license": "Apache-2.0" bildirir ve tam
Apache License 2.0 metnini LICENSE dosyasında gönderir. Atıf ve NOTICE
gereksinimlerine (Apache-2.0 §4) tabi olarak çekirdeği kullanabilir,
değiştirebilir, yeniden dağıtabilir ve ticarileştirebilirsiniz. NextPDF Pro ve
NextPDF Enterprise, sahipli ticari sürümlerdir ve o lisans tarafından kapsanmaz.
NextPDF adı ve logosu, kod lisansından ayrı olarak ticari markalardır. Bkz.
Ürün lisanslama.
En düşük PHP sürümü nedir?
“En düşük PHP sürümü nedir?” başlıklı bölümPHP 8.4. Paket kısıtlaması >=8.4 <9.0’dır, dolayısıyla Composer PHP 8.3 ve
altında ya da PHP 9’da kurmayı reddeder. NextPDF tek bir modern çalışma zamanını
hedefler ve onun dil özelliklerini doğrudan kullanır. Bkz.
NextPDF’i kurun.
Harici bir ikiliye veya başsız bir tarayıcıya ihtiyacı var mı?
“Harici bir ikiliye veya başsız bir tarayıcıya ihtiyacı var mı?” başlıklı bölümHayır, çekirdek motor için değil. Yerel motor, harici bir PDF ikilisi ve zorunlu
bir başsız tarayıcı olmadan PHP ve standart PHP uzantılarında uygulanmıştır: akıcı
API ve yerleşik writeHtml() HTML işlem hattı, tarayıcı olmadan ve ağ çağrısı
olmadan süreç içinde çalışır. Bir Chrome veya Chromium ikilisi isteğe bağlıdır
ve yalnızca, ayrı olarak nextpdf/artisan olarak kurduğunuz Artisan işleyicisi
(writeHtmlChrome()) için gereklidir. Cloudflare ve Gotenberg köprüleri de isteğe
bağlıdır ve bir hizmete dışarı çağrı yapar. Bkz.
Yolunuzu seçin.
Hangi PHP uzantılarını gerektirir?
“Hangi PHP uzantılarını gerektirir?” başlıklı bölümÇekirdeğin composer.json dosyası, yaygın olarak bulunan PHP uzantıları olan
ext-mbstring, ext-zlib, ext-intl, ext-gd, ext-curl ve ext-openssl
standart uzantılarını gerektirir; bunların çalışma zamanınızda kurulu ve etkin
olduğundan emin olun. ext-curl, isteğe bağlı ağ gidiş-dönüşlerini — RFC 3161
zaman damgalama ve uzak varlık getirmeleri — destekler, dolayısıyla çevrimdışı
yerel üretim onu kullanmaz, ancak Composer onu yine de sert bir gereksinim olarak
listeler. Tümleştirmeler, başlatma sırasında ihtiyaç duydukları uzantıları denetler
ve eksik olan varsa açık bir mesajla durur. Tam liste paket composer.json
dosyasında bulunur; bkz. NextPDF’i kurun.
İlk PDF’imi nasıl üretirim?
“İlk PDF’imi nasıl üretirim?” başlıklı bölümÇekirdeği kurun, ardından akıcı API ile bir belge oluşturun:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$document = Document::createStandalone();$document->addPage();$document->setFont('helvetica', 'B', 24);$document->cell(0, 15, 'Hello, NextPDF!', newLine: true);$document->save(__DIR__ . '/first.pdf');Adım adım inceleyin: İlk PDF’iniz.
Sürümler ve lisanslama
“Sürümler ve lisanslama” başlıklı bölümCore’un herhangi bir özellik sınırı veya filigranı var mı?
“Core’un herhangi bir özellik sınırı veya filigranı var mı?” başlıklı bölümHayır. Core, Core özellik kümesi için filigransız ve dürtme ekranı olmayan açık kaynaklı motordur. Core özellik kümesi için — üretim, inceleme, şifreleme, PDF/A ve PDF/UA çıktı temelleri ve yazılım anahtarlı B-B/B-T imzalama (Premium uzun vadeli doğrulama ve anahtar saklama iş akışları olmadan) — Core eksiksizdir. Değerlendirme filigranı yalnızca, tam Pro ve Enterprise özellik kümesini kaldırılabilir bir işaret ardında test ettiğiniz bir Premium değerlendirme yetkisinde geçerlidir; ücretli bir lisans, hiçbir uygulama kodu değişikliği olmadan onu kaldırır. Bkz. Lisanslama ve etkinleştirme.
Pro veya Enterprise’a yükseltmek için kod değişikliklerine ihtiyacım var mı?
“Pro veya Enterprise’a yükseltmek için kod değişikliklerine ihtiyacım var mı?” başlıklı bölümÇoğunlukla hayır. nextpdf/premium kurduğunuzda, çerçeve tümleştirmeleri ve sunucu
onu otomatik olarak algılar ve ek yetenekleri açığa çıkarır. Çoğu uygulama aynı üst
düzey tümleştirme noktalarını korur; bazı Premium iş akışları yapılandırma veya
özelliğe özgü çağrılar gerektirebilir. İmzalı bir lisans zarfını dağıtım başına bir
kez etkinleştirirsiniz. Bkz.
Lisanslama ve etkinleştirme.
Çekirdeği kapalı kaynaklı bir ticari üründe kullanabilir miyim?
“Çekirdeği kapalı kaynaklı bir ticari üründe kullanabilir miyim?” başlıklı bölümEvet. Apache License 2.0’ın ticari olmayan bir kısıtlaması yoktur. Atıf ve NOTICE
yükümlülüklerini yerine getirmeniz ve kod lisansını NextPDF markasını kullanma izni
olarak görmemeniz koşuluyla çekirdeği kapalı kaynaklı, ücretli ya da dahili ticari
ürünlerde kullanabilirsiniz. Bkz.
Ürün lisanslama ve
Ticari marka ve marka kullanımı.
Yetenekler
“Yetenekler” başlıklı bölümPDF’leri okuyup ayrıştırabilir mi, yoksa yalnızca yazabilir mi?
“PDF’leri okuyup ayrıştırabilir mi, yoksa yalnızca yazabilir mi?” başlıklı bölümİkisi de, bir uyarı ile. NextPDF, PDF’leri yazar ve aynı zamanda okur: Inspect
modülü, mevcut bir dosyayı karmaşıklık, yazı tipi, görüntü ve risk verisiyle
yapılandırılmış bir InspectResult’a okur ve mevcut belgeleri birleştirip
bölebilirsiniz. Inspect, deneysel olarak işaretlidir, dolayısıyla sonuç şekli
minör sürümler arasında değişebilir — onu uzun ömürlü bir sözleşme olarak değil,
tanılama ve geçit kontrolü için kullanın. Bkz.
Inspect modülü.
Seçilebilir, aranabilir metin üretir mi?
“Seçilebilir, aranabilir metin üretir mi?” başlıklı bölümEvet. Hem akıcı API hem de yerleşik writeHtml() işlem hattı, rasterleştirilmiş
görüntüler değil, gerçek metin içeriği yayar, dolayısıyla çıktı seçilebilir ve
aranabilirdir. Artisan işleyicisinin writeHtmlChrome()’u da metni seçilebilir
tutar. Bkz. İlk PDF’iniz.
HTML ve CSS işleme nasıl çalışır?
“HTML ve CSS işleme nasıl çalışır?” başlıklı bölümÇekirdek motor, saf PHP’den bir HTML işlem hattı içerir. writeHtml(), desteklenen
bir CSS alt kümesiyle bir HTML parçasını doğrudan sayfaya, tarayıcı olmadan ve ağ
çağrısı olmadan işler. Bir düzen tam tarayıcı sadakati gerektirdiğinde — örneğin
flexbox, grid veya web yazı tipleri — Artisan işleyicisini kurun ve
writeHtmlChrome() çağırın. Bir özelliğe güvenmeden önce
CSS destek matrisi sayfasını denetleyin.
Yazı tipleri nasıl çalışır?
“Yazı tipleri nasıl çalışır?” başlıklı bölümHelvetica gibi yerleşik standart yazı tipi takma adları, basit WinAnsi metni için kurulum olmadan çalışır, dolayısıyla ilk belgenizin yazı tipi dosyasına ihtiyacı yoktur. Yerleşik Latin standart yazı tipleri temel WinAnsi metnine uygundur; Symbol ve ZapfDingbats kendi kodlamalarını kullanır; başka betikleri işlemek için, karakter haritası ve şekillendirme yolu o betiği destekleyen bir yazı tipini kaydeder ve gömersiniz. Bkz. yazı tipi destek matrisi ve Font modülü.
PDF/A ve erişilebilirliği (PDF/UA) destekliyor mu?
“PDF/A ve erişilebilirliği (PDF/UA) destekliyor mu?” başlıklı bölümEvet, açık bir sınırla: bir profil için destek, uyumluluk değildir. Çekirdek,
uyumluluk ayırıcısını ve etiketleme temellerini gönderir — enableTaggedPdf(),
PDF/UA iş akışlarında kullanılan etiketli-PDF yapısı çıktısını etkinleştirir ve
enablePdfA(), Core’da bir PDF/A çıktı profili seçer; Premium sürümler bunların
üzerine daha üst düzey arşivleme yazma iş akışları ve araçlar (doğrulama, ilke ve
üretim işlemleri) ekler. NextPDF, bir profilin gerektirdiği yapısal yapıtları yayar;
veraPDF gibi bağımsız bir doğrulayıcı, belirli bir dosyanın gerçekten uyumlu olup
olmadığına karar verir. Bkz. Uyumluluk ve
Erişilebilirlik modülü.
Bir PDF’i nasıl imzalarım?
“Bir PDF’i nasıl imzalarım?” başlıklı bölümÇekirdek, yapılandırılmış imzalama sağlayıcısı aracılığıyla desteklenen yazılım
anahtarlı algoritmaları kullanarak Şifreleme Mesajı Söz Dizimi (CMS) SignedData
imzaları üretebilir ve RFC 3161 zaman damgaları (B-T düzeyi) uygulayabilir.
Kodunuz SignerInterface sözleşmesine bağlıdır, dolayısıyla aynı çağrı sürümler
arasında çalışır. PAdES B-LT ve B-LTA uzun vadeli düzeyleri, HSM ve PKCS#11 anahtar
saklama ile nitelikli imzalar Enterprise yetenekleridir; bulut ve KMS destekli
imzalama iş akışları Pro’da bulunur. Core, B-B ve B-T temel yapılarını üretir. Bkz.
İmzalama modülü.
Üretim
“Üretim” başlıklı bölümÇalışan-güvenli ve iş parçacığı-güvenli mi?
“Çalışan-güvenli ve iş parçacığı-güvenli mi?” başlıklı bölümBir Document tek kullanımlıktır: birini yazdıktan sonra, onu yeniden kullanmak
yerine bir sonraki belge için taze bir örnek oluşturun. Bu, onu PHP-FPM, kuyruk
çalışanları ve çerçevelerin kullandığı istek başına, iş başına modele doğal bir uyum
hâline getirir — her iş birimi kendi belgesini oluşturur. Güvenilmeyen girdiyi
ayrıştırdığınızda veya oluşturduğunuzda, o işi kısıtlı bir çalışanda çalıştırın ve
kaynak korumalarını (maxFiles, maxTotalBytes, maxBytes) sıkı tutun. Bkz.
Document modülü ve
motor tehdit modeli.
Çıktı belirlenimci mi?
“Çıktı belirlenimci mi?” başlıklı bölümYapısal olarak belirlenimcidir, ancak varsayılan olarak baytça aynı değildir. Aynı
girdinin iki çalıştırması yapısal olarak eşit PDF’ler üretir, ancak her biri taze
bir fragman ve belge /ID’si taşır, dolayısıyla baytlar farklı olur. İmzalama ve
zaman damgaları, tasarım gereği çalıştırma başına daha fazla değişiklik ekler.
Karşılaştırmalarınızı, baytların çalıştırmalar arasında aynı olmasını beklemek
yerine, yapısal eşitlik etrafında planlayın ya da değişken alanları normalleştirin.
Onu nasıl dağıtırım?
“Onu nasıl dağıtırım?” başlıklı bölümDağıtılan her çalışanın aynı motor sürümünü çözümlemesi için composer.lock
dosyasını işleyin, ardından onu herhangi bir PHP kitaplığı gibi dağıtın — yerel
üretimin bir arka plan programına, tarayıcıya ya da ağa ihtiyacı yoktur;
zaman damgalama (B-T), uzak varlıklar veya isteğe bağlı tarayıcı köprüsü
yapılandırılmış ağ erişimi gerektirir. PHP olmayan hizmetlerin motora ihtiyacı varsa,
onu Model Context Protocol (MCP), REST ve gRPC üzerinden açığa çıkaran
NextPDF Server’ı çalıştırın. Premium için, imzalı lisans zarfını
dağıtımın yüklediği yere yerleştirin ve bir kerelik etkinleştirme adımını çalıştırın;
önbelleğe alınmış lisans durumu, normal işlemenin bir lisans hizmetine ihtiyaç
duymaması anlamına gelir, dolayısıyla hava boşluklu dağıtımlar desteklenir. Bkz.
NextPDF’i kurun ve
Lisanslama ve etkinleştirme.
Bir şey ters gittiğinde bir başarısızlığı nereye götürürüm?
“Bir şey ters gittiğinde bir başarısızlığı nereye götürürüm?” başlıklı bölümNextPDF, hataları bir dize hata koduyla değil, PHP istisna sınıfıyla bildirir ve bağlam farkındalıklı istisnalar yapılandırılmış tanılama alanları taşır. Sorun giderme, yaygın imza, PDF/A, PDF/UA, yazı tipi, etiketleme ve şifreleme başarısızlıklarını nedenlerine ve çözümlerine eşler.