İçeriğe geç
getnextpdf.com

Pro sürüm

Form — Derinlemesine başvuru

Bu sayfa, Pro Form modülü için derinlemesine başvurudur. AcroForm değer çıkarımını, XFDF okuma ve yazmayı, veri bağlamayı ve XFA veri çıkarımını kapsar. Modül, Core form okuyucunun ürettiği NextPDF\Form\FormField değerlerini tüketir ve bunların üzerine dizileştirme, ayrıştırma ve bağlama ekler. XFA desteği veri odaklıdır: ayrıştırıcı, template ve datasets paketlerini yapılandırır. XFA hesaplama betiklerini yürütmez veya dinamik XFA yerleşimlerini işlemez.

Bu yetenek NextPDF Pro (nextpdf/pro) ile gelir ve bir Pro katmanı lisans zarfıyla etkinleşir. Bu yetkilendirme olmadan bir dağıtım, yeteneğin sınıflarını yüklemez. Sürümleri karşılaştırın ve bir lisans edinin.

Özellik başına lisans bayrağı yoktur. Bu, bir Pro sürümü yeteneğidir.

SembolParametrelerVarsayılan davranışDöndürürŞununla hata verir/başarısız olurNotlar
FormDataExtractor::extractlist<FormField> $fieldsHer alanın adını ve değerini okurXfdfDataDeğeri boş olan alanları da içerir.
FormDataExtractor::toArraylist<FormField> $fieldsAd-değer dize eşlemesi oluştururarray<string, string>Sonraki yinelenen bir ad, öncekinin üzerine yazar.
FormDataExtractor::toXfdflist<FormField> $fields, ?string $pdfHref = nullXfdfWriter::fromFields’e yetki devrederstring (XFDF XML)Tek çağrıyla dışa aktarım için kolaylık yolu.
FormDataExtractor::extractNonEmptylist<FormField> $fieldsDeğeri boş dize olan alanları atlarXfdfData
FormDataExtractor::getEmptyFieldNameslist<FormField> $fieldsDeğeri ayarlanmamış alanların adlarını listelerlist<string>extractNonEmpty’in tümleyeni.
XfdfWriter::fromFieldslist<FormField> $fields, ?string $pdfHref = nullAd-değer çiftlerini toplar, fromArray’e yetki devrederstring (XFDF XML)
XfdfWriter::fromArrayarray<string, string> $data, ?string $pdfHref = nullEşlemeyi XfdfData içine sarar, yetki devrederstring (XFDF XML)
XfdfWriter::fromXfdfDataXfdfData $data, ?string $pdfHref = nullXFDF’e dizileştirir; nokta gösterimli adlar hiyerarşik <field> öğeleri olarak yuvalanırstring (XFDF XML)XML 1.0’da geçersiz denetim karakterlerini kaldırır; davranış sözleşmesine bakın.
XfdfParser::parsestring $xfdfXmlXML’i XXE’ye karşı güvenli biçimde yükler ve alanları nokta gösterimine düzleştirirXfdfDataInvalidArgumentException10 MiB giriş üst sınırı; ad alanlı ve ad alansız kökleri kabul eder.
XfdfParser::parseFilestring $filePathYolu çözer, dosyayı okur, parse’a yetki devrederXfdfDataInvalidArgumentExceptionEksik, dosya olmayan veya okunamayan yollar hata oluşturur.
XfaParser::parsestring $pdfDataİşaretçi denetimi, XML çıkarımı, paket ayrıştırmaXfaFormDataInvalidArgumentException, XfaParseException/XFA işaretçisi yoksa hata değil, boş bir sonuç döner.
XfaParser::hasXfastring $pdfDataBaytları /XFA işaretçisi için tararboolBayt işaretçisi taraması; belirtecin herhangi bir oluşumu eşleşir.
XfaParser::extractXfaXmlstring $pdfDataXFA işaretçileri için akış taraması, ardından doğrudan <xdp:xdp> aramasıstring (XFA XML veya '')RuntimeException (bildirilmiş)Girişin en fazla ilk 50 MiB’ını tarar.
XfaParser::parseXmlstring $xmltemplate ve datasets paketlerini çıkarır, <field> öğelerini ayrıştırırXfaFormDataXfaParseExceptionDOM yüklemesinden önce uygulanan 10 MiB XML üst sınırı.
FormDataBinder::bindlist<FormField> $fields, XfdfData $dataBağlı değerlerle yeni FormField örnekleri oluştururFormDataBindResultOrijinaller asla değiştirilmez; onay kutuları Yes/Off değerine normalleştirilir.
FormDataBinder::fromXfdflist<FormField> $fields, string $xfdfXmlXFDF’i ayrıştırır, ardından bağlarFormDataBindResultInvalidArgumentExceptionHata modları XfdfParser::parse’ınkilerdir.
FormDataBinder::fromArraylist<FormField> $fields, array<string, string> $dataEşlemeyi XfdfData içine sarar, ardından bağlarFormDataBindResult
FormDataBindResultisFullyBound, hasNoUnmatchedKeys, boundCount, fieldCount; readonly fields, boundFieldNames, unmatchedDataKeys, unboundFieldNamesDeğişmez bağlama tanılamalarıyönteme göreisFullyBound, sıfır eşleşmeyen anahtar ve sıfır bağlanmamış alan gerektirir.
XfdfDatahasField, getValue, count, isEmpty, getFieldNames, withField, withoutField, merge; readonly fieldsDeğişmez ad-değer kabıyönteme görewith* ve merge yeni örnekler döndürür; merge, argümanın değerlerini tercih eder.
XfaFormDatagetField, hasField, count, fieldNames; readonly fields, templateXml, datasetsXmlDeğişmez XFA ayrıştırma sonucuyönteme göreGidiş-dönüş için ham template ve datasets paket XML’ini taşır.
XfaFormFieldreadonly name, type, value, required, caption, optionsDeğişmez tek alan kaydıtype, şunlardan biridir: text, numeric, date, choice, button, signature.
XfaPacketenum durumları Template, Datasets, Config, LocaleSet, ConnectionSet, Form; xmlNamespace()Dizeyle desteklenen paket numaralandırmasıxmlNamespace()’ten stringAd alanı URI’leri XFA Specification 3.3’ü izler.
public static function extract(array $fields): XfdfData
public static function toArray(array $fields): array
public static function toXfdf(array $fields, ?string $pdfHref = null): string
public static function extractNonEmpty(array $fields): XfdfData
public static function getEmptyFieldNames(array $fields): array
public static function fromFields(array $fields, ?string $pdfHref = null): string
public static function fromArray(array $data, ?string $pdfHref = null): string
public static function fromXfdfData(XfdfData $data, ?string $pdfHref = null): string
public static function parse(string $xfdfXml): XfdfData
public static function parseFile(string $filePath): XfdfData
public function parse(string $pdfData): XfaFormData
public function hasXfa(string $pdfData): bool
public function extractXfaXml(string $pdfData): string
public function parseXml(string $xml): XfaFormData
public static function bind(array $fields, XfdfData $data): FormDataBindResult
public static function fromXfdf(array $fields, string $xfdfXml): FormDataBindResult
public static function fromArray(array $fields, array $data): FormDataBindResult
  • NextPDF\Pro\Form\Exception\XfaParseException, RuntimeException’ı genişletir — XFA yükü bir XfaFormData’ya ayrıştırılamaz. Alt sınıflama bilinçlidir: mevcut catch (RuntimeException $e) çağrı yerleri çalışmaya devam eder.
  • SPL InvalidArgumentExceptionXfdfParser’a boş, aşırı büyük, hatalı biçimli veya XFDF olmayan giriş; XfaParser::parse’a boş PDF girişi; XfdfParser::parseFile’da okunamayan yollar.

AcroForm çıkarımı. FormDataExtractor, geçirdiğiniz alan listesini gezer ve her alanın adını ve değerini okur. extract bir XfdfData döndürür; toArray düz bir ad-değer dize eşlemesi döndürür. extractNonEmpty, değeri boş dize olan alanları bırakır; getEmptyFieldNames tümleyen ad listesini döndürür. Çıkarım, giriş alanlarını asla değiştirmez.

XFDF yazma. XfdfWriter, ISO 19444-1:2019 yapısına uygun bir belge üretir. Çıktı, XFDF XML bildirimiyle ve Adobe XFDF ad alanında (http://ns.adobe.com/xfdf/) xml:space="preserve" içeren bir xfdf köküyle başlar. Null olmayan bir pdfHref, kaynak PDF’e geri başvuran bir <f href="..."/> başvurusu yayar. Nokta gösterimli alan adları (örneğin address.city) hiyerarşik bir <field> öğe ağacına yuvalanır. Değerler ve öznitelikler, beş XML meta karakterini kaçış karakterine çevirir. Alan adları, değerler ve pdfHref, iyi biçimlilik için ayrıca normalleştirilir: XML 1.0’ın yasakladığı C0 denetim karakterleri kaldırılırken TAB, LF ve CR korunur. Bu normalleştirme tasarım gereği kayıplıdır; böylece yazıcı, çağıranın sağladığı baytlardan bağımsız olarak her zaman iyi biçimlendirilmiş, yeniden ayrıştırılabilir XFDF yayar.

XFDF okuma. XfdfParser, hem ad alanlı hem de ad alansız xfdf köklerini kabul eder ve kök adını büyük/küçük harfe duyarsız eşleştirir; çünkü bazı üreticiler büyük harfli bir kök öğe yayar. Hiyerarşik <field> ağaçları, nokta gösterimli adlara geri düzleşir; böylece yazma ve okuma gidiş-dönüşü tamamlar. Tüm XML yüklemesi ağ erişimini ve harici varlık çözümlemesini devre dışı bırakır. parseFile, aynı ayrıştırmanın önüne yol çözümlemesi ve okunabilirlik denetimleri ekler.

Veri bağlama. FormDataBinder::bind, veri anahtarlarını alan adlarıyla eşleştirir. FormField değişmez olduğundan, bağlama güncellenmiş değerlerle yeni örnekler oluşturur; orijinaller asla değiştirilmez. Sonuç, üç tanılama kümesi bildirir: bağlanan alan adları, eşleşen alanı olmayan veri anahtarları ve hiçbir veri almayan alanlar. Onay kutusu değerleri, ISO 32000-2:2020, 12.7.5.2.3’ün açık/kapalı durum modeline normalleştirilir: büyük/küçük harfe duyarsız yes, true, 1 ve on değerleri Yes’e eşlenir; diğer her değer Off’a eşlenir.

XFA veri çıkarımı. XfaParser::parse, ham PDF baytlarını kabul eder. Önce /XFA işaretçisini tarar; işaretçi yoksa boş bir XfaFormData döndürür. Ardından çıkarım iki strateji dener: XFA XML göstergeleri için streamendstream bloklarının taranması, sonra bir <xdp:xdp> belgesi için doğrudan arama. Tek bir xdp:xdp parçası olduğu gibi döndürülür; birden çok parça, sentezlenmiş bir xdp:xdp zarfında birleştirilir. parseXml, template ve datasets paketlerini çıkarır ve her template <field> öğesini bir XfaFormField’a ayrıştırır: name özniteliği zorunludur, tür alanın UI alt öğesinden türetilir, zorunluluk bayrağı nullTest değeri error olarak ayarlanmış bir validate öğesinden türetilir ve seçim seçenekleri items alt öğelerinden gelir.

XFA desteği veri odaklıdır. Ayrıştırıcı, template ve datasets paketlerini yapılandırır. XFA hesaplama betiklerini yürütmez, dinamik XFA yerleşimlerini işlemez veya her paket türünde gidiş-dönüş yapmaz. Buna güvenmeden önce ayrıştırıcıyı kendi belirli belge kümenizle doğrulayın.

  • XfdfParser::parse(''), InvalidArgumentException oluşturur. 10 MiB üzerindeki giriş, üst sınırı belirten bir InvalidArgumentException oluşturur.
  • Hatalı biçimli XML, toplanan libxml iletilerini taşıyan bir InvalidArgumentException oluşturur. Kökü xfdf olmayan, iyi biçimlendirilmiş bir belge hata oluşturur ve gerçek kök öğeyi adlandırır.
  • <fields> öğesi olmayan bir XFDF belgesi boş bir XfdfData’ya ayrıştırılır; bu bir hata değildir.
  • name özniteliği olmayan alan öğeleri hem XFDF hem de XFA ayrıştırmasında atlanır. <value> alt öğesi olmayan bir XFDF alanı hiçbir giriş katmaz.
  • XfaParser::parse(''), InvalidArgumentException oluşturur. /XFA işaretçisi olmayan ya da XFA XML’i bulunamayan bir PDF, hata oluşturmak yerine boş bir XfaFormData döndürür.
  • hasXfa bir bayt işaretçisi taramasıdır: dosyadaki herhangi bir /XFA belirteci, kullanılmayan bir nesnedeki dahil, eşleşir. Sonraki çıkarım adımı, kullanılabilir XML’in var olup olmadığına karar verir.
  • XFA çıkarımı, PDF bayt dizisinin en fazla ilk 50 MiB’ını inceler; bu sınırın ötesindeki içerik taranmaz.
  • 10 MiB üzerindeki XFA XML’i, herhangi bir DOM ağacı oluşturulmadan önce XfaParseException oluşturur. Hatalı biçimli XFA XML’i, libxml iletileriyle birlikte XfaParseException oluşturur.
  • Onay kutusu normalleştirmesi, tanınmayan değerleri asla geçirmez; kabul edilen açık (on) biçimlerin dışındaki her şey Off değerine eşlenir.
  • Yazıcının denetim karakteri kaldırması kayıplıdır: adlardaki, değerlerdeki veya pdfHref’teki XML 1.0’da geçersiz C0 baytları, çıktı iyi biçimlendirilmiş kalsın diye atılır. TAB, LF ve CR korunur.
  • Tüm XML ayrıştırması, harici varlık çözümlemesini ve ağ erişimini devre dışı bırakır (XXE’ye karşı güvenli).
  • Bu modül hiçbir kriptografik işlem gerçekleştirmez; FIPS modu davranışını değiştirmez.
DavranışBaşvuruDurum
Etkileşimli form / alan sözlüğü modeliISO 32000-2:2020, 12.7Hizalı (ürün temelli)
Onay kutusu açık/kapalı durum normalleştirmesi (Yes/Off)ISO 32000-2:2020, 12.7.5.2.3Hizalı; madde bu sayfanın atıf kaydında belirtilmiştir
XFDF veri değişim yapısıISO 19444-1:2019Hizalı (ürün temelli)
XFA paket adları ve ad alanı URI’leriXFA Specification 3.3Hizalı (ürün temelli)

Yazım sırasında kullanılabilir olan RAG derlemi ISO 19444-1:2019’u, XFA Specification’ı veya W3C XML 1.0’ı içermez; bu nedenle bu hizalama beyanları, madde atıflı değil, kaynak açıklamalarına ve testlere dayalı ürün temellidir. Bu beyanlar, başvurulan belgelere karşı yeteneği tanımlar. NextPDF hiçbir uygunluk sertifikasyonuna sahip değildir ve bir maddenin desteklenmesi bir sertifikasyon beyanı değildir.

  • XfaParser dışındaki her giriş noktası statiktir. XfaParser örneklenebilir ve durumsuzdur; tek bir örnek belgeler arasında güvenle yeniden kullanılabilir.
  • Amaçlanan gidiş-dönüş şudur: Core form okuyucu FormField değerleri üretir; FormDataExtractor veya XfdfWriter bunları dizileştirir; XfdfParser veriyi geri okur; FormDataBinder bunu bir alan listesine uygular. Hiyerarşik adlar, nokta gösterimi aracılığıyla gidiş-dönüşü atlatır.
  • Bir doldurma işlemini kabul etmeden önce bir XFDF veri dosyası ile gözden geçirilmiş bir PDF şablonu arasındaki sapmayı saptamak için FormDataBindResult tanılamalarını (isFullyBound, unmatchedDataKeys, unboundFieldNames) kullanın.
  • XfdfData bir değer nesnesidir: withField, withoutField ve merge yeni örnekler döndürür. Anahtar çakışmalarında merge, argümanın değerlerini tercih eder.
  • XfaFormData, ham template ve datasets paket XML’ini (templateXml, datasetsXml) saklar; böylece alan modelinin kapsamadığı paketleri sonradan işleyebilirsiniz.
  • Bu modül, AcroForm sözlüklerini PDF baytlarından kendisi ayrıştırmaz; Core form okuyucunun ürettiği alanları tüketir. Yalnızca XfaParser ham PDF içeriği üzerinde çalışır.

Bu sayfa yalnızca dışarıdan gözlemlenebilir davranışı ve desteklenen genel API yüzeyini belgeler. Dahili ad alanı yolları, yardımcı sınıflar, mekanizma tabloları, çalıştırma kılavuzu (runbook) dosya adları ve bilet önekleri kapsam dışıdır.