İçeriğe geç
getnextpdf.com

Ekipler neden NextPDF'i seçer

Spec: ISO 32000-2Spec: ETSI EN 319 142-1

Bir PDF motoru seçmek, sonradan gelecek pek çok kararı sessizce belirleyen küçük bir karardır. Bu sayfa, NextPDF lehine yapılan savunmayı bir ekibin gerçekte verdiği karar olarak çerçeveler: PHP’de kalmak mı yoksa bir yardımcı süreç mi çalıştırmak, koda sahip olmak mı yoksa bir kara kutu mu kiralamak, gerçek imzalar mı yoksa bir onay kutusu mu üretmek, üretime taşınabilen bir prototip mi yoksa oraya ulaşmak için yeniden yazılması gereken bir prototip mi göndermek.

Ürettiğiniz PDF nadiren hikâyenin sonudur. İmzalanır, arşivlenir, bir düzenleyiciye e-postayla gönderilir veya kodu yazdığınızda odada olmayan biri tarafından yıllar sonra açılır. Bu da bir PDF motorunu bir yardımcı çağrı değil, bir altyapı seçimi yapar. Yanlış olanı sonradan, bir doğrulayıcının reddettiği bir imza, bir denetleyicinin başarısız ilan ettiği bir arşiv veya belgeleriniz yalnızca kendi servisleri üzerinden işlendiği için terk edemeyeceğiniz bir tedarikçi faturası olarak ortaya çıkar.

Bir ekip genellikle bu kararı yeniden gözden geçirme fırsatı bulamaz. Birinci haftada seçtikleri motor, üçüncü yılda kritik yolda olan motordur. Dolayısıyla dürüstçe yanıtlanmaya değer soru “bir PDF üretebilir mi” değildir — neredeyse her şey üretebilir — “belge yasal veya arşivsel bir nesneye dönüştüğünde bu dayanacak mı” sorusudur.

Ekipler NextPDF’i seçer, çünkü dört ayrı riski aynı anda ortadan kaldırır:

  • PHP-yereldir. Uygulamanızın yanında işlettiğiniz, ölçeklediğiniz ve güvenliğini sağladığınız ayrı bir çalışma zamanı değil, kendi sürecinizde çalışan bir PDF 2.0 motoru.
  • Varsayılan olarak açıktır. Çekirdek Apache-2.0’dır — okunabilir, çatallanabilir, kendi deponuza alınabilir. Gelişmiş sürümler yetenek ekler; belgelerinizi asla rehin tutmazlar.
  • İmzalaması standart düzeyindedir. Bir Avrupalı doğrulayıcının daha önce hiç görmediği, evde geliştirilmiş bir imzalama şeması değil, PAdES temel profilleri (Spec: ETSI EN 319 142-1, §6).
  • Aynı kodla ölçeklenir. Birinci gün yazdığınız prototip, üretim kod yoludur. “Şimdi onu gerçek motora taşıyın” diye bir adım yoktur.

Bu dört iddianın her biri somut bir özelliğe karşılık gelir ve her biri bir gözden geçirenin inanç temelinde kabul etmek yerine doğrulayabileceği bir şeydir.

PHP-yerel olmak ikinci bir çalışma zamanı olmaması demektir. NextPDF, biçimin geçerli sürümünde tanımlandığı şekliyle PDF 2.0’ı hedefler (Spec: ISO 32000-2, §6) ve bunu PHP sürecinizin içinden yapar. Canlı tutulacak başsız bir tarayıcı, dağıtılacak bir mikroservis, karşılıklı veri aktarımı yapılacak bir dil sınırı yoktur. Yığını zaten PHP olan bir ekip için işletim yüzeyi tam olarak olduğu kadar geniş kalır. Tarayıcı düzeyinde bir oluşturucu gerçekten doğru araç olduğunda, NextPDF bir tanesini sürebilir — ancak bu, devraldığınız bir bağımlılık değil, verdiğiniz bir karardır. Bu ödünleşim, entegrasyon karar kılavuzunun konusudur.

Varsayılan olarak açık olmak bağımlılık tuzağı olmaması demektir. Çekirdek motor Apache-2.0’dır. Baytlarınıza dokunan her satırı okuyabilir, onu özel bir yansımaya alabilir, bir sürüm asla takip edemeyeceğiniz bir yöne giderse onu çatallayabilir ve göndermeyi sürdürebilirsiniz. Çekirdeğin ürettiği bir belge, uyumlu herhangi bir okuyucunun açtığı standart bir PDF’tir — yalnızca tek bir tedarikçinin servisi üzerinden gidip gelen tescilli bir kap değildir. Ticari sürümler eklemelidir: donanım destekli imzalama ve yüksek hacimli özellikler gibi yetenekleri açar, ancak ürettikleri belgeler tamamen sahip olduğunuz, sıradan, standartlara uyumlu PDF’ler olarak kalır.

Standart düzeyinde imzalama, gözden geçirmeden sağ çıkan bir imza demektir. “Yeterince iyi” bir PDF kütüphanesinin sessizce bir yükümlülüğe dönüştüğü yer burasıdır. Bir doğrulayıcının tanımadığı bir imza, önemli olan amaç açısından, bir imza değildir. NextPDF, ETSI tarafından tanımlanan PAdES temel ilerlemesini — B-B, B-T, B-LT, B-LTA — hedefler; bir Avrupalı doğrulayıcının ve bir denetçinin görmeyi beklediği düzeyler. Sınır kademelidir: Apache-2.0 çekirdek, yerel veya sağlanan bir anahtar kullanarak B-B ve B-T düzeyleri için bir yazılım CMS/PAdES imzalayıcısı gönderirken, uzun vadeli doğrulama düzeyleri (B-LT, B-LTA) ve HSM- veya bulut-KMS-destekli anahtarlar gelişmiş sürüm yetenekleridir. PAdES, PDF için ETSI imza profilidir; eIDAS — AB düzenlemesi (Spec: Regulation (EU) No 910/2014 (eIDAS), Art. 25) — elektronik bir imzaya yasal geçerliliğini veren şeydir ve PAdES, bir eIDAS yükümlülüğünün çözüldüğü PDF gerçekleşmesidir; motorun yakın bir alternatif yerine profil ailesini hedeflemesinin tam nedeni de budur. PAdES temel profilleri sayfası, ilerlemeyi ve yükümlülüğünüzün gerçekte ihtiyaç duyduğu düzeyi nasıl seçeceğinizi adım adım anlatır.

  1. Stay in your stackA PHP-native PDF 2.0 engine runs in-process — no second runtime to deploy, scale, or secure.
  2. Own what you shipApache-2.0 core: readable, forkable, vendorable. The documents are standard PDFs you keep, not a proprietary container.
  3. Sign for realPAdES baseline profiles (ETSI EN 319 142-1), the levels a validator and an auditor recognise — not a homegrown scheme.
  4. Grow without a rewriteThe prototype is the production path. Fail-fast typed inputs catch mistakes in development, where they are cheap.
The decision a team faces when adopting a PDF engine, and the NextPDF property that resolves each step: stay native rather than operate a sidecar; own the code under Apache-2.0 rather than rent a black box; emit a recognised PAdES profile rather than a bespoke signature; and keep the same code path from prototype to production.

Prototipten üretime, yeniden yazma olmaması demektir. Dördüncü risk en sessiz olanıdır: muhteşem bir tanıtım yapıp sonra canlıya geçmek için değiştirilmesi gereken bir araç. NextPDF, yazdığınız ilk program işlettiğiniz programla aynı olacak şekilde inşa edilmiştir. Girdiler katı biçimde türlenir ve kenarda doğrulanır; böylece üretimde göreceğiniz başarısızlık biçimleri, geliştirmede zaten gördüğünüz biçimlerdir — bir bayt yazılmadan önce, çağrı noktasında, adlandırılmış olarak. Bu duruş, tasarım felsefesinin ve tahmin yürütmeyi reddeden bir API’nin konusudur; burada önemli olmasının nedeni, aynı kod yolunun bir ekibi bir hafta sonu denemesinden düzenlenmiş bir iş yüküne taşımayı mümkün kılan şey olmasıdır.

“Aynı kodla prototipten üretime” biçiminin şeklini görmenin en kolay yeri çağrı noktasıdır. Bir ekibin motoru değerlendirmek için yazdığı program, satır satır, üretimde çalışan programdır — yalnızca imzalama malzemesi değişir.

<?php
declare(strict_types=1);
use NextPDF\Contracts\Orientation;
use NextPDF\Contracts\OutputDestination;
use NextPDF\Core\Document;
use NextPDF\Signature\SignatureLevel;
use NextPDF\ValueObjects\PageSize;
$document = Document::createStandalone();
$document->setTitle('Service Agreement');
// Typed page geometry and an enum orientation — intent is explicit,
// so a typo is a type error in development, not a silent default in production.
$document->addPage(PageSize::a4(), Orientation::Portrait);
$document->setFont('helvetica', 'B', 16);
$document->cell(0, 12, 'Service Agreement', newLine: true);
// The signature level is a recognised PAdES baseline profile, named as an
// enum case — never a string the engine has to interpret. B-T is a core
// software-signing level; the long-term levels (B-LT, B-LTA) are an
// advanced-edition capability selected the same way.
$document->setSignature(certInfo: $certInfo, level: SignatureLevel::PAdES_B_T);
// The output destination is stated, not inferred from whether a filename
// was passed. The same call shape serves a spike and a production endpoint.
$bytes = $document->output(dest: OutputDestination::String);

Bu programda prototip ile dağıtım arasında hiçbir şey değişmez. Ekip, yer tutucu yerine gerçek imzalama malzemesini koyar ve çıktıyı bir tampon yerine bir yanıta yönlendirir. Motor, API ve başarısızlık biçimleri her iki yerde de aynıdır — ki bütün mesele de budur.

Sık karşılaşılan itiraz “açık kaynak çekirdek demek, gerçek ürünün ödeme duvarının arkasında olması demektir, dolayısıyla ücretsiz kısım bir teaser’dır” biçimindedir. Bu, ilişkiyi tersine çevirir. Çekirdek, Apache-2.0 altında bir üretim PDF 2.0 motorudur — belge üretimi, standartlara uyumlu çıktı ve B-B ile B-T düzeylerinde yazılım CMS/PAdES imzalama; ekipler bunu üretimde değişiklik yapmadan çalıştırır. Gelişmiş sürümler, bunlara ihtiyaç duyan ekipler için uzmanlaşmış yetenek ekler — uzun vadeli doğrulama imzalaması (B-LT, B-LTA), HSM- ve bulut-KMS-destekli anahtarlar, ölçek özellikleri. Sınama basit ve doğrulanabilirdir: çekirdeğin ürettiği bir belge, onu geri okumak için bir NextPDF servisine bağımlılık olmadan, uyumlu herhangi bir okuyucuda açılan standart bir PDF’tir. Fidye için tutulan bir rehin yoktur.

İkinci bir yanlış anlama, “PHP-yerel”in “bir tarayıcı motorundan daha az yetenekli” anlamına geldiğidir. Farklı anlamına gelir ve tarayıcı düzeyinde bir oluşturucunun daha iyi bir seçenek olduğu dürüst durumlar NextPDF’in ne zaman kullanılmayacağı sayfasında kataloglanmıştır — gizlenmemiştir.

Bu sayfa, benimseme lehine bir savunmadır; evrensel uygunluk iddiası değildir. NextPDF, bir PHP yığınında programlı, standart düzeyinde belge üretimi için doğru araçtır. Bir web tarayıcısının piksel düzeyinde mükemmel bir yeniden uygulaması değildir ve her belge sorununun yanıtı da değildir; sınır, NextPDF’in ne zaman kullanılmayacağı sayfasında açıkça belirtilmiştir.

Hardware-backed (HSM) signing — edition availability
EditionAvailability
CoreNot in this edition — software signing only (B-B, B-T).
ProAvailable — HSM and qualified-device signing.
EnterpriseAvailable — HSM and qualified-device signing.

İki sınır vurgulanmayı hak ediyor. Birincisi, imzalama yeteneği kademelidir: Apache-2.0 çekirdek, yerel veya sağlanan bir anahtarla B-B ve B-T düzeylerinde yazılım CMS/PAdES imzalama sağlarken, uzun vadeli doğrulama düzeyleri (B-LT, B-LTA) ve bir HSM, nitelikli cihaz veya bulut KMS aracılığıyla donanım destekli anahtarlar gelişmiş sürüm yetenekleridir. İkincisi — ve bu, her uyumluluk iddiasındaki dürüst sınırdır — uyumluluğa, üreticinin değil, bağımsız bir denetleyicinin karar verir. PAdES, PDF için ETSI imza profilidir; PDF/A-4 (Spec: ISO 19005-4, §6), ISO 19005-4 tarafından tanımlanan, ayrı bir arşivsel uyumluluk düzeyidir. NextPDF her birini hedefleyebilir, ancak bir profili hedeflemek uyumluluğun garantisi değildir: yetkili karar, dosyayı yazan motordan değil, bir PDF/A doğrulayıcısından veya bir imza doğrulayıcısından gelir. Motoru sizi “geçmesi gerek” noktasına getiren araç, denetleyiciyi de “geçiyor” diyen araç olarak ele alın.

  • PDF 2.0 — ISO 32000-2’de belirtilen, PDF biçiminin geçerli sürümü. NextPDF bunu kayıtlı sürüm olarak hedefler; böylece çıktısı bir tedarikçi lehçesine değil, geçerli ISO standardına göre ölçülür.
  • PAdES — PDF Advanced Electronic Signatures, PDF’leri imzalamaya yönelik ETSI profil ailesi (EN 319 142-1). Temel düzeyleri — B-B, B-T, B-LT, B-LTA — bir Avrupalı doğrulayıcının ve bir denetçinin görmeyi beklediği şeydir.
  • eIDAS — Regulation (EU) No 910/2014, elektronik ve nitelikli imzalara yasal geçerliliklerini veren AB çerçevesi; PAdES, bir eIDAS yükümlülüğünün çözüldüğü PDF gerçekleşmesidir.
  • PDF/A — uzun vadede kendi kendine yeterli ve okunabilir kalması gereken belgeler için arşivsel uyumluluk ailesi (burada, ISO 19005-4 kapsamındaki PDF/A-4).
  • Apache-2.0 — NextPDF çekirdeğinin izin verici açık kaynak lisansı: motoru kullanabilir, değiştirebilir, kendi deponuza alabilir ve yeniden dağıtabilirsiniz; kendi uygulamanızı açma yükümlülüğü yoktur.
  • Bağımlılık tuzağı olmaması (No lock-in) — bir motorun ürettiği belgelerin, üreticinin servisine herhangi bir bağımlılık olmadan okunabilen, tamamen sahip olduğunuz standart, tedarikçiden bağımsız nesneler olması özelliği.