ChangeLog
Sürüm geçmişi
PDFlibPas kitaplığının sürüm geçmişi. Girdiler en yeniden en eskiye doğru listelenir; her sürüm, proje sürüm politikasına göre semantik sürümlemeyi izler.
Diller:English (US)English (UK)Español (España)Español (Latinoamérica)DeutschFrançaisItaliano日本語Português (Brasil)NederlandsSvenskaPolskiTürkçe한국어العربيةРусский简体中文繁體中文
v3.56.42 2026-05-27
- v3.56.41'de tanıtılan tampon tabanlı AES-256 çözme yolu düzeltildi; çağıranlar artık şifreli metin tamponunu sağlayan aynı
AnsiStringdeğişkenine çözme sonucunu erişim ihlali olmadan geri atayabilir. - Normal API akışı
LoadFromFile,Encrypt,SaveToFile, yeniden yükleme,DecryptveSaveToFile, büyük yüklenmiş PDFlerde yeniden tamamlanır ve daha az kopya kullanan AES-CBC çözme optimizasyonu korunur. - Kaydetme sırasında şifreli stream geri alınırken giriş tamponu ve sonuç hedefinin aynı olduğu durumlar için AES regresyon kapsamı eklendi; daha önce hatayı ortaya çıkaran büyük 504 KB payloadlar da buna dahildir.
v3.56.41 2026-05-27
- Tam normal nesne grafiğini oluşturmadan sayfa sayısı ve değişmemiş bir dosya kopyası gereken Direct Access iş akışları için
TPDFlib.DACopyFileeklendi. - Yüklenen dizeler ve stream öğeleri çözülürken kullanılan arabellek tabanlı AES-CBC çözme yolları eklenerek AES-256 çözme optimize edildi ve büyük şifreli stream öğelerinde ek şifreli metin kopyaları azaltıldı.
- Delphi
HugeFileBenchmarkdemo artık odaklı büyük dosya çalıştırmaları için birdirect-copysatırı ile--opsve--skipfiltrelerini içerir.
v3.56.40 2026-05-26
- Delphi ve C++Builder
HelloWorlddemoları artık aynı derle-ve-çalıştır akışını korurken belge bilgileri, seçili standart yazı tipi çıktısı, biçimlendirilmiş başlık bloğu, basit vektör çizimi ve sonraki adım yönlendirmesi içeren daha zengin bir başlangıç PDF'i oluşturur. - Delphi ve C++Builder demo notlarının tamamı, parola, kısıtlı dosya ve imzalama sonucu ek notları dahil olmak üzere tarayıcı dostu
Readme.htmlsayfalarıyla değiştirildi; demo dizinleri artık kullanıcıları HTML notlarına yönlendirir.
v3.56.39 2026-05-26
- Doğrudan dosya API kaydetme yolları artık çapraz başvuru arama tablolarını doğrusal olarak oluşturuyor; bu da çok yüksek nesne sayısına veya yoğun sayfa ağaçlarına sahip PDFlerde
DASaveAsFileve ilgili doğrudan kaydetme yollarını çok daha hızlı hale getiriyor. - Optimize edilmiş writer aynı serbest nesne zinciri anlamını korurken tam xref üretimi sırasında yinelenen nesne numarası taramalarından kaçınır; böylece genel API veya çıktı sözleşmesi değişmeden büyük doğrudan kaydetme iş akışları iyileşir.
v3.56.38 2026-05-26
- Normal API şifreleme çıktısı düzeltildi; böylece
Encrypt, AES-256 güvenlik verilerini yazmadan önce trailer/IDöğesini oluşturur veya korur ve şifrelenmiş PDF'lerinEncryptionStatusaracılığıyla yeniden yüklenebilir olarak algılanmasını sağlar. - Normal API
LoadFromFile,Encrypt,SaveToFile, yeniden yükleme,DecryptveSaveToFileiş akışı artık açıkDecryptöncesinde şifrelenmiş durumu korur ve büyük eski PDF'ler için doğrudan dosya API davranışıyla eşleşir.
v3.56.37 2026-05-26
- Kararlı rapor içeriği eşleştiğinde değişken
Generated:zaman damgası satırlarını yok sayan ve boş bir dize döndüren, düz metin preflight raporları için satır satır karşılaştırıcı olanTPDFlib.ComparePreflightReportseklendi. - Delphi
PreflightReportdemosu artık tek dosya modunda--compare <file>desteği sunar; UTF-8.diff.txtraporu yazar ve oluşturulan metin raporu baseline ile farklı olduğunda çıkış kodu 2 döndürür.
v3.56.36 2026-05-26
- Delphi
PreflightReportdemosu artık--input-dir,--output-dirve--recursiveile toplu dizin çalıştırmalarını destekler ve her PDF için<basename>.preflight.<ext>olarak bir rapor yazar. - Batch modu, her kaynak PDF'yi, başarılı/başarısız durumunu, sorun sayısını ve oluşturulan rapor yolunu kaydeden bir UTF-8
preflight-summary.csvdosyası yazar; otomasyon için mevcut çıkış kodu sözleşmesini korur.
v3.56.35 2026-05-26
ReportFormat = 3,TPDFlib.CreatePreflightReportExveTPDFlib.SavePreflightReportExöğelerine CSV çıktısı ekler; rapor meta verileri, seçilen her uyumluluk denetimi, ayrı sorun kodları ve iletileri ve son özet için UTF-8 satırları üretir.- Delphi
PreflightReportdemosu artık--format csvve--csvdesteği sunar; böylece komut satırı preflight çalıştırmaları JSON üzerinde sonradan işlem yapmadan veya metin kazımadan elektronik tablolara ya da basit CI ayrıştırıcılarına veri sağlayabilir.
v3.56.34 2026-05-26
- Mevcut yalnızca metin rapor API'lerini korurken PDF/A ve PDF/UA-1 preflight raporlarını düz metin, JSON veya bağımsız HTML olarak oluşturmak için biçim duyarlı
TPDFlib.CreatePreflightReportExveTPDFlib.SavePreflightReportExAPI'leri eklendi. - Delphi
PreflightReportdemosu artık--format text|json|htmlile--jsonve--htmlkısayollarını destekler; böylece aynı komut satırı iş akışı insan tarafından okunabilir raporlar veya makine tarafından okunabilir CI yapıtları üretebilir.
v3.56.33 2026-05-26
- Uygulamaların string-list tanıtıcılarını el ile numaralandırmadan yerleşik PDF/A ve PDF/UA-1 uyumluluk denetimlerinden yeniden kullanılabilir düz metin raporları oluşturabilmesi için
TPDFlib.CreatePreflightReportveTPDFlib.SavePreflightReporteklendi. - Delphi
PreflightReportdemosu artık doğrudan kitaplık düzeyi rapor API'lerini çağırır; örneği komut satırı iş akışına, seçilen denetimlere, ilk sorun moduna ve otomasyon dostu çıkış kodlarına odaklı tutar.
v3.56.32 2026-05-26
CheckFileComplianceile PDF/A ve PDF/UA-1 denetimleri çalıştıran,GetStringListCountveGetStringListItemile sorun listelerini numaralandıran ve düz metin preflight raporu yazan yeni bir DelphiPreflightReportkonsol demosu eklendi.- Demo
--input,--output,--pdfa,--pdfua,--bothve--first-issueseçeneklerini ve otomasyon dostu başarılı, sorun bulundu ve çalışma zamanı hatası sonuçları için çıkış kodlarını destekler.
v3.56.31 2026-05-25
GetCustomKeys(2)artık/OutputIntents,/Extensions,/Requirements,/Collectionve/NeedsRenderingdahil olmak üzere kitaplık tarafından yönetilen Catalog sistem girdilerini tutarlı biçimde gizler.SetPDFAModetarafından oluşturulan PDF/A output intent'leri artık özel Catalog anahtarları olarak görünmez; bu da uygulama meta verisi numaralandırmasını PDF uyumluluk yapılarından ayrı tutar.
v3.56.25 2026-05-23
- Yazıcı tarafındaki GetPDFUADiagnostics, v3.56.24 sürümündeki okuyucu
10044ile eşdeğer olan karşılık gelenMULTIPLE-H-CHILDREN:Nsorununu kazanır. ISO 14289-1 §7.4.4, tag tree node başına birden fazla doğrudan H child olmasını yasaklar; yazıcı tarafındaki denetim, bellek içindeki FStructElems ağacı böyle bir ihlal içerdiğinde tetiklenir. - Yeni iç içe CountMultipleHChildren yardımcısı, her düzeyde H çocuklarını sayarak ağacı derinlik öncelikli gezer. Denetim, mevcut LIST-STRUCT / LIST-NO-NUMBERING yürüyüşleriyle birlikte çalışır ve aynı FStructElems gezinme desenini paylaşır.
v3.56.24 2026-05-23
- PDF/UA-1 denetimi, ISO 14289-1 §7.4.4 H-tag benzersizlik denetimini kazanır.
10044, birden fazla doğrudan H child — taşıyan tüm yapı düğümlerini raporlar; spesifikasyon güçlü yapılı belgelerde bunu yasaklar ve aynı kısıtlama genel yapı modundan bağımsız olarak herhangi bir tag tree node için de geçerlidir. Diğer §7.4.4 SHALL koşulu (bir belge ya güçlü ya da zayıf yapılı olmalıdır, ikisi birden olamaz) belge genelinde heuristikler gerektirir ve bu denetimin dışında bilinçli olarak bırakılmıştır. - Yeni bir pre-order struct-tree walker (UAVisitStructNodeForHUniqueness / ScanStructTreeForHUniqueness), düğüm başına doğrudan H çocuklarını sayar ve derinlik öncelikli olarak özyinelemeli ilerler. Mevcut başlık / liste / not yürüyüşleriyle aynı K-shape çözücüsünü yeniden kullanır.
v3.56.23 2026-05-23
- PDF/UA-1 denetimi, v3.56.10 sürümündeki sözlük katmanı denetimlerinin TrueType ayrıştırıcısı kullanılabilir olana kadar ertelemek zorunda kaldığı iki ISO 14289-1 §7.21.6 font-program denetimini kazanır.
10034, gömülü SFNT cmap tablosu yalnızca sembolik (platformID=3, encodingID=0) girdiyi içeren sembolik olmayan TrueType programlarını raporlar — §7.21.6 ilk paragrafı, programın /Encoding tarafından bildirilen codepoint'leri işleyebilmesi için en az bir sembolik olmayan cmap alt tablosu gerektirir.10035, glyph adları Adobe Glyph List üyesi olmayan (.notdefhariç) sembolik olmayan TrueType/Encoding /Differencesdizilerini raporlar — §7.21.6 üçüncü paragrafı, her Differences girdisinin AGL içinde yer almasını gerektirir. - Yeni
Lib/PDFlibPDFUAFontInspect.pas, toleranslı bir SFNT tablo dizini gezgini ve cmap alt tablo dizini ayrıştırıcısı uygular. Önceki altyapı commit'inde iskelet olarak eklenen 4281 adlı Adobe Glyph List tablosu artık Differences denetimi aracılığıyla bağlanmıştır. SFNT olarak ayrıştırılamayan programlar (Type 1 PFB / PFA, OpenType collection, rastgele bozuk veri) sessizce atlanır — denetim katmanında yanlış pozitifler yerine yanlış negatifler tercih edilir.
v3.56.22 2026-05-23
- PDF/UA-1 denetimi, ISO 14289-1 §7.18.6 media clip data denetimlerini kazanır.
10042, gerekli/CTcontent-type girdisi eksik olan media clip data sözlüklerini (/S /MCDile, isteğe bağlı olarak/Type /MediaClipile tanımlanan) raporlar.10043, gerekli/Altdizisi eksik olan aynı sözlükleri raporlar. ISO 32000-1 Table 274 her iki anahtarı da isteğe bağlı olarak listeler, ancak ISO 14289-1 §7.18.6 bunları zorunlu yapar; böylece ekran okuyucular gömülü multimedya için anlamlı bir açıklama duyurabilir. - Bu, PDF/UA derin denetim planının Phase 6 aşamasıdır (
.superpowers/plans/2026-05-23-pdfua-deep-audit-plan.md). Herhangi bir font-program veya content-stream ayrıştırıcısı bağımlılığı olmadan çalışır; bu yüzden v3.56.0..v3.56.13 serisinden sonraki ilk takip alt sınıfıdır.
v3.56.21 2026-05-23
- Yeni
SetSignProcessCommitmentType, PAdES-B-B SignerInfo içinde CAdEScommitment-type-indicationimzalı özniteliğini (OID 1.2.840.113549.1.9.16.2.16, ETSI EN 319 122-1 v1.2.1 §5.2.3) yayar. İyi bilinen ETSI taahhüt OID'lerineid-cti-ets-proofOfOriginileid-cti-ets-proofOfCreationarasında eşlenen 1..6 tamsayı kodlarını kabul eder; temizlemek için 0 geçirin. Aralık dışı kodlar reddedilir. - Yeni
SetSignProcessSignaturePolicy, CAdESsignature-policy-identifierimzalı özniteliğini (OID 1.2.840.113549.1.9.16.2.15, §5.2.9) yayar. Noktalı ondalık policy OID'yi, policy belge karmasını büyük harfli hex dizesi olarak ve digest algoritma kodunu (1=SHA-1, 2=SHA-256, 3=SHA-384, 4=SHA-512, 0=auto/SHA-256) alır. Öznitelik,sigPolicyId+sigPolicyHash(OtherHashAlgAndValueSEQUENCE) ileSignaturePolicyIdSEQUENCE taşır. - Her iki öznitelik de yalnızca SubFilter
ETSI.CAdES.detachedolduğunda (PAdES-B-B yolu) etkili olur; mevcutrgAuthAttrdizisinicontent-typevesigning-certificate-v2ile birlikte genişletirler. PAdES Table 1 row d),commitment-type-indicationile PDF Signature Dictionary/Reasongirdisini birleştirmeyi yasaklar; ikisini birden ayarlamamak çağıranın sorumluluğundadır.
v3.56.20 2026-05-23
- Yeni
AddPAdESDSSVRI, oluşturulmakta olan DSS'ye bir Signature VRI alt sözlük girdisi ekler ve ETSI EN 319 142-1 v1.2.1 madde 5.4.2.3 Validation Related Information yapısını tamamlar. Girdi, imzanın '/Contentsbaytlarının büyük harfli hex SHA-1 değeriyle anahtarlanır;Cert/CRL/OCSPalt dizileri, virgülle ayrılmış listeler olarak sağlanan 0 tabanlı indekslerle ilgili üst DSS akışlarına başvurular yapılarak doldurulur (örn."0,2,5"). - Alttaki
TSmartPDFDocument.AddPAdESDSSWithVRI, her cert / CRL / OCSP için yayılan stream object numaralarını izler ve bunları VRI alt dizilerini, üst DSS dizilerinin zaten işaret ettiği aynı akışlara dolaylı başvurular olarak yazmak için kullanır; böylece VRI girdilerinin üst DSS sözlüğüyle depolamayı paylaşması gereksinimi karşılanır. ÖzgünAddPAdESDSSgiriş noktası, VRI gerektirmeyen çağıranlar için değişmeden çalışmaya devam eder. - Her imza başına VRI alt sözlüğü, katalogda
Typeetiketleriyle dolaşan araçların üst yolu yeniden çözümlemeden yapıyı tanıyabilmesi için isteğe bağlı/Type /VRIişaretçisini taşır.
v3.56.19 2026-05-23
- Mevcut bir PAdES-B-B imzasına RFC 3161 / RFC 5816 signature-time-stamp (id-aa-signatureTimeStampToken, OID 1.2.840.113549.1.9.16.2.14) eklemek için yeni PAdES-B-T iş akışı.
NewPAdESSignatureTimeStampProcessFromFile/FromStream/FromStringimzalı bir PDF açar,SetPAdESSignatureTimeStampFieldalanı adlandırır,GetPAdESSignatureValueHashHexTSA'ya gönderim için imzalayanın 'signatureValueöğesinin SHA-256 (veya 384 / 512) karmasını döndürür,GetPAdESSignatureCMSBytesmevcut CMS yükünü açığa çıkarır,SetPAdESSignatureCMSBytesçağıranın tercih ettiği CMS kitaplığıyla oluşturduğu artırılmış CMS baytlarını kabul eder veEndPAdESSignatureTimeStampProcessToFile/ToStream/ToStringyeni CMS'yi özgün/Contentsyer tutucusuna ekler. BuildPAdESSignatureTimeStampAttribute, TSA tarafından verilen TimeStampToken'ıSignerInfo.unsignedAttrsöğesinin beklediği CMS Attribute SEQUENCE içine saran durumsuz bir yardımcıdır; böylece elinde zaten CMS kitaplığı bulunan çağıranlar OID + SET-of altyapısını atlayabilir.- Yeni
SetSignProcessReserveContentsBytes, ilk imzalama sırasında/Contentsyer tutucusunu genişletir; böylece sonradan eklenen artırılmış CMS, özgün ayırmayı taşırmadan sığar. Tipik TSA tarafından verilen TimeStampToken'lar SignerInfo'ya 2-6 KB ekler; burada 1024-8192 geçerek boşluk bırakın. Yeterli rezerv olmadan artırma çağrısı13(çıktı taşması) döndürür. - Kitaplık bir TSA HTTP istemcisiyle gelmez; çağıran TimeStampToken'ı getirir (genellikle ör. FreeTSA veya DigiCert'e karşı 30-50 satırlık TSP isteği + HTTP POST). Windows CryptoAPI
CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTRteorik olarak CMS enjeksiyonunu kitaplık içinde otomatikleştirirdi, ancak PAdES'in yaydığı ayrık SignedData biçimindeCRYPT_E_INVALID_INDEX(0x80091008) döndürür; bu nedenle çağıranın sağladığı CMS baytları yolu kullanılır.
v3.56.18 2026-05-23
- PAdES
signing-certificate-v2özniteliği artık RFC 5035 (ESSCertIDv2) tarafından tanımlanan isteğe bağlıIssuerSerialalanını gömer. İmzalama sertifikasının ' issuer Distinguished Name değeriGeneralNamesiçindeki birGeneralName [4] EXPLICIT directoryNameCHOICE içine sarılır ve ardından sertifika seri numarası ASN.1 INTEGER olarak gelir. Seri numarası baytları Windows CryptoAPI'den (CRYPT_INTEGER_BLOB) little-endian gelir ve big-endian biçimine ters çevrilir; yüksek bit ayarlandığında pozitif tamsayı pad baytı eklenir, OpenSSL ve BouncyCastle'ın aynı alanı yayma biçimiyle eşleşir. - Issuer adı + seri çiftiyle kendi path-building aday kümesini çapraz denetleyen doğrulayıcılar (özellikle katı modda EU DSS) artık signing-cert-v2 özniteliğinde her iki tanımlayıcıyı da bulur; önceki v3.56.17 çıktısı yalnızca
certHashbaşvurusunu sağlıyordu. - Yeni ASN.1 yardımcıları
DER_IntegerFromLittleEndian(Win32CRYPT_INTEGER_BLOBbayt sırasını işler) veDER_ContextTagExplicit(bir yükü constructed context-specific tag içine sarar),PDFlibASN1mikro kodlayıcısını tamamlar.PDFlibCryptoAPIiçindeki yeniCERT_INFO/CRYPT_ALGORITHM_IDENTIFIER/CRYPT_INTEGER_BLOB/PCERT_CONTEXTbildirimleri, imzalama yolunun ayrıştırılmış sertifika alanlarına erişmesini sağlar.
v3.56.17 2026-05-23
- Yerleşik
ETSI.CAdES.detachedimzalama yolu artık yapısal olarak uyumlu PAdES-B-B imzaları üretir. Kitaplık CMS authenticated attributes öğelerini kendisi oluşturur -content-type(id-data) ve RFC 5035 / RFC 5816'dan, imzalama sertifikasının SHA-256 karmasıylasigning-certificate-v2- ve bunlarırgAuthAttraracılığıylaCryptSignMessageöğesine verir. Bu alan NULL olmadığında Windows CryptoAPI, PAdES'in (ETSI EN 319 142-1 v1.2.1 Table 1) yasakladığısigning-timeözniteliğini otomatik eklemeyi durdurur; böylece ortaya çıkanSignerInfogerekli öznitelikleri ve yalnızca onları taşır. - Yeni
PDFlibASN1birimi,SigningCertificateV2öznitelik değerini oluşturmak için kullanılan odaklı bir DER (X.690) mikro kodlayıcı sağlar - uzunluk öneki, OCTET STRING, SEQUENCE, SET, OBJECT IDENTIFIER. Kodlayıcı, base-128 OID arc'ları için standart kuralları izler ve yalnızca SHA-256 varsayılanını tekrarlayacağı durumlarda isteğe bağlıhashAlgorithmalanını atlar; OpenSSL ve BouncyCastle çıktısıyla eşleşir. ApplySignatureartıkETSI.CAdES.detachedöğesini önceden hesaplanmış digest beslemek yerine raw-byte yolundan (adbe.pkcs7.detachedtarafından kullanılanla aynı yol) geçirir. CryptoAPI artıkmessageDigestauthenticated attribute değerini gerçek imzalı içerik üzerinde hesaplar; doğrulayıcıların beklediği de budur.- signing-certificate-v2 özniteliği oluşturulurken SHA-384 ve SHA-512 de dikkate alınır:
hashAlgorithmalanı varsayılana güvenmek yerine eşleşenAlgorithmIdentifierile yayılır. PAdES-B-B SHA-1'e yetki vermediği için (madde 6.2.1) SHA-1 bu bağlamda sessizce SHA-256'ya yükseltilir.
v3.56.16 2026-05-23
- Yeni
SetSignProcessDigestAlgorithm, imzalama message-digest algoritmasını seçer:1= SHA-1 (kullanımı önerilmez),2= SHA-256 (modern varsayılan),3= SHA-384,4= SHA-512,0= auto (geriye dönük byte-stable uyumluluk için SHA-1 üzerinde kalan eskiadbe.pkcs7.sha1yolu hariç her SubFilter için SHA-256). ETSI EN 319 142-1 v1.2.1 §6.2.1 MD5'i yasaklar ve önerilen kriptografik paketler için ETSI TS 119 312'ye başvurur; bu nedenle PAdES imzalayıcıları SHA-256 veya daha güçlüsünü seçmelidir. - Mevcut
SHA1StreamRangeyanınaSHA256StreamRange,SHA384StreamRangeveSHA512StreamRangehash yardımcıları eklendi; imzalama yolu bunları seçilen algoritma altında PDF ByteRange için digest hesaplamak üzere kullanır. PKCS#7SignerInfo.digestAlgorithmOID ve gerçek hash baytlarının artık uyumlu olması garanti edilir (önceki kod, anlaşılmış algoritmadan bağımsız olarak her zaman SHA-1 digest geçiriyordu). TPDFlibPFXFile.SignDataartık birDigestAlgorithmparametresi alır ve her (SubFilter, algorithm) çifti için doğru OID'yi seçer: ayrık ve özel SubFilter'larda SHA-256/384/512 için2.16.840.1.101.3.4.2.1/.2/.3(RFC 5754) ve eskiadbe.pkcs7.sha1yolu için eşleşensha256WithRSAEncryptionailesi OID'leri.
v3.56.15 2026-05-23
- Yeni
SetSignProcessDocTimeStamp, bir imzalama sürecini ETSI EN 319 142-1 v1.2.1 §5.4.3 uyarınca PAdES Document Time-stamp moduna geçirir. Ortaya çıkan Signature Dictionary/Type /DocTimeStampve/SubFilter /ETSI.RFC3161taşır, yasaklanan/M,/Reason,/Location,/ContactInfove/Nameanahtarlarını atlar ve dışarıdan alınmış RFC 3161 TimeStampToken için/Contentsiçinde 8192 baytlık (veya çağıranın boyutlandırdığı) hex yer tutucusu ayırır. - DocTimeStamp modu seçildiğinde passthrough otomatik olarak etkinleştirilir, çünkü TimeStampToken harici bir TSA'dan gelir. DocTimeStamp moduna geçildikten sonra yapılan
SetSignProcessInfoçağrıları, imza sözlüğünü belirtime uygun tutmak için sessizce yok sayılır. - v3.56.8'de eklenen mevcut PAdES
/Extensions /ESICotomatik eklemesi DocTimeStamp'i zaten kapsar, çünkü SubFilter değeriETSI.ile başlar; bu nedenle Document Time-stamp PDF, ek kablolama olmadan gerekli katalog uzantısını bildirir.
v3.56.14 2026-05-23
- Yeni PAdES Document Security Store (DSS) artırma API'si.
NewPAdESDSSProcessFromFile/NewPAdESDSSProcessFromStream/NewPAdESDSSProcessFromStringönceden imzalanmış bir PDF'yi açar,AddPAdESDSSCertificate/AddPAdESDSSCRL/AddPAdESDSSOCSPDER kodlu doğrulama malzemesini hazırlar veEndPAdESDSSProcessToFile/EndPAdESDSSProcessToStream/EndPAdESDSSProcessToString, ETSI EN 319 142-1 v1.2.1 §5.4.2.2 tarafından belirtildiği şekilde bir/DSS << /Type /DSS /Certs [...] /CRLs [...] /OCSPs [...] >>sözlüğü içeren artımlı bir güncelleme yazar. Bu, bir PAdES-B-B / B-T imzasını PAdES-B-LT uzun vadeli doğrulamaya yükseltmek için yapı taşıdır. - DSS işlemi, doğrulama malzemesi eklerken §5.6'daki gereksinimle uyumlu olarak katalog
/Extensions /ESICgirdisini otomatik olarak en azExtensionLevel 1seviyesine yükseltir ve tekrarlanan çağrılarda yeni sertifikaları, CRL'leri ve OCSP yanıtlarını mevcut/Certs//CRLs//OCSPsdizileriyle birleştirir; böylece revizyonlar üzerine yazmak yerine birikir. GetPAdESDSSProcessResult/ReleasePAdESDSSProcess, mevcutSignProcessAPI yüzeyini yansıtarak yaşam döngüsünü tamamlar.
v3.56.8 2026-05-23
- PAdES temel uyumluluğu: PAdES SubFilter (
ETSI.CAdES.detachedveyaETSI.RFC3161) ile bir imza oluşturulduğunda, belge kataloğu artık ETSI EN 319 142-1 v1.2.1 §5.6 tarafından gerekli kılınan/Extensions /ESIC <</BaseVersion /1.7 /ExtensionLevel 2>>girdisini otomatik olarak alır. Girdi, imzayı taşıyan aynı artımlı güncelleme üzerinden eklenir, mevcut daha yüksek bir/ExtensionLeveldeğerini asla düşürmez ve kaynak PDF bunları zaten ayrı nesneler olarak saklıyorsa dolaylı/Extensionsveya/ESICbaşvurularını izler. TPDFlibaracılığıyla oluşturulan PDF'ler için SetSignProcessCustomSubFilter tarafından yazılan Adobe eşdeğeri uzantı işaretçisi artık/ADBE /BaseVersion /1.7 /ExtensionLevel 8değeridir (öncedenExtensionLevel 5idi); bu, PAdES temel imzalarının kullanmasına izin verilen alternatif bildirimle eşleşir. Seviye 5 yalnızca ISO 32000-2 formları / 3D / RichMedia özelliklerini kapsıyordu ve PAdES uzantılarını fiilen tanımlamıyordu.
v3.56.13 2026-05-23
- SetPDFUAMode etkinken ve belge kaydedildiğinde, açık bir
ListNumberingözniteliği olmayan her L (liste) yapı öğesi artık otomatik olarak/O = List /ListNumbering = Nonealır. ISO 14289-1 §7.6, her L etiketinin numaralandırma stilini bildirmesini gerektirir; yeniApplyPDFUAListNumberingkayıt zamanı düzeltmesi mevcutApplyPDFUATabOrder/ApplyPDFUAFormFieldTU/ApplyPDFUAAnnotContents/ApplyPDFUAEmbeddedAFRelationship/ApplyPDFUAStripTrapNetailesine katılır. - Belirli bir liste stilini önemseyen yazarlar yine de EndTag'den önce SetStructElemListNumbering çağırmalıdır; otomatik düzeltme yalnızca kayıt zamanında ListNumbering özniteliği yoksa devreye girer, bu nedenle açık değerler korunur.
- Yazıcı tarafındaki
LIST-NO-NUMBERING:Ntanı iletisi artık otomatik düzeltmenin kayıt zamanında sorunu maskeleyeceğini belirtir; böylece kullanıcılar hem eksik özniteliği hem de otomatik onarım davranışını anlar.
v3.56.12 2026-05-23
- PDF/UA-1 denetimi üç yeni ISO 14289-1 kontrolü kazanır.
10031, URI eylem sözlüğü/IsMap = truetaşıyan Link ek açıklamalarını bildirir (içerikte başka bir yerde eşdeğer işlevsellik sağlanmadıkça §7.18.5 tarafından yasaklanmıştır; meşru bir IsMap kullanım durumu olan yazarlar tanıyı kendileri bastırabilir).10032,/IDgirdisi eksik olanNoteyapı öğelerini bildirir; — §7.9 her Note etiketinin benzersiz bir ID bildirmesini gerektirir.10033, iki veya daha fazla Note etiketi aynı/IDdeğerini paylaştığında yinelenen çift sayılarını bildirir. - Note ID çakışma algılaması, ID'leri sıralı bir TStringList içinde toplayıp bitişik çiftler üzerinden yürüyerek yapılır; bu nedenle aynı ID'yi paylaşan üç Note'tan oluşan bir grup iki yinelenen çift olarak sayılır.
- URI eylem denetimi her sayfa'nın
/Annotsdizisini gezer,/Subtype /Linkile filtreler, ardından/A /S /URIve/IsMapboolean değerini inceler. Dolaylı başvurular her adımda çözümlenir, böylece ayrılmış eylem sözlükleri satır içi olanlarla aynı davranır.
v3.56.11 2026-05-23
- ISO 14289-1 §7.6, her L (liste) yapı öğesinin açık bir
ListNumberingözniteliği taşımasını gerektirir.10030(okuyucu tarafı) veLIST-NO-NUMBERING:N(yazıcı tarafı), bunu atlayan L etiketlerini bildirir. Okuyucu tarafı gezgini her iki/Abiçimini de çözer (tek öznitelik sözlüğü veya revizyon tamsayılarıyla karışık sözlükler dizisi) ve sahipten bağımsız olarak/ListNumberinganahtarını arar. Yazıcı tarafı kontrolü, hem sonlandırılmış yapı listesinde hem de hâlâ açık etiket yığınında aynı ad içinTPDFStructElem.Attributesöğesini inceler. - ISO 32000-1 Table 347 uyarınca geçerli
ListNumberingdeğerleriNone,Disc,Circle,Square,Decimal,UpperRoman,LowerRoman,UpperAlpha,LowerAlphaşeklindedir. Denetim yalnızca anahtarın varlığını kontrol eder, hangi değerin seçildiğini değil; her L etiketinin bunlardan birine ihtiyacı vardır.
v3.56.10 2026-05-23
- PDF/UA-1 denetimi ISO 14289-1 §7.21.6 TrueType kodlama kurallarını kazanır.
10028,/Encodingdeğeri (veya bir Encoding sözlüğü içindeki/BaseEncoding) neMacRomanEncodingne deWinAnsiEncodingolan simgesel olmayan TrueType fontlarını bildirir.10029, herhangi bir/Encodinggirdisi taşıyan simgesel TrueType fontlarını bildirir (§7.21.6 dördüncü paragraf tarafından yasaklanmıştır). - Simgesel ile simgesel olmayan ayrımı, alt sınıf 4'ten mevcut
UAFontDescriptorSymbolicyardımcısını yeniden kullanarak FontDescriptor/Flagsbit 3'ünden (maske4) belirlenir. Tam §7.21.6 birinci paragrafı (gömülü TrueType programı eşleşen cmap girdileri içermelidir) TrueType font programının ayrıştırılmasını gerektirir ve hâlâ beklemededir; yukarıdaki sözlük düzeyi kuralları bu denetimin TrueType ayrıştırıcı olmadan doğrulayabileceği pratik katmandır. - §7.21.6 içindeki Differences dizisi kuralları (yalnızca AGL glif adları, Microsoft Unicode cmap varlığı) aynı nedenle kapsam dışında kalır; bunlar font programı incelemesi gerektirir.
v3.56.9 2026-05-23
- PDF/UA-1 denetimi tam bir ISO 14289-1 §7.18.4 kontrolü kazanır.
10027,/StructParentdeğeri yapı ağacı'nın/ParentTreeöğesi üzerinden çözümlenen ancak/S = Formiçeren bir yapı öğesine ulaşmayan Widget ek açıklamalarını bildirir. Önceki v3.56.7 kısmi kontrolü (10026) yalnızca/StructParenttamamen eksik olan Widget'ları yakalıyordu; yeni kontrol sayı ağacı işaretçisini izleyip hedef etiketi doğrulayarak kuralı tamamlar. - Yeni bir
NumberTreeLookupyardımcısı ISO 32000-1 §7.9.7 sayı ağacı biçimini uygular (düz/Numskökü,/Limitsile aralıklandırılmış ara/Kids)./StructParentssayfa girdilerini veya/PageLabelsetiketlerini çözmesi gereken gelecekteki denetimler bunu yeniden kullanabilir. - Widget ek açıklaması Form etiketi doğrulaması iki katmanlı bir model kullanır:
/StructParentolmayan bir Widget10026olarak bildirilir;/StructParentmevcut olan ancak/S = Formdeğerine çözümlenmeyen bir Widget daha özgül10027olarak bildirilir. Bu, aynı ihlalin her iki kod altında çift sayılmasını önler.
v3.56.7 2026-05-23
- SetPDFUAMode etkinken ve belge kaydedildiğinde, tüm
TrapNetek açıklama girdileri artık her sayfa'nın/Annotsdizisinden otomatik olarak kaldırılır. ISO 14289-1 §7.18.2TrapNetek açıklamalarını yasaklar; yeniApplyPDFUAStripTrapNetkayıt zamanı düzeltmesi mevcutApplyPDFUATabOrder/ApplyPDFUAFormFieldTU/ApplyPDFUAAnnotContents/ApplyPDFUAEmbeddedAFRelationshipailesine katılır, böylece PDF/UA modu belgeleri sessizceTrapNetkalıntıları yaymayı durdurur. - PDF/UA-1 denetimi kısmi bir §7.18.4 kontrolü kazanır.
10026,/StructParenteksik olan Widget ek açıklamalarını bildirir;/StructParentolmayan bir Widget yapı ağacından erişilemez ve bu nedenle birFormyapı etiketinin içine yerleştirilemez. Tam yapısal doğrulama (/StructParentdeğeriniParentTreeüzerinden çözümlemek ve üst/SöğesininFormolduğunu doğrulamak) sonraki bir sürüme bırakılmıştır. - Yazıcı tarafındaki GetPDFUADiagnostics eşleşen
WIDGET-NO-STRUCTPARENT:Nsorununu kazanır. Mevcut TRAPNET-ANNOT iletisi artık SetPDFUAMode öğesinin bunları kayıt zamanında otomatik olarak çıkardığını da belirtir.
v3.56.6 2026-05-23
- PDF/UA-1 denetimi iki ISO 14289-1 §7.4.2 başlık hiyerarşisi kontrolü kazanır.
10024, belge sırasındaki ilk başlık öğesi H1 (veya H) olmadığında bildirir.10025, azalan bir dizideki başlık düzeyi atlama sayısını bildirir (ör. H2 olmadan H1 ardından H3). Her iki kontrol, iç içe/Kbiçimlerini (tek StructElem, StructElems / IndRefs / MCRs dizisi) çözen tek bir yapı ağacı ön sıra gezintisini paylaşır. - Yazıcı tarafındaki GetPDFUADiagnostics, okuyucu
10024ile eşdeğerlik sağlayan eşleşenFIRST-HEADING-NOT-H1sorununu kazanır. Daha önce mevcut olan HEADING-LEVEL-SKIP yazıcı kontrolünün artık "ilk başlık H2 idi" tarzı sorunları da yakalayan bir eşi vardır.
v3.56.5 2026-05-23
- SetPDFUAMode etkinken ve belge daha sonra şifrelendiğinde, şifreleme izin anahtarı (encrypt sözlüğündeki
/P) artık çağıran Encrypt öğesine geçirilenTPDFExtraPermissionsiçindeppCanCopyAccesseklememiş olsa bile bit 10'u (maske$200, "Erişilebilirliği desteklemek için metin ve grafik çıkar") otomatik olarak ayarlanmış halde alır. ISO 14289-1 §7.16, şifrelenmiş her uyumlu dosyanın erişilebilirlik çıkarımına izin vermesini gerektirir ve aksi halde bu biti gözden kaçırmak kolaydır. Bitin ayarlanması her zaman güvenlidir; diğer çıkarım yollarına değil, yalnızca yardımcı teknolojiye ek erişim verir. - Yazıcı tarafındaki GetPDFUADiagnostics, PDFUAMode açıkken ve encrypt sözlüğü'nün
/Pbit 10'u temizlenmişken tetiklenen yeni birENCRYPT-NO-ACCESSsorunu kazanır. Bu, kullanıcının önceEncrypt()ve ancak sonra SetPDFUAMode çağırdığı çağrı sırası uç durumunu yakalar; tanı, encrypt dict düzeltilmiş/Pile yeniden yayımlansın diye kullanıcıyaEncrypt()öğesini tekrar çağırmasını söyler.
v3.56.4 2026-05-23
- Yazıcı tarafındaki GetPDFUADiagnostics, bellek içi belge denetiminin okuyucu tarafındaki CheckFileCompliance ComplianceTest=2 denetimiyle aynı ihlalleri yakalaması için beş yeni ISO 14289-1 kontrolü kazanır.
SUSPECTS-TRUE, MarkInfo/Suspects=true durumunu işaretler (§7.1: PDF/UA uyumlu dosyalar Suspects=false gerektirir).ROLEMAP-STANDARD-REMAP:N, standart bir yapı etiketini yeniden eşleyecek AddRoleMap çağrılarını işaretler; §7.1 standart etiketlerin yeniden eşlenmesini yasaklar.DC-TITLE-MISSING, boş bir XMP dc:title değerini işaretler (DOCINFO-TITLE-MISSING'den ayrıdır; o /Info /Title denetler).TRAPNET-ANNOT:N, TrapNet ek açıklamalarını işaretler (§7.18.2 bunları yasaklar).ANNOT-PAGE-NO-TABS-S:N, sayfa sözlüğü /Tabs değeri /S olmayan ek açıklamalar taşıyan sayfaları işaretler (§7.18.3 bu sayfalarda yapı ağacı sekme sırası gerektirir). - Yazıcı tarafı ve okuyucu tarafı PDF/UA-1 denetimleri artık kabaca eşdeğerdir: okuyucu tarafı denetiminin kaydedilmiş bir dosyada yükselttiği her sorun, her işlevin biçim kuralları (satır sonu ile ayrılmış metin ve NNNNN kodlu dize listesi) dışında bellek içi tanıdan da erişilebilir.
v3.56.3 2026-05-23
- PDF/UA-1 denetimi §7.21 font kontrollerini kazanır.
10020, FontDescriptor öğesindeFontFile/FontFile2/FontFile3bulunmayan Standard-14 dışındaki her fontu bildirir (§7.21.4.1: işlenen her font programını gömmelidir).10021,/CIDToGIDMapgirdisi olmayan CIDFontType2 alt fontlarını bildirir (§7.21.3.2).10022, gömülü program olmadan başvurulan Standard 14 fontlarını (Helvetica, Times, Courier, Symbol, ZapfDingbats ve kalın / eğik varyantları) özellikle belirtir; §7.21.4 NOTE 5, bu fontlar için gömme muafiyeti olmadığını açıkça belirtir.10023,/ToUnicodeCMap bulunmayan ve §7.21.7 muafiyet listesiyle eşleşmeyen fontları bildirir (önceden tanımlı MacRoman / MacExpert / WinAnsi kodlamaları, Adobe-GB1 / CNS1 / Japan1 / Korea1 karakter koleksiyonlarına sahip Type 0, simgesel olmayan TrueType). - Bileşik Type 0 fontlar iki katmanda incelenir: Type 0 üst sözlüğünün kendisinde
/ToUnicodeve ilk alt CIDFont üzerinde gömme //CIDToGIDMap. Type 3 fontlar gömme kontrolünü atlar (glifleri satır içi CharProcs içindedir) ancak yine de/ToUnicodekontrolüne katılır. - Benzer font işi için PDFlibPDFA yardımcıları özellikle paylaşılmadı; yarım düzine kısa rutin (alt küme öneki kaldırma, Standard-14 ad tablosu, FontFile varlığı, Symbolic bayrağı) PDF/A denetimi PDF/UA'yı bozmadan ve tersi yönde gelişmeye devam edebilsin diye
UA*yardımcıları olarak yerel olarak çoğaltıldı.
v3.56.2 2026-05-23
- PDF/UA-1 denetimi ek açıklamaları, gömülü dosyaları ve isteğe bağlı içeriği kapsayan beş ISO 14289-1 kontrolü daha kazanır.
10015, ekran okuyucuların bağlantı hedeflerini duyurabilmesi için boş olmayan bir/Contentsalternatif açıklaması eksik olan Link ek açıklamalarını bildirir (§7.18.5).10016ve10017, gerekli/Fveya/UFdosya adı anahtarları eksik olan gömülü dosya FileSpec sözlüklerini işaretler (§7.11).10018, boş olmayan bir/Namemetin dizesini atlayan isteğe bağlı içerik yapılandırma sözlüklerini işaretler (§7.10).10019, yasaklanmış/ASanahtarını içeren isteğe bağlı içerik yapılandırma sözlüklerini işaretler (§7.10). - TrapNet ve
/Tabs /Skontrollerini zaten çalıştıran sayfa başına ek açıklama gezintisi artık Link //Contentsverilerini de aynı geçişte toplar ve denetimi nesne sayısında O(N) tutar.
v3.56.1 2026-05-23
- PDF/UA-1 denetimi beş yeni ISO 14289-1 kontrolü kazanır.
10010, şifrelenmiş dosyalarda erişilebilirlik çıkarma iznini (şifreleme/Panahtarının bit 10'u) doğrular (§7.16).10011, XFA XDP paketi içindeki<dynamicRender>required</dynamicRender>öğesi üzerinden dinamik XFA formlarını algılar (§7.15).10012,/Refgirdisi taşıyan Form XObject'leri işaretler; referans XObject'ler yasaktır (§7.20).10013,TrapNetek açıklamalarını işaretler (§7.18.2).10014, her sayfayı gezer ve sekme sırası yapı ağacını izlesin diye sayfa sözlüğü/Tabs /Sayarlamayan ek açıklamalar taşıyan tüm sayfaları bildirir (§7.18.3). - Beş yeni kodun tamamı, önceki sürümün eklediği aynı CheckFileCompliance + GetStringListItem tanıtıcı çifti üzerinden akar; yeni bir genel API yüzeyi yoktur.
v3.56.0 2026-05-23
- Yeni okuyucu tarafı denetimi
CheckCompliancePDFUA, harici bir PDF'yi ISO 14289-1'e (PDF/UA-1) göre doğrular. Herhangi bir giriş PDF'sini (kendi çıktısı, tarayıcı çıktısı, üçüncü taraf içerik) kabul edip PDF/UA-1 ihlallerini CheckFileCompliance öğesinin zaten PDF/A sorunlarını bildirdiği şekilde listeleyerek mevcut GetPDFUADiagnostics yazıcı tarafı kontrolünü tamamlar. - CheckFileCompliance artık yeni PDF/UA-1 denetimini çalıştırmak için
ComplianceTest = 2kabul eder.ComplianceTest = 1altındaki PDF/A testi değişmemiştir ve sorun listesi hâlâ mevcut GetStringListCount / GetStringListItem tanıtıcı çifti üzerinden geri akar. - İlk sürüm §5 (XMP
pdfuaid:parttanımlaması) ve §7.1 (Catalog/Metadataakışı, tagged-PDF işaretçisi, yapı ağacı, görüntüleyici başlık tercihi, belge dili, XMPdc:title,/Suspectsdeğeri ve standart yapı etiketlerinin yeniden eşlenmesi yasağı) kapsamındaki temel PDF/UA-1 uygunluk kapılarını kapsar. Sekiz tanı kodu üretilir:10001ile10009arası; sayısal aralık PDF/A00xxxkodlarından görsel olarak ayrı tutulur. - Daha derin PDF/UA-1 maddeleri (güvenlik, ek açıklamalar, XObject'ler, font alt kümeleme) aynı denetim çatısı üzerinde takip eden yama sürümleri için izlenmektedir.
v3.55.6 2026-05-22
- Yeni oluşturulan her XMP paketi artık uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX biçiminde bir xmpMM:InstanceID özelliği taşır. Tanımlayıcı Win32 CoCreateGuid aracılığıyla oluşturulur ve ISO 19005-1 §6.7.2 (Cor2) ile PDF/A en iyi uygulama kılavuzlarının önerdiği gibi üretilen her belgeye benzersiz, sürümden bağımsız bir parmak izi verir. Windows dışı derlemeler (XMP paketinin boş kaldığı yerler) etkilenmez.
- xmpMM ad alanı (http://ns.adobe.com/xap/1.0/mm/) artık XMP paketinin SelectionNamespaces parçasıdır; yeni SetXMPMM ve GenerateInstanceID yardımcıları InstanceID üretiminin temelini oluşturur ve gelecekteki xmpMM:History / xmpMM:DerivedFrom desteği için zemin sağlar.
- PDF/A Extension Schema açıklama şeması (pdfaExtension / pdfaSchema / pdfaProperty / pdfaType / pdfaField) bu sürüme eklenmemiştir. Özel bir uzantı şeması yazmak, mevcut SetDublinCore / SetXMPBasic biçiminin ötesinde çok adımlı bag / seq / yapılandırılmış özellik oluşturma gerektirir; çalışma gelecekteki bir sürüm için izlenmektedir. Özel XMP özellikleri bildirmesi gereken belgeler LoadFromString yoluna geri dönmeye devam eder.
v3.55.5 2026-05-22
- PDF/A belgelerinin ek açıklama /F bayrakları artık kayıt zamanında normalleştirilir. ISO 19005-1 §6.5.3, her ek açıklamada Print bitinin 1 olmasını ve Hidden / Invisible / NoView bitlerinin 0 olmasını gerektirir; yazıcı artık bu maskeyi kayıt zamanında uygular, böylece çağıranların bit düzenini hatırlaması gerekmez. /Subtype /Popup durumu muaftır; popup'lar diğer ek açıklamaların çocuklarıdır ve geleneksel olarak yazdırılmaz.
- AcroForm /NeedAppearances bayrağı artık belge herhangi bir PDF/A modundayken kaydetme sırasında zorunlu olarak false değerine ayarlanır. ISO 19005-1 §6.9 bayrağın bulunmamasını veya false olmasını gerektirir; daha önce writer, çağıranın ayarladığı değeri olduğu gibi bırakıyordu; bu da görüntüleyiciden açılışta görünümleri yeniden oluşturmasını isteyen ve çağıran bunu true olarak ayarladığında belirtimi sessizce ihlal eden belgeler üretiyordu. Düzeltme, bayrağın daha önce bulunmadığı belgeler için de çalışır — writer, doğrulayıcı açısından hiçbir belirsizlik bırakmamak için açık bir /NeedAppearances false yayar.
v3.55.4 2026-05-22
- AddStandardFont artık PDF/A modunda yapılan çağrıları reddeder. ISO 19005-1 §6.3.4, PDF referansındaki "Standard 14 may be unembedded" muafiyetini kaldırır: uyumlu bir dosyadaki her yazı tipi programı gömülü olmalıdır ve kütüphane Standard 14 ana hatlarını paketlemez. Facade sessizce 0 döndürür; çağıranlar gerçek bir yazı tipi dosyasıyla AddTrueTypeFont veya AddType1Font kullanımına geçmelidir.
- AddTrueTypeFont artık PDF/A modu etkin olduğunda Embed=0 değerini (gömme yok) sessizce Embed=1 değerine (tam yazı tipini göm) yükseltir. Gömülmemiş referans yolu, görüntüleyicinin sistemdeki Arial / Times / Courier kurulumuna yazı tipi yedeği olarak bağımlı olan PDF üretiyordu; bu da ISO 19005-1 §6.3.4 standardını ihlal eder. Gömme isteyen mevcut çağıranlar (Embed=1 veya 2) etkilenmez.
- Simgesel olmayan TrueType /Encoding uyumluluk denetimi (ISO 19005-1 §6.3.7 Cor2, kodlama adı veya BaseEncoding olarak WinAnsi ya da MacRoman gerektirir ve /Differences olmamalıdır) bu sürümde eklenmedi; çünkü kütüphane simgesel olmayan TrueType alt kümeleri için zaten /WinAnsiEncoding yayıyor ve daha derin yaptırım, alt küme yolu boyunca simgesel ve simgesel olmayan dispatch durumunun izlenmesini gerektirirdi. CheckCompliancePDFA 00034 / 00035 (v3.51.0 içinde eklendi) uyumsuz çıktıları doğrulama sırasında işaretler.
v3.55.3 2026-05-22
- TrueType destekli CIDFontType2 yazı tipi sözlükleri artık açıkça /CIDToGIDMap /Identity taşır. ISO 19005-1 §6.3.3.2 (Cor2), her gömülü Type 2 CIDFont için girdinin bulunmasını gerektirir; PDF referansı örtük Identity varsayılanına izin verir, ancak PDF/A açık bir değer ister. Writer daha önce anahtarı tamamen atlıyordu; bu da veraPDF (ve v3.51.0 içinde eklenen CheckCompliancePDFA 00033) tarafından dosyanın işaretlenmesine neden oluyordu. /Identity adı, writer'ın zaten örtük olarak ürettiği GID-as-CID yerleşimiyle eşleşir, bu nedenle mevcut belgeler aynı şekilde işlenir.
- FontDescriptor /CharSet (Type 1 alt kümeleri için) ve /CIDSet (CIDFont alt kümeleri için) TODO olarak kalır; writer'ın bunları doğru biçimde doldurabilmesi için alt kümeye hangi glif adlarının / CID'lerin girdiğini izlemesi gerekir. CheckCompliancePDFA 00031 ve 00032 (ayrıca v3.51.0 içinde eklendi) eksikliği işaretler; böylece kullanıcılar sorunu doğrulama sırasında görür.
v3.55.2 2026-05-22
- AddImageDirectFromString artık giriş noktasında PDF/A ile uyumsuz filtreleri reddeder. Filter = 'LZWDecode' geçirmek her PDF/A bölümü için reddedilir (ISO 19005-1 §6.1.10 ve eşdeğer ISO 19005-2 / -3 kuralları). Filter = 'JBIG2Decode' veya 'JPXDecode' geçirmek PDF/A-1 için (mod 1 ve 2) reddedilir. PDF/A-2 ve PDF/A-3, ISO 19005-2 §6.2.8.3 kapsamında alt belirtim kısıtlarıyla (renk kanalı sayısı, bit derinliği tek biçimliliği, METH/APPROX gereksinimleri) JPXDecode'a izin verir; writer tarafındaki kapı bunları zorlamaz — bu modlardaki çağıranların JPEG 2000 akışının uyumlu olduğundan yine de emin olması gerekir. Yasaklı bir filtre istendiğinde facade sessizce 0 döndürür.
- AddImageFromFile / AddImageFromStream üzerinden yüklenen TIFF, PNG, JPEG ve JPEG 2000 girdileri etkilenmez: importer kaynak baytlarını açar ve FlateDecode ile (veya JPEG payload'ları için DCTDecode ile) yeniden kodlar; bu nedenle LZW girdisi çıktı Filter zincirine hiçbir zaman yayılmaz. v3.50.0 (00004) ve v3.52.0 (00022, 00023) içinde eklenen CheckCompliancePDFA doğrulayıcısı, yasaklı bir filtreyi çıktıya hâlâ sızdıran herhangi bir dolaylı yol için doğrulama sırasında ikinci bir savunma hattı sağlar.
v3.55.1 2026-05-22
- AddLinkToHideField artık PDF/A modunda yapılan çağrıları reddeder. Önceki sürümde eylemin PDF/A uyumlu olduğunu iddia eden bir yorum bırakılmıştı, ancak ISO 19005-1 Cor2, /Hide değerini yasaklı eylemler listesine ekledi (§6.6.1) ve ISO 19005-2 / -3 bu kısıtlamayı devralır. PDF/A modunda çağrıldığında facade, AddLinkToJavaScript ve AddLinkToImportData ile aynı şekilde sessizce 0 döndürür.
- AddSWFAnnotationFromFile artık PDF/A modunda yapılan çağrıları reddeder. SWF / RichMedia açıklamaları, ISO 19005-1 §6.5.2 tarafından yasaklanan (Movie / Sound alt türleri yok) ve ISO 19005-2 §6.3.1 tarafından pekiştirilen (3D / Sound / Screen / Movie yok) Flash medyasını sarar. Facade sessizce 0 döndürür.
- AddEmbeddedFile ve AddLinkToEmbeddedFile artık PDF/A-1 ve PDF/A-2 modlarında yapılan çağrıları reddeder. ISO 19005-1 §6.1.11 /EF değerini yasaklar ve ISO 19005-2 §6.8 yalnızca gömülü PDF/A dosyalarına izin verir; eklenen payload'ın özyinelemeli PDF/A oluşunu doğrulamak yerine writer bu modlarda çağrıyı basitçe reddeder. PDF/A-3 (SetPDFAMode 5 veya 6) izinli kalır — otomatik /AFRelationship ekleme için v3.55.0'a bakın.
- SetOpenActionMenu artık belge PDF/A modundayken {NextPage, PrevPage, FirstPage, LastPage} izin listesinin dışındaki MenuItem değerlerini reddeder. ISO 19005-1 §6.6.1 adlı eylemleri bu kümeyle sınırlar; bu nedenle API daha önce veraPDF tarafından reddedilecek uyumsuz Find / Print / FullScreen Open-Action sözlüklerini sessizce üretiyordu.
- NewOptionalContentGroup artık PDF/A-1 modlarında (SetPDFAMode 1 veya 2) yapılan çağrıları reddeder. ISO 19005-1 §6.1.13 Catalog /OCProperties anahtarını yasaklar. PDF/A-2 (mod 3/4) ve PDF/A-3 (mod 5/6), kendi ilgili §6.9 kısıtlarıyla isteğe bağlı içeriğe izin verir; bu nedenle kapı yalnızca PDF/A-1 için çalışır.
v3.55.0 2026-05-22
- PDF/A-3 belgeleri artık her gömülü dosyada otomatik olarak bir /AFRelationship girdisi alır. Daha önce kütüphane ile oluşturulan bir PDF/A-3 dosyası doğrulamadan geçmeyebilirdi; çünkü ISO 19005-3 Annex E, Table E.1 her gömülü dosya belirtiminde AFRelationship gerektirir. Writer artık kaydetme sırasında girdisi olmayan herhangi bir FileSpec sözlüğüne yapılandırılmış varsayılan değeri (varsayılan olarak 'Unspecified') enjekte eder; bu, daha önce tanıtılan PDF/UA AFRelationship otomatik enjeksiyonunu yansıtır. Otomatik enjeksiyonu yalnızca PDF/A-3 modları (SetPDFAMode 5 = PDF/A-3b veya 6 = PDF/A-3a) tetikler; PDF/A-1 ve PDF/A-2, ISO 19005-1 §6.1.11 ve ISO 19005-2 §6.8 uyarınca gömülü dosyaları hâlâ doğrudan reddeder.
- SetPDFA3DefaultAFRelationship, gömülü bir dosyada /AFRelationship girdisi yoksa writer tarafından yazılan varsayılan değeri geçersiz kılan yeni bir API'dir. ISO 19005-3 Table E.1 değerleri olan 'Source' (gömülü dosya PDF içeriğini üreten kaynak materyaldir), 'Data' (dosya görsel bir tablo veya grafiği destekleyen yapılandırılmış veridir), 'Alternative' (sesli sürüm gibi alternatif bir sunumdur), 'Supplement' (bir denklemin MathML biçimi gibi tamamlayıcı bir temsildir), 'Unspecified' (ilişki yukarıdakilerle karakterize edilemez) ya da kayıtlı herhangi bir ikinci sınıf adı kabul eder. Boş dize 'Unspecified' değerine sıfırlar. Dosya bazlı geçersiz kılmalar SetEmbeddedFileAFRelationship üzerinden kullanılmaya devam eder.
- Yeni API'ler Delphi facade üzerinde TPDFlib.SetPDFA3DefaultAFRelationship olarak ve DLL üzerinden DLSetPDFA3DefaultAFRelationship (PWideChar) ve DLSetPDFA3DefaultAFRelationshipA (PAnsiChar) olarak sunulur.
v3.54.0 2026-05-22
- LoadOutputIntentProfile, paketlenmiş sRGB OutputIntent profilini diskten yüklenen harici bir ICC profiliyle değiştiren yeni bir API'dir. Kütüphane yalnızca bir sRGB profiliyle geldiği için DeviceCMYK veya DeviceGray renk uzaylarında PDF/A belgeleri üretirken gereklidir. Tipik kullanım önce SetPDFAMode çağırmak (OutputIntent iskeletini başlatır), ardından profil baytlarını değiştirmek ve belgeyi yeni renk uzayıyla etiketlemek için LoadOutputIntentProfile('C:\\path\\to\\FOGRA39.icc', 'DeviceCMYK') çağırmaktır. Başarıda 1, dosya bulunamadığında veya bilinmeyen renk uzayında 0 döndürür. Delphi facade üzerinde TPDFlib.LoadOutputIntentProfile olarak ve DLL üzerinden DLLoadOutputIntentProfile (PWideChar biçimi) ve DLLoadOutputIntentProfileA (PAnsiChar biçimi) olarak sunulur. ISO 19005-1 §6.2.2, DestOutputProfile akışında kayıtlı herhangi bir ICC profiline izin verir.
- SetFillColorCMYK, SetTextColorCMYK, SetTextHighlightColorCMYK, SetTextUnderlineColorCMYK, AddSeparationColor, SetFillColorSep, SetLineColorSep, SetTextHighlightColorSep ve SetTextColorSep artık belgenin OutputIntent profili DeviceCMYK olduğunda PDF/A modunda başarılı olur. Daha önce bu API'ler OutputIntent ne olursa olsun PDF/A modundaki her çağrıyı reddediyordu; bu da uyumlu CMYK belgelerinin üretilmesini engelliyordu. Kapı artık PDFAMode = 0 OR OutputIntentColorSpace = 'DeviceCMYK' şeklindedir; bu, OutputIntent bir CMYK profili kullandığında DeviceCMYK kullanımına izin veren ISO 19005-1 §6.2.3.3 kuralıyla ve temel renk uzayı da uyumlu olan Separation alternatiflerine izin veren ISO 19005-1 §6.2.3.4 ile eşleşir.
- SetTextShader artık OutputIntent profili DeviceRGB veya DeviceCMYK olduğunda PDF/A modunda başarılı olur. Shader'ların kendileri PDF/A tarafından yasaklanmaz; doğrulayıcı (okuma tarafı), shader'ın iç renk uzayının OutputIntent ile eşleştiğini doğrular. Önceki katı reddetme davranışı, uyumlu shader kullanımını engelliyordu.
- CMYK / Separation / Shader engelinin kaldırılması, AddOutputIntent ve LoadOutputIntentProfile (v3.53.0 içinde tanıtıldı) tarafından ayarlanan OutputIntentColorSpace etiketine bağlıdır. LoadOutputIntentProfile olmadan SetPDFAMode çağırmak, renk uzayını DeviceRGB olarak tutar (paketli sRGB profili); bu nedenle CMYK çağrıları varsayılan olarak hâlâ reddedilir — yeni davranış LoadOutputIntentProfile üzerinden isteğe bağlıdır.
v3.53.0 2026-05-22
- OutputIntent sözlüğü artık ISO 19005-1 §6.2.2 ve Adobe Acrobat preflight tarafından önerilen tam PDF/A iskelet alanlarını taşır: /OutputCondition (insan tarafından okunabilir renk koşulu açıklaması), /Info (uzun biçimli tanımlama metni) ve /RegistryName (kayıt URL'si, varsayılanı http://www.color.org). Değerler, eski tek argümanlı çağrı yerleri için varsayılan olarak "sRGB IEC61966-2.1" / "sRGB IEC61966-2.1" / "http://www.color.org" olur; yeni AddOutputIntent overload'u dört özel alanı doğrudan alır, böylece çağıranlar bunları kendi renk koşulları için doldurabilir.
- AddOutputIntent yeni bir beş argümanlı overload kazanır: AddOutputIntent(ColorSpace, OutputConditionIdentifier, OutputCondition, Info, RegistryName). Eski tek argümanlı biçim değişmeden çalışmaya devam eder; artık sRGB varsayılanlarıyla yeni overload'a delege eder. ColorSpace argümanı, gömülü ICC profil sözlüğüne yazılan /N bileşen sayısını da seçer (DeviceRGB için 3, DeviceCMYK için 4, DeviceGray için 1); gömülü profilin kendisi, yakındaki LoadOutputIntentProfile API'si v3.54.0 içinde yayımlanana kadar paketli sRGB akışı olarak kalır.
- TPDFDocument, son AddOutputIntent çağrısının renk uzayını izleyen okunabilir/yazılabilir bir özellik olarak OutputIntentColorSpace değerini sunar. Bu, v3.54.0 içinde CMYK / Separation / Shader writer tarafı kısıtlamaları için kapı koşulu haline gelir; bugün PDF/A modunda her çağrıyı reddeden renk API'leri, o sürümde yalnızca renk uzayı OutputIntent ile uyumsuz olduğunda reddedecektir.
v3.52.0 2026-05-22
- CheckCompliancePDFA artık açıklamaları, grafik durumu, eylemleri ve form XObject'lerini denetler; böylece PDF/A okuma tarafı doğrulayıcısının ISO 19005-1 bölüm 6.2-6.6 ve eşdeğer PDF/A-2/-3 farklılık kuralları kapsamını tamamlar. Doğrulayıcı 14 yeni sorun sınıfı bildirir (00050-00067): yasaklı açıklama alt türleri (00050; ISO 19005-1 §6.5.2 PDF/A-1 için FileAttachment / Sound / Movie değerlerini yasaklar ve ISO 19005-2 §6.3.1 PDF/A-2 ve PDF/A-3 için 3D / Sound / Screen / Movie değerlerini yasaklar), 1.0 dışında açıklama /CA değeri (00051; §6.5.3), eksik ya da Print=0 / Hidden=1 / Invisible=1 / NoView=1 ile gelen açıklama /F değeri (00052; §6.5.3, /Subtype /Popup muaf), açıklama /AA (00054; §6.6.2), /N dışındaki anahtarlara sahip veya uyumsuz /N değerli açıklama görünüm sözlüğü (00055; §6.5.3 Cor2), /A değerine sahip Widget açıklaması (00056; §6.9), ExtGState /TR (00058; §6.2.8), /Default dışında ExtGState /TR2 (00059; §6.2.8) ve yalnızca PDF/A-1 içinde: /None dışında ExtGState /SMask (00061; §6.4), Normal veya Compatible dışında /BM (00062; §6.4), 1.0 dışında /CA veya /ca (00063; §6.4).
- Her yerde eylem denetimi (00064, 00065), v3.50.0 içindeki yalnızca OpenAction denetiminin yerini tam bir taramayla değiştirir; bu tarama, yasaklı /S eylem değerlerini (Launch, Sound, Movie, ResetForm, ImportData, JavaScript, Hide, SetState, NOP, Trans, GoTo3DView, Rendition, SetOCGState) ve eylemin nerede bulunduğundan bağımsız olarak (annotation /A, widget /A, outline /A, catalog /OpenAction, vb.) /N değeri {NextPage, PrevPage, FirstPage, LastPage} dışında olan adlı eylemleri işaretler. ISO 19005-1 §6.6.1.
- XObject denetimi (00066, 00067), PostScript ve Reference XObject'leri ile Form XObject'lerindeki yasaklı anahtarları (/OPI, /PS, /Subtype2 = /PS) ve Image XObject'lerindeki yasaklı anahtarları (/Alternates, /OPI, /Interpolate true) bildirir. ISO 19005-1 §6.2.4 - §6.2.7.
v3.51.0 2026-05-22
- CheckCompliancePDFA artık v3.50.0 içinde eklenen yapısal denetimlere ek olarak yazı tipi ve renk uzayı uyumluluğunu da denetler. Doğrulayıcı dokuz yeni sorun sınıfı bildirir: en az bir yazı tipi programı gömülü değil (00030; ISO 19005-1 §6.3.4 Standard 14 ikameleri dahil her yazı tipi programının gömülü olmasını gerektirir), Type 1 alt kümesinin FontDescriptor içinde /CharSet eksik (00031; §6.3.5), CIDFont alt kümesinde /CIDSet eksik (00032; §6.3.5), CIDFontType2 içinde /CIDToGIDMap eksik (00033; §6.3.3.2 Cor2), uyumsuz /Encoding değerine sahip simgesel olmayan TrueType (00034; §6.3.7 Cor2, WinAnsi/MacRoman değerini doğrudan veya BaseEncoding olarak ve /Differences olmadan gerektirir), hâlâ /Encoding taşıyan simgesel TrueType (00035; §6.3.7 Cor2), PDF/A-Na veya PDF/A-Nu belgelerinde /ToUnicode eksik en az bir yazı tipi (00036; §6.3.8 dört sınıflı muafiyet uygulanır), profil akışını gömmeyen ICCBased renk uzayı (00037; §6.2.3.2) ve hem DeviceRGB hem DeviceCMYK kullanan dosya (00038; §6.2.3.3 bu karışımı yasaklar).
- /ToUnicode denetimi (00036), uyumluluk düzeyleri A ve U ile sınırlandırılmıştır; çünkü yalnızca bu düzeyler ISO 19005-1 §6.3.8 ve ISO 19005-2 §6.2.11.7 uyarınca Unicode eşlemesi gerektirir. Level B dosyaları (PDF/A-1b, PDF/A-2b, PDF/A-3b) işaretlenmez. Dört sınıflı muafiyet, önceden tanımlı kodlamaları (MacRomanEncoding, MacExpertEncoding, WinAnsiEncoding), Adobe Standard Latin / Symbol glif adı yazı tipleri için temsil olarak Standard 14 Type 1 BaseFonts değerlerini ve alt CIDFont'u Adobe-GB1, Adobe-CNS1, Adobe-Japan1 veya Adobe-Korea1 registry'lerini kullanan Type 0 yazı tiplerini tanır.
- Yazı tipi denetimi her Font sözlüğünü dolaşır, Subtype değerine göre sınıflandırır (Type1, MMType1, TrueType, Type3, alt CIDFontType0 veya CIDFontType2 öğesine sahip Type0) ve ardından ilgili denetimleri dispatch eder. Type 0 bileşik yazı tipleri, /ToUnicode değerini Type 0 sarmalayıcısında tutarken gömme ve alt küme denetimlerini alt CIDFont'a devreder. Alt küme algılama standart altı büyük harfli önek kuralını kullanır.
v3.50.0 2026-05-22
- CheckCompliancePDFA artık doğrulayıcının daha önce kaçırdığı 15 ek PDF/A uyumsuzluk sorununu bildirir: eksik trailer /ID dizisi (00013), eksik Document Catalog /Metadata akışı (00014), /Metadata akışına uygulanmış /Filter (00015), /F, /FFilter veya /FDecodeParms üzerinden harici dosyalara başvuran stream sözlükleri (00016), herhangi bir dosya belirtimi sözlüğünde /EF üzerinden veya PDF/A-1 belgelerinde Name tree /EmbeddedFiles girdisi üzerinden bildirilen gömülü dosyalar (00017, 00018), yasaklı bir eylem türüne işaret eden /OpenAction (00019), Document Catalog veya herhangi bir Page içindeki /AA ek eylem sözlükleri (00020, 00021), PDF/A-1 belgelerinde JBIG2Decode veya JPXDecode filtreleri (00022, 00023), /Name değeri /Identity olmayan Crypt filtreleri (00024), Document Catalog içindeki /Requirements (00025), /UR3 ve /DocMDP dışındaki anahtarlara sahip /Perms (00026) ve true olarak ayarlanmış /AcroForm /NeedAppearances (00027). Doğrulayıcı artık ISO 19005-1 §6.6.1 uyarınca yasaklı Catalog /OpenAction eylem türlerini (/Launch, /Sound, /Movie, /ResetForm, /ImportData, /JavaScript, /Hide, /SetState, /NOP, /Trans, /GoTo3DView, /Rendition, /SetOCGState) ve {NextPage, PrevPage, FirstPage, LastPage} izin listesinin dışındaki named-action /N değerlerini işaretler.
- PDFAID ayrıştırıcısı, mevcut A ve B varyantlarının yanında U uyumluluk sonekini (PDF/A-2U, PDF/A-3U) kabul eder; böylece CheckCompliancePDFA artık başka bir araç tarafından üretilen PDF/A-2U veya PDF/A-3U dosyasını tararken hatalı "00005 PDFA Mark NOT Found or invalid" uyarısı yükseltmez. ISO 19005-2:2011 içinde eklenen Unicode eşleme uyumluluk düzeyleri artık doğrulayıcı tarafından tanınır.
- Filtreye özgü denetimler (JBIG2Decode, JPXDecode) ve gömülü dosya denetimleri (/EF, /EmbeddedFiles) PDF/A-1 ile sınırlı kalır; çünkü ISO 19005-2 §6.2.8.3 ve §6.8 bu kısıtlamaları PDF/A-2 ve PDF/A-3 için açıkça gevşetir. Belge yapısı denetimleri (/Metadata, /AcroForm /NeedAppearances, /OpenAction, /AA, /Requirements, /Perms) her PDF/A bölümüne uygulanır.
v3.49.0 2026-05-21
- AddLinkToImportData, kullanıcı bağlantıya tıkladığında belgenin AcroForm alanlarını harici bir FDF dosyasından dolduran PDF import-data eylemine (/S /ImportData) sahip bir Link açıklaması oluşturur (ISO 32000-1 §12.6.4.8, Table 198). FileName parametresine, AddLinkToFile / AddLinkToFileEx tarafından kullanılan aynı yol normalleştirme kurallarıyla bir filespec sözlüğü olarak başvurulur (ters eğik çizgiler ISO 32000-1 §7.11.2.1 uyarınca düz eğik çizgilere dönüştürülür). Options bit 0 görünür kenarlığı açıp kapatır ve bit 1–3, mevcut AddLinkTo* kurallarıyla eşleşecek şekilde bağlantı vurgulama modunu (Invert, Outline, Push) seçer. PDF 1.4 veya daha sonrası. Eylem harici bir kaynağa başvurduğu için PDF/A içinde izinli DEĞİLDİR; PDF/A modunda çağrıldığında facade sessizce 0 döndürür. Delphi kütüphanesinde ve DLL arayüzünde DLAddLinkToImportData / DLAddLinkToImportDataA (PWideChar ve PAnsiChar biçimi) olarak sunulur.
v3.48.0 2026-05-21
- AddLinkToHideField, kullanıcı bağlantıya tıkladığında bir veya daha fazla AcroForm alanının görünürlüğünü değiştiren PDF hide eylemine (/S /Hide) sahip bir Link açıklaması oluşturur (ISO 32000-1 §12.6.4.10, Table 196). FieldNames virgül, noktalı virgül veya satır sonlarıyla ayrılmış bir veya daha fazla tam nitelikli alan adını kabul eder; tek ad /T değerini metin dizesi olarak, iki veya daha fazla ad /T değerini dizi olarak yayar ve her iki biçime de belirtim tarafından izin verilir. HideFlag görünürlük yönünü seçer: sıfır olmayan değer listelenen alanları gizler (/H true), sıfır ise gösterir (/H false). Options bit 0 görünür kenarlığı açıp kapatır ve bit 1–3, AddLinkToWeb / AddLinkToNamedAction ile eşleşecek şekilde bağlantı vurgulama modunu (Invert, Outline, Push) seçer. PDF 1.2 veya daha sonrası. Harici bir kaynağa başvurulmadığı için PDF/A uyumludur. Delphi kütüphanesinde ve DLL arayüzünde DLAddLinkToHideField / DLAddLinkToHideFieldA (PWideChar ve PAnsiChar biçimi) olarak sunulur.
v3.47.0 2026-05-21
- AddLinkToNamedAction, ISO 32000-1 §12.6.4.11, Table 194 içinde tanımlanan dört standart görüntüleyici gezinme komutundan birini tetikleyen PDF named action (/S /Named) eylemine sahip bir Link açıklaması oluşturur: NextPage, PrevPage, FirstPage ve LastPage. NamedActionType parametresi komutu seçer (0=NextPage, 1=PrevPage, 2=FirstPage, 3=LastPage); bu aralığın dışındaki değerler NextPage değerine geri düşer, böylece writer her zaman belirtime uygun bir /N adı yayar. Options bit 0 görünür kenarlığı açıp kapatır ve bit 1–3, mevcut AddLinkToWeb / AddLinkToPage kurallarıyla eşleşecek şekilde bağlantı vurgulama modunu (Invert, Outline, Push) seçer. Açıklama PDF 1.1 veya daha sonrasını gerektirir ve harici bir kaynağa başvurulmadığı için PDF/A ile uyumludur. Delphi kütüphanesinde ve DLL arayüzlerinde kullanılabilir.
v3.46.1 2026-05-21
- AddCaretAnnotation, verilen dikdörtgende bir caret markup açıklaması (PDF /Subtype /Caret) oluşturur ve sayfada metin veya içeriğin eklendiği, atlandığı ya da başka şekilde inceleyenin dikkatini gerektirdiği bir konumu işaretler. SymbolType (0 / 1) üzerinden iki sembol türünü (None ve Paragraph), yapılandırılabilir rengi, opaklığı, başlığı, içeriği ve oluşturma/değiştirme zaman damgalarını destekler. ISO 32000-1 §12.5.6.11 içinde tanımlıdır. PDF 1.5 veya daha sonrası. Delphi kütüphanesinde ve DLL arayüzlerinde kullanılabilir.
- Bu girdi, v3.44.0 Square+Circle ile başlayan geometrik açıklama tamamlamasını bitirir. PDFlibPas artık mevcut Link, FileAttachment, SVG, U3D ve SWF desteğine ek olarak Text, Stamp, FreeText, TextMarkup (Highlight/Underline/Squiggly/StrikeOut), Square, Circle, Line, Polygon, PolyLine, Ink ve Caret açıklamaları oluşturur.
v3.46.0 2026-05-21
- AddInkAnnotation, sayfada çizilmiş el yazısı vuruşları veya serbest biçimli işaretleri temsil eden bir ink markup açıklaması (PDF /Subtype /Ink) oluşturur. Vuruşlar, birden çok vuruşun '|' veya yeni satır ile ayrıldığı tek bir dize olarak sağlanır ve her vuruş içinde koordinat çiftleri AddPolygonAnnotation tarafından kullanılan aynı boşluk/virgül/noktalı virgül/sekme biçimini izler. Örneğin "100 100 110 105 120 110 | 200 200 210 205" iki ayrı vuruşu tanımlar. Yapılandırılabilir kenarlık genişliğini, mürekkep rengini, opaklığı, başlığı, içeriği ve zaman damgalarını destekler. ISO 32000-1 §12.5.6.13 içinde tanımlıdır. PDF 1.3 veya daha sonrası. Delphi kütüphanesinde ve DLL arayüzlerinde kullanılabilir.
- Her vuruş çift sayıda değer içermelidir (en az dört); aksi halde çağrı 0 döndürür ve hiçbir açıklama yazılmaz. /Rect, tüm vuruşların birleşik kapsamından artı küçük bir padding ile otomatik olarak hesaplanır; böylece vuruşlar açıklama sınırlayıcı kutusunun içinde kalır.
v3.45.0 2026-05-21
- AddPolygonAnnotation, boşluk, virgül, noktalı virgül veya sekme ile ayrılmış koordinat çiftlerinden oluşan bir dize olarak sağlanan köşelere sahip kapalı bir polygon markup açıklaması (PDF /Subtype /Polygon) oluşturur (örn. "100 100 200 100 200 200 100 200"). Yapılandırılabilir kenarlık genişliğini, kenarlık rengini, isteğe bağlı iç dolgu rengini, opaklığı, başlığı, içeriği ve zaman damgalarını destekler. ISO 32000-1 §12.5.6.9 içinde tanımlıdır. PDF 1.5 veya daha sonrası. Delphi kütüphanesinde ve DLL arayüzlerinde kullanılabilir.
- AddPolyLineAnnotation, aynı vertex-string biçimiyle ve her uçta yapılandırılabilir uç çizgi stilleriyle (None, Square, Circle, Diamond, OpenArrow, ClosedArrow, Butt, ROpenArrow, RClosedArrow, Slash) açık bir polyline markup açıklaması (PDF /Subtype /PolyLine) oluşturur. ISO 32000-1 §12.5.6.9 içinde tanımlıdır. PDF 1.5 veya daha sonrası. Delphi kütüphanesinde ve DLL arayüzlerinde kullanılabilir.
- Her iki açıklama da en az iki köşe noktası (dört sayı) ve toplamda çift sayıda sayı gerektirir; vertex dizesi geçerli bir çift listesine ayrıştırılamazsa çağrı 0 döndürür. /Rect, uç süslemelerinin görünür kalması için köşe kapsamından artı kenarlık genişliğiyle orantılı padding ile hesaplanır.
- Her iki açıklama da daha düşük bir minimum sürüm kilidi altında yayıldığında belge sürümünü PDF 1.5 değerine yükseltir.
v3.44.1 2026-05-21
- AddLineAnnotation, iki uç nokta arasında bir line markup açıklaması (PDF /Subtype /Line) oluşturur; yapılandırılabilir kenarlık genişliği, çizgi rengi, isteğe bağlı iç dolgu rengi, her iki uç için uç çizgi stilleri (None, Square, Circle, Diamond, OpenArrow, ClosedArrow, Butt, ROpenArrow, RClosedArrow, Slash), opaklık, başlık, içerik ve oluşturma/değiştirme zaman damgalarını destekler. ISO 32000-1 §12.5.6.7 içinde tanımlıdır. PDF 1.3 veya daha sonrası. Delphi kütüphanesinde ve DLL arayüzlerinde kullanılabilir.
- Açıklama /Rect değeri, uç süslemelerinin açıklama sınırlayıcı kutusu içinde kalması için iki uç noktadan artı kenarlık genişliğiyle orantılı padding ile hesaplanır.
v3.44.0 2026-05-21
- AddSquareAnnotation, verilen dikdörtgende yapılandırılabilir kenarlık genişliği, kenarlık rengi, isteğe bağlı iç dolgu rengi, opaklık, başlık, içerikler ve oluşturma/değiştirme zaman damgalarıyla bir dikdörtgen işaretleme açıklaması (PDF /Subtype /Square) oluşturur. ISO 32000-1 §12.5.6.8 içinde tanımlanmıştır. PDF 1.3 veya sonrası. Delphi kitaplığında ve DLL arabirimlerinde kullanılabilir.
- AddCircleAnnotation, AddSquareAnnotation ile aynı yapılandırılabilir kenarlık, dolgu, opaklık, başlık, içerikler ve zaman damgalarıyla, verilen dikdörtgen içine yerleştirilmiş bir elips işaretleme açıklaması (PDF /Subtype /Circle) oluşturur. ISO 32000-1 §12.5.6.8 içinde tanımlanmıştır. PDF 1.3 veya sonrası. Delphi kitaplığında ve DLL arabirimlerinde kullanılabilir.
- Her iki yeni açıklama da daha düşük bir minimum sürüm kilidi altında üretildiğinde belge sürümünü otomatik olarak PDF 1.3'e yükseltir ve standart bir işaretleme açıklaması alan kümesi (/Type /Subtype /Rect /C /IC /BS /Border /CA /F /M /CreationDate /NM /T /Contents /Subj /P) üretir; böylece Acrobat, Foxit ve Edge içindeki mevcut inceleme iş akışları bunları oluşturulduktan sonra düzenleyebilir.
v3.43.0 2026-05-20
- SetStructElemSpaceBefore ve SetStructElemSpaceAfter, o anda açık olan yapı öğesinde /SpaceBefore ve /SpaceAfter özniteliklerini (Layout sahibi) ayarlar ve blok düzeyi öğelerden önceki ve sonraki aralığı nokta cinsinden ifade eder. ISO 32000-1 §14.8.5.4.2 Table 340 içinde tanımlanmıştır. Delphi kitaplığında, ActiveX'te (Dispids 73008051/73008052) ve DLL arabirimlerinde kullanılabilir.
- SetStructElemStartIndent ve SetStructElemEndIndent, /StartIndent ve /EndIndent özniteliklerini (Layout sahibi) ayarlar ve içerik dikdörtgeninin yazma kipine duyarlı başlangıç ve bitiş kenarlarından girintiyi nokta cinsinden ifade eder. ISO 32000-1 §14.8.5.4.2 Table 340 içinde tanımlanmıştır. Delphi kitaplığında, ActiveX'te (Dispids 73008053/73008054) ve DLL arabirimlerinde kullanılabilir.
- SetStructElemColor, /Color özniteliğini (Layout sahibi) RGB üçlüsü olarak (her bileşen 0.0-1.0) ayarlar ve yeniden akış motorları ile aşağı akış renk kontrastı denetleyicileri için öğenin ön plan rengini açıklar. ISO 32000-1 §14.8.5.4.2 Table 340 içinde tanımlanmıştır. Delphi kitaplığında, ActiveX'te (Dispid 73008055) ve DLL arabirimlerinde kullanılabilir.
- BuildStructElemDictRef içindeki bir serileştirme hatası düzeltildi: tek belirteçli sayısal öznitelik değerleri (SpaceBefore, SpaceAfter, StartIndent, EndIndent gibi) PDF sayıları yerine PDF adları olarak yazılıyordu. Düzeltme hem tek sahipli hem de çok sahipli öznitelik dalları için geçerlidir.
v3.42.0 2026-05-20
- CheckCompliancePDFA artık altı PDF/A kipinin tamamını (1a, 1b, 2a, 2b, 3a, 3b) doğru şekilde doğrular. PDFAID denetimi (kod 00005), yalnızca '1B' yerine altı geçerli XMP işaretleyicisinden herhangi birini kabul eder. Sürüm üst sınırı denetimi (00002), PDF/A-1 için 1.4 ve PDF/A-2 ile PDF/A-3 için 1.7 uygular.
- OCProperties denetimi (kod 00003) artık koşulludur: yalnızca isteğe bağlı içeriğin (katmanların) yasak olduğu PDF/A-1 belgelerine uygulanır. PDF/A-2 ve PDF/A-3 katmanlara izin verir ve artık işaretlenmez.
- Üç yeni uyumluluk denetimi eklendi: kod 00006 şifrelenmiş belgeleri işaretler (şifreleme tüm PDF/A sürümlerinde yasaktır); kod 00007 katalogda OutputIntents girdisi eksik olan belgeleri işaretler (tüm PDF/A sürümleri için gereklidir); kod 00011 ve 00012, uygunluk düzeyi -a (erişilebilirlik) olduğunda MarkInfo veya StructTreeRoot eksik olan belgeleri işaretler.
v3.41.0 2026-05-20
- PDF/A kipi artık yasaklı işlemleri API düzeyinde zorunlu kılar. Bir PDF/A kipi etkin olduğunda (1-6 kiplerinden herhangi biri), SetEncryption, AddSeparationColor, SetFillColorCMYK, SetTextColorCMYK veya başka herhangi bir CMYK/Separation/Shader API çağrısı 0 döndürür ve hiçbir etkisi olmaz; bu, PDF/A's için tek bir sRGB çıktı amacı gereksinimiyle tutarlıdır.
- PDF/A-1'de (kip 1 ve 2) saydamlık yasaktır: etkin kip 1 veya 2 olduğunda SetTransparency, SetBlendMode ve SetPageTransparencyGroup 0 döndürür ve işlem yapmaz. PDF/A-2 ve PDF/A-3 (kip 3-6) sınırlı saydamlığa izin verir ve kısıtlanmaz.
- JavaScript eylemleri tüm PDF/A kiplerinde (1-6) yasaktır: herhangi bir PDF/A kipi etkinken SetOpenActionJavaScript, PageJavaScriptAction, DocJavaScriptAction, AddGlobalJavaScript ve AddLinkToJavaScript tümü 0 döndürür ve işlem yapmaz. ISO 19005-1 §6.6.1, JavaScript'i PDF/A belgelerinden açıkça yasaklar.
- Dosya eki API'leri (EmbedFile, AddFileAttachment) PDF/A-1 ve PDF/A-2 kiplerinde (1-4) engellenir. Bunlar, rastgele gömülü dosyalara açıkça izin veren PDF/A-3'te (kip 5 ve 6) işlevsel kalır.
v3.40.0 2026-05-20
- SetPDFAMode artık PDF/A-2 ve PDF/A-3 uygunluk düzeylerini destekler. PDF/A-2b için NewMode=3, PDF/A-2a için 4, PDF/A-3b için 5 veya PDF/A-3a için 6 geçirin. PDF/A-2, PDF 1.7'yi hedefler ve katmanlara, etkileşimli formlara, JPEG2000 görüntülerine ve sınırlı saydamlığa izin verir. PDF/A-3, rastgele gömülü dosyalara (herhangi bir MIME türü) izin vererek PDF/A-2'yi genişletir. Tüm -a varyantları, erişilebilirlik uygunluk düzeyi tarafından gerekli olan /MarkInfo ve etiketli PDF yapı işaretleyicilerini otomatik olarak yazar.
- Düzeltildi: SetPDFAMode(1) (PDF/A-1a), v3.20.0 içinde ortaya çıkan dahili bir yönlendirme hatası nedeniyle daha önce işlem yapmıyordu. Artık /MarkInfo ve /OutputIntents girdilerini doğru şekilde yazar ve XMP pdfaid:part=1/conformance=A değerini ayarlar.
- GetInformation(201), yeni kip numaralandırmasıyla tutarlı şekilde etkin PDF/A kipine karşılık gelen '1' ile '6' arasındaki değeri döndürür.
v3.39.0 2026-05-20
- SetStructElemWritingMode, o anda açık olan yapı öğesinde /WritingMode özniteliğini (Layout sahibi) ayarlar. Geçerli değerler LrTb (soldan sağa, Latin yazıları için varsayılan), RlTb (sağdan sola, Arapça ve İbranice için) ve TbRl'dir (yukarıdan aşağıya sağdan sola, geleneksel CJK dikey metni için). ISO 32000-1 §14.8.5.4.2 Table 340 içinde tanımlanmıştır. Delphi kitaplığında, ActiveX'te (Dispid 73008049) ve DLL arabirimlerinde kullanılabilir.
- SetStructElemListNumbering, o anda açık olan yapı öğesinde /ListNumbering özniteliğini (List sahibi) ayarlar. Desteklenen değerler arasında None, Disc, Circle, Square (sırasız işaretleyiciler) ve Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha (sıralı numaralandırma) bulunur. Öznitelik L (liste) öğesinde ayarlanır ve yardımcı teknolojinin liste türünü doğru şekilde duyurmasını sağlar. ISO 32000-1 §14.8.5.3.2 Table 336 içinde tanımlanmıştır. Delphi kitaplığında, ActiveX'te (Dispid 73008050) ve DLL arabirimlerinde kullanılabilir.
v3.38.0 2026-05-20
- SetStructElemColSpan, o anda açık olan yapı öğesinde /ColSpan özniteliğini (Table sahibi) ayarlar ve hücrenin kaç sütunu kapsadığını belirtir. ISO 32000-1 §14.8.5.7.2 Table 337 içinde tanımlanmıştır. Delphi kitaplığında, ActiveX'te (Dispid 73008047) ve DLL arabirimlerinde kullanılabilir.
- SetStructElemRowSpan, o anda açık olan yapı öğesinde /RowSpan özniteliğini (Table sahibi) ayarlar ve hücrenin kaç satırı kapsadığını belirtir. ISO 32000-1 §14.8.5.7.2 Table 337 içinde tanımlanmıştır. Delphi kitaplığında, ActiveX'te (Dispid 73008048) ve DLL arabirimlerinde kullanılabilir.
- Her iki işlev de Owner='Table' ve ilgili öznitelik adıyla AddTagAttribute çağırmaya eşdeğer kolaylık sarmalayıcılarıdır. Karmaşık veya kapsayan başlıklı tablolarda tam açıklanmış tablo hücreleri için SetStructElemScope işlevini tamamlarlar.
v3.37.2 2026-05-20
- GetPDFUADiagnostics artık N etkileşimli form alanında (Widget açıklamaları) TU (araç ipucu / erişilebilir ad) girdisi eksik olduğunda FORM-NO-TOOLTIP:N bildirir. ISO 14289-1 §7.18.4, alan odak aldığında yardımcı teknolojinin alanın amacını kullanıcıya duyurabilmesi için tüm etkileşimli form alanlarının bir TU girdisi taşımasını gerektirir. /TU, ekran okuyucuların sesli söylediği erişilebilir addır; programatik erişim ve form gönderimi için kullanılan kısmi alan adı olan /T'den farklıdır.
v3.37.1 2026-05-20
- GetPDFUADiagnostics artık N LI veya LBody yapı öğesi gerekli üst öğelerinin dışında göründüğünde LIST-STRUCT:N bildirir. ISO 32000-1 §14.8.4.4, LI öğesinin L'nin (liste) doğrudan alt öğesi olmasını ve LBody öğesinin LI'nin (liste öğesi) doğrudan alt öğesi olmasını gerektirir. Hatalı biçimlendirilmiş liste iç içeliği, yardımcı teknolojinin liste içeriğini doğru şekilde dolaşmasını ve duyurmasını engeller ve PDF/UA-1 doğrulayıcılarında belge yapısı doğrulama hatalarına neden olabilir.
v3.37.0 2026-05-20
- BeginTagEx2, bir yapı öğesi açan ve tüm ana öğe özelliklerini tek çağrıda ayarlayan yeni bir API'dir. BeginTagEx'in TagType, AltText, ActualText ve Lang parametrelerine ek olarak BeginTagEx2, Title (/T, Tags gezinme paneli için), ElemID (/ID, benzersiz öğe tanımlayıcısı) ve Expansion (/E, bir kısaltmanın veya akronimin tam metni) kabul eder. Bu üç ek parametreden herhangi biri için boş dize geçirmek, karşılık gelen ayarlayıcıyı atlamaya eşdeğerdir. BeginTagEx2, iyi açıklanmış öğeler için kalıp kodu azaltır; BeginTagEx çağrısından sonra SetStructElemTitle, SetStructElemID ve SetStructElemExpansion ayrı ayrı çağırmak yerine yedi özelliğin tümü tek çağrıda ayarlanabilir. İşlev Delphi kitaplığında, ActiveX'te (Dispid 73008046) ve DLL arabirimlerinde kullanılabilir.
v3.36.1 2026-05-20
- GetPDFUADiagnostics artık N TH (tablo başlık hücresi) yapı öğesinde Scope özniteliği eksik olduğunda TABLE-TH-NO-SCOPE:N bildirir. ISO 32000-1 §14.8.4.3.4 Table 337, Scope'u (Row, Column veya Both) bir başlık hücresinin hangi veri hücrelerine uygulandığını açıklayan öznitelik olarak tanımlar. Bu olmadan, ekran okuyucular ve diğer yardımcı teknolojiler karmaşık veya çok başlıklı tablolarda başlık hücrelerini veri hücreleriyle güvenilir şekilde ilişkilendiremez; bu ISO 14289-1 §7.5 tarafından gereklidir. Her TH öğesini etiketledikten hemen sonra SetStructElemAttr('Table','Scope', 'Column') (veya 'Row' / 'Both') çağırın.
v3.36.0 2026-05-20
- SetStructElemExpansion, o anda açık olan yapı öğesinde /E (genişletme metni) girdisini ayarlayan yeni bir API'dir (ISO 32000-1 §14.9.5). Genişletme metni, öğede bulunan bir kısaltmanın veya akronimin tam yazılmış biçimidir; örneğin metni "WWW" olan bir Span için "World Wide Web". Ekran okuyucular, kısaltılmış karakterleri telaffuz etmeye çalışmak yerine genişletmeyi okur; bu, teknik ve bilimsel içeriğin erişilebilirliği için kritiktir. PDF/UA-1 (ISO 14289-1 §7.2), doğal dilin belirsiz olmayacak şekilde belirlenebilir olmasını gerektirir; /E, kısaltmalar ve akronimler için standart mekanizmadır. İşlev Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir.
v3.35.1 2026-05-20
- GetPDFUADiagnostics artık belge bilgi sözlüğündeki /Title girdisi yoksa veya boşsa DOCINFO-TITLE-MISSING bildirir. PDF/UA-1 (ISO 14289-1), ekran okuyucuların belge açıldığında duyurabilmesi için bir belge başlığı gerektirir. Mevcut DISPLAYDOCTITLE-FALSE denetimi, başlığın görüntüleyici başlık çubuğunda gösterildiğini doğrular; DOCINFO-TITLE-MISSING tamamlayıcıdır ve başlık değerinin kendisinin ayarlandığını doğrular. Değeri sağlamak için SetDocumentInfo('Title', ...) çağırın.
v3.35.0 2026-05-20
- SetStructElemTitle, o anda açık olan yapı öğesinde /T (başlık) girdisini ayarlayan yeni bir API'dir (ISO 32000-1 §14.7.2 Table 324). Başlık, belirli öğe örneğini tanımlayan insan tarafından okunabilir bir etikettir; örneğin "Chapter 1", "Summary Table" veya "Figure 3: Quarterly Sales"; PDF görüntüleyicilerinin Tags gezinme panelinde gösterilir ve erişilebilirlik iyileştirme araçları tarafından kullanılır. /T, /Alt (işleme engelli kullanıcılar için alternatif metin) ve /ActualText'ten (glif düzeyinde metin düzeltmesi) farklıdır; en çok Table, Figure, Form, Sect ve Div gibi metin olmayan kapsayıcı öğelerde yararlıdır. Önceden ayarlanmış bir değeri temizlemek için boş dize geçirin. İşlev Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir.
v3.34.0 2026-05-20
- SetStructElemAltText, o anda açık olan yapı öğesinde /Alt girdisini ayarlayan yeni bir API'dir (ISO 32000-1 §14.9.3). BeginTag'e AltText geçirmeye eşdeğerdir, ancak alternatif metin açıklamasının öğe açıldıktan sonra ayarlanmasına veya güncellenmesine olanak tanır; açıklama öğe türünden ayrı hesaplandığında kullanışlıdır. PDF/UA-1 (ISO 14289-1 §7.5), Figure ve Formula öğelerinde Alt metni gerektirir; GetPDFUADiagnostics eksik değerler için zaten FIGURE-NO-ALT:N bildirir. İşlev Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir.
v3.33.1 2026-05-20
- GetPDFUADiagnostics artık belgede kullanılan ve /RoleMap sözlüğünde girdisi bulunmayan özel yapı öğesi türü adlarını algılayan ROLEMAP-UNMAPPED:N denetimini içerir. ISO 14289-1 §7.1 ve ISO 32000-1 §14.7.3, her standart dışı yapı türünün standart bir PDF türüne (P, Span veya Figure gibi) eşlenmesini gerektirir; böylece yardımcı teknoloji öğeyi nasıl işleyeceğini belirleyebilir. N eşlenmemiş tür bulunduğunda sorun açıklaması tür adlarının listesini içerir; böylece çağıranlar hangi AddRoleMap girdilerinin gerekli olduğunu bilir. ISO 32000-1 Table 333 (PDF 1.7) içinde tanımlanan 49 standart yapı türünün tümü tanınır ve rapordan hariç tutulur.
v3.33.0 2026-05-20
- SetStructElemLang, o anda açık olan yapı öğesinde /Lang girdisini ayarlayan yeni bir API'dir (ISO 32000-1 §14.9.2). Dil etiketi, öğe ve tüm alt öğeleri için SetDocumentLanguage veya SetPDFUAMode tarafından bildirilen belge düzeyindeki dili geçersiz kılar ve karma dilli belgelerin her aralığı doğru BCP 47 dil etiketiyle (ör. 'en-US', 'fr', 'zh-Hant-TW') işaretlemesini sağlar. Ekran okuyucular, belgeyi sesli okurken uygun metinden konuşmaya motorunu veya sesi seçmek için öğe düzeyindeki /Lang değerini kullanır. İşlev Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir.
v3.32.0 2026-05-20
- SetStructElemActualText, o anda açık olan yapı öğesinde /ActualText girdisini ayarlayan yeni bir API'dir (ISO 32000-1 §14.9.4). İçerik akışı çıkarımı yanlış sonuç vereceğinde bir glif dizisinin temsil ettiği kesin Unicode metni belirtmek için kullanın; en yaygın durumlar OpenType bağ glifleri (U+FB00 ff, U+FB01 fi, U+FB02 fl) ve açık olmayan genişletmelere sahip kısaltmalardır. ActualText, işlenen içeriği değiştirmek yerine tamamlar; görsel işlemeyi bastırmadan yardımcı teknolojinin ve metin çıkarıcıların bu öğe için okuduğu şeyi geçersiz kılar. İşlev Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir.
v3.31.1 2026-05-20
- GetPDFUADiagnostics artık eksik Alt metni bildirirken (FIGURE-NO-ALT:N) Figure öğelerine ek olarak Formula yapı öğelerini de denetler. ISO 32000-1 §14.9.3, hem grafik şekiller hem de matematiksel formüller için alternatif açıklamalar gerektirir; daha önce yalnızca Figure öğeleri taranıyordu.
- GetPDFUADiagnostics artık document's PDF sürümü 1.7'nin altındaysa PDF-VERSION-LOW bildirir. PDF/UA-1 (ISO 14289-1), PDF 1.7 (ISO 32000-1:2008) temel alınarak tanımlanmıştır; PDF 1.5 veya 1.6 düzeyindeki belgeler temel belirtim gereksinimlerini karşılamaz. Sürümü otomatik olarak 1.7'ye yükseltmek için SetPDFUAMode çağırın.
v3.31.0 2026-05-19
- Yapı öğesi ID'leri ve tablo başlığı ilişkilendirmesi artık desteklenir. SetStructElemID, o anda açık olan yapı öğesine benzersiz bir dize tanımlayıcısı (/ID) atar; ID'ler belge kaydedildiğinde yapı ağacı kökünde bir /IDTree ad ağacında toplanır ve erişilebilirlik araçlarının ve çapraz başvuruların öğeleri ID'ye göre bulmasını sağlar (ISO 32000-1 §14.7.4). SetStructElemHeaders, geçerli tablo hücresini (TD veya TH), daha önce atanmış ID'lerin virgülle ayrılmış listesi aracılığıyla bir veya daha fazla başlık hücresiyle ilişkilendirir ve Table öznitelik sahibi sözlüğüne /Headers dizisini yazar (ISO 32000-1 §14.8.5.7.2). Bu iki işlev birlikte PDF/UA-1 (ISO 14289-1 §7.10) ve WCAG 2.x SC 1.3.1 için karmaşık tablo işaretlemesini destekler. Her iki işlev de Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir. AddTagAttribute da artık /Headers özniteliğini virgülle ayrılmış değerlerle PDF metin dizesi dizileri olarak doğru şekilde işler.
v3.30.1 2026-05-19
- GetPDFUADiagnostics artık belge sırasındaki başlık düzeyi atlamalarını algılayan HEADING-LEVEL-SKIP:N denetimini içerir (örneğin, arada H2 olmadan H1'in hemen ardından H3 gelmesi). Denetim, tüm yapı öğesi ağacını ön sıra dolaşımıyla tarar ve sonraki başlık düzeyinin öncekini birden fazla aştığı her oluşumu sayar. Genel H öğeleri H1 olarak değerlendirilir. Daha yüksek düzeyli bir başlığa geri dönmek (H3 → H1) atlama olarak sayılmaz. WCAG 2.x Success Criterion 1.3.1 ve ISO 14289-1 §7.1, başlıkların boşluk olmadan iç içe geçmesini gerektirir.
v3.30.0 2026-05-19
- Yapı öğesi öznitelikleri artık etiketli PDF ve PDF/UA belgeleri için desteklenir. Üç yeni API işlevi, etiket yığınında o anda oluşturulmakta olan yapı öğesine öznitelik eklenmesine olanak tanır: AddTagAttribute (genel amaçlı, herhangi bir sahip/ad/değer), SetStructElemScope (TH başlık hücreleri için Table sahibi altında /Scope özniteliğini ayarlayan kolaylık sarmalayıcısı — ISO 32000-1 §14.8.5.7.2) ve SetStructElemBBox (şekiller ve diğer görsel olarak konumlandırılmış öğeler için Layout sahibi altında /BBox özniteliğini ayarlayan kolaylık sarmalayıcısı — ISO 32000-1 §14.8.5.4). Belge kaydedildiğinde, öznitelikler her yapı öğesinde /A öznitelik sözlükleri olarak yazılır; aynı sahibin birden çok özniteliği tek sözlükte gruplanır ve farklı sahiplerin öznitelikleri sözlük dizisi olarak yazılır. Üç işlevin tümü Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir.
v3.29.1 2026-05-19
- GetPDFUADiagnostics artık iki ek denetim içerir: belgede Alt metin değeri eksik Figure yapı öğeleri olup olmadığı (ISO 14289-1 §7.5 ve ISO 32000-1 §14.9.3 uyarınca FIGURE-NO-ALT:N olarak bildirilir) ve EndTag çağrılmadığı için hâlâ açık olan yapı öğeleri olup olmadığı (STRUCT-UNCLOSED:N olarak bildirilir). Şekil denetimi, tüm iç içe geçme derinliklerindeki öğeleri kapsayacak şekilde yapı öğesi ağacının tam özyinelemeli dolaşımını gerçekleştirir.
v3.29.0 2026-05-19
- GetPDFUADiagnostics, bir belgeyi olası PDF/UA-1 (ISO 14289-1) uyumluluk sorunları açısından denetleyen ve bulguların yeni satırla ayrılmış listesini döndüren yeni bir tanılama API'sidir. Altı denetim gerçekleştirilir: MarkInfo/Marked ayarlı mı (etiketli PDF), belge kataloğunda /Lang girdisi var mı, ViewerPreferences/DisplayDocTitle true mu, XMP meta verileri pdfuaid:part tanımlayıcısı içeriyor mu, Contents girdisi eksik muaf olmayan açıklamaların sayısı ve AFRelationship girdisi eksik gömülü dosyaların sayısı. Her bulgu, kısa bir kodla (ör. LANG-MISSING, ANNOT-NO-CONTENTS:3) ve ardından insan tarafından okunabilir bir açıklamayla tanımlanır. Sorun bulunmadığında boş dize döndürür. Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir.
v3.28.5 2026-05-19
- PDF/UA-1 açıklama erişilebilirliği iyileştirmesi: Bir FileAttachment açıklamasında Contents girdisi ve /T alanı yoksa, açıklamanın gömülü dosya belirtiminden (/FS /UF veya /F) alınan dosya adı artık yedek erişilebilir açıklama olarak kullanılır. Bu, açıklama Contents yedek zincirini tamamlar: /T → Link URI → Stamp name → FileAttachment filename. Ekran okuyucular sessizlik yerine ekli dosyanın adını alır ve en yaygın açıklama türleri için ISO 14289-1 §7.18.1 gereksinimini karşılar.
v3.28.4 2026-05-19
- PDF/UA-1 açıklama erişilebilirliği iyileştirmesi: Bir Stamp açıklamasında Contents girdisi yoksa (veya boşsa) ve /T alanı yoksa, açıklamanın 's /Name girdisinden alınan damga türü adı artık yedek erişilebilir açıklama olarak kullanılır (ör. "Approved", "Draft", "Confidential", "Final"). Bu, v3.28.3 içinde tanıtılan açıklama Contents yedek zincirini, incelenmiş veya onaylanmış belgeleri içeren iş akışlarında yaygın olan ve sıkça açık bir Contents değeri bulunmayan damga açıklamalarını kapsayacak şekilde genişletir.
v3.28.3 2026-05-19
- PDF/UA-1 açıklama erişilebilirliği iyileştirmesi: Bir Link açıklamasında Contents girdisi yoksa (veya boşsa) ve /T alanı yoksa, açıklamanın 's URI eyleminden alınan URI artık yedek erişilebilir açıklama olarak kullanılır. Bu yalnızca SetPDFUAMode işleme sırasında ve yalnızca /URI eylemi taşıyan Link açıklamalarına uygulanır. Ekran okuyucular son çare etiketi olarak URL'yi alır ve yazarların insan tarafından okunabilir bir açıklama sağlamadan köprü oluşturduğu yaygın durumda ISO 14289-1 §7.18.1 gereksinimini karşılar.
v3.28.2 2026-05-19
- SetEmbeddedFileAFRelationship, gömülü bir dosyanın 's dosya belirtimi sözlüğünde AFRelationship değerini açıkça ayarlamak için yeni bir API'dir. ISO 14289-1 (PDF/UA-1) §7.11 tarafından gerekli olan bu işlev, çağıranların beş geçerli değerden birini seçerek gömülü dosyanın belge içeriğiyle anlamsal ilişkisini belirtmesine olanak tanır: Source, Data, Alternative, Supplement veya Unspecified. SetPDFUAMode etkin olduğunda, AFRelationship anahtarı olmayan her gömülü dosyaya otomatik olarak Unspecified atanır; kaydetmeden önce bu varsayılanı geçersiz kılmak için bu işlevi kullanın. Delphi kitaplığında, ActiveX'te ve DLL arabirimlerinde kullanılabilir.
v3.28.1 2026-05-19
- SetPDFUAMode, XMP meta verileri belgeye özgü bir başlık yerine genel kitaplık varsayılan başlığını taşıyan bir belgede çağrıldığında, başlık artık otomatik olarak document's /Info Title girdisindeki değerle değiştirilir (varsa). Bu, pdfuaid:part-1 XMP paketinin yer tutucu yerine gerçek belge başlığını yansıtmasını sağlar ve PDF/UA-1 doğrulayıcı beklentilerini karşılar.
- XMP ayrıştırıcısı (LoadFromString), bir belge yüklendiğinde mevcut XMP meta verilerinden dc:title değerini artık okur; böylece zaten dc:title içeren bir PDF'nin gidiş-dönüş işlenmesi, varsayılan yer tutucuya dönmek yerine bu başlığı doğru şekilde korur.
v3.28.0 2026-05-19
- BeginArtifactEx(ArtifactType, ArtifactSubtype), hem artifact /Type hem de Pagination /Subtype değerini tek bir çağrıda ifade etmek için BeginArtifact'i genişleten yeni bir tagged-PDF API'sidir. Her iki parametre de boş olmadığında yazılan işleç /Artifact << /Type /T /Subtype /S >> BMC olur ve ISO 32000-1 §14.8.2.2.1 uyarınca üstbilgiler ve altbilgiler gibi tam belirtilmiş Pagination artifact'lerini mümkün kılar. Yalnızca bir parametre boş değilse ilgili tek anahtarlı biçim kullanılır. DLL giriş noktaları DLBeginArtifactEx ve DLBeginArtifactExA da dışa aktarılır.
v3.27.2 2026-05-19
- BeginArtifact artık artifact türlerini pagination alt türlerinden doğru şekilde ayırır. Bağımsız değişken Pagination, Layout veya Page olduğunda (ISO 32000-1 §14.8.2.2.1 Table 330 uyarınca artifact türleri), marked-content işleci /Subtype yerine /Type yazar. Header, Footer ve Watermark gibi diğer değerler /Subtype olarak yazılmaya devam eder. Bu, çağıran taraf bir pagination artifact'ini işaretlemek istediğinde daha önce hatalı olarak /Subtype /Pagination yazan çıktıyı düzeltir.
v3.27.1 2026-05-19
- PDF/UA modu etkinken ve belge gömülü dosyalar içerdiğinde, AFRelationship girdisi olmayan her file specification sözlüğü artık kaydetme sırasında otomatik olarak bir tane alır. Yazılan değer /Unspecified olur ve her gömülü dosyanın bir AFRelationship anahtarı taşımasını gerektiren ISO 14289-1 §7.11 koşulunu karşılar. Bu, hem EmbedFile ile eklenen dosyalara hem de yüklenen bir belgede zaten bulunan gömülü dosyalara uygulanır.
v3.27.0 2026-05-19
- AddRoleMap(CustomType, StandardType), özel (standart olmayan) bir yapı öğesi tür adından standart bir PDF yapı türüne eşleme kaydeden yeni bir tagged-PDF API'sidir. Kaydedildiğinde eşlemeler, structure tree root içindeki RoleMap sözlüğüne yazılır ve uygulamaya özgü tag adları kullanan belgeler için ISO 14289-1 §7.1 gereksinimini karşılar. Birden çok eşleme kaydedilebilir; yinelenen anahtarların üzerine son çağrı yazılır. DLL giriş noktaları DLAddRoleMap ve DLAddRoleMapA da dışa aktarılır.
v3.26.0 2026-05-19
- BeginTagEx(TagType, AltText, ActualText, Lang), BeginTag'i açık bir doğal dil özniteliğiyle genişleten yeni bir tagged-PDF API'sidir. Lang boş olmadığında, structure element's /Lang özniteliğine yazılır ve çok dilli belgeler için ISO 14289-1 §7.2 tarafından gereken öğe başına dil açıklamasını mümkün kılar. BeginTag ile aynı şekilde davranmak için boş bir Lang dizesi geçirin. DLL giriş noktaları DLBeginTagEx ve DLBeginTagExA da dışa aktarılır.
v3.25.1 2026-05-19
- Varsayılan Windows kod sayfası (WinAnsiEncoding) ile yüklenen subset edilmemiş TrueType fontlar artık bir ToUnicode CMap akışı alır; bu da bu fontlar için güvenilir Unicode metin çıkarma ve kopyala/yapıştır olanağı sağlar. Daha önce ToUnicode akışı yalnızca açık bir code-page override veya Differences dizisi bulunduğunda yazılıyordu; yaygın varsayılan kodlama yolunda bu eksikti.
- Aynı düzeltme, açık bir varsayılan olmayan kod sayfasıyla ancak Differences dizisi olmadan yüklenen TrueType fontlara ve packaged-font formatı üzerinden yüklenen fontlara da uygulanır.
v3.25.0 2026-05-19
- PDF/UA modu etkinken, boş olmayan bir Contents girdisi bulunmayan muaf olmayan annotation'lar (Widget, PrinterMark ve TrapNet dışındaki tüm türler) artık kaydetme sırasında otomatik olarak bir tane alır. Annotation's /T (başlık / yazar) değeri yedek olarak kullanılır ve başlığı olup açık bir erişilebilir açıklaması olmayan annotation'lar için ISO 14289-1 §7.18.1 gereksinimini karşılar.
v3.24.0 2026-05-19
- PDF/UA modu etkinken, TU (tooltip / alternatif açıklama) girdisi bulunmayan etkileşimli form alanları artık kaydetme sırasında otomatik olarak bir tane alır. Field's kısmi adı (/T girdisi) yedek değer olarak kullanılır ve ekran okuyucuların her alanı tanımlayabilmesini sağlar. Push button'lar, ISO 14289-1 §7.18.4 uyarınca bu gereksinimin dışında doğru şekilde tutulur.
v3.23.1 2026-05-19
- GetInformation(200), seçili belgede PDF/UA-1 modu etkinken '1' döndürür ve çağıranların çalışma zamanında conformance mode durumunu sorgulamasını sağlar.
- GetInformation(201), PDF/A-1a için '1', PDF/A-1b için '2' veya PDF/A modu kapalıyken boş bir dize döndürür.
- GetInformation(311) ve GetInformation(312), artık en son version-lock çakışmasından gelen version requirement dizesini ve feature adını doğru şekilde döndürür (daha önce v3.20.3 girdisinde duyurulmuştu ancak henüz uygulanmamıştı).
- GetInformation(313), kaydetme hedefinin şu anda kilitlendiği PDF version dizesini veya serbest sürümlenen belgeler için boş bir dize döndürür.
v3.23.0 2026-05-19
- SetMarkInfo(Marked) artık herkese açık bir API'dir ve MarkInfo.Marked bayrağının SetPDFUAMode tarafından gerçekleştirilen tam PDF/UA-1 kurulumundan bağımsız olarak ayarlanmasına olanak tanır. Marked 1 olduğunda, ISO 14289-1 §7.18.6 tarafından gerektiği gibi MarkInfo.Suspects da false olarak ayarlanır.
- PDF/UA modu etkinken, tüm sayfalar kaydetme sırasında otomatik olarak bir /Tabs /S girdisi alır ve ISO 14289-1 §7.18.4 kapsamındaki yapı tabanlı sekme sırası gereksinimini karşılar.
- SetPDFUAMode, SetDocumentLanguage, SetMarkInfo, BeginTag, EndTag, BeginArtifact ve EndArtifact için tam sözdizimi tabloları ve kullanım örnekleriyle HTML referans belgeleri eklendi.
v3.22.0 2026-05-19
- BeginTag(TagType, AltText, ActualText), geçerli içerik akışında bir tagged-PDF yapı öğesi açar, otomatik atanmış bir MCID ile BDC işleci yazar ve öğeyi belge yapı ağacına kaydeder. TagType herhangi bir PDF standart yapı türüdür (P, H1, Figure, Table, vb.). AltText ve ActualText, PDF text string (UTF-16BE) olarak kodlanan isteğe bağlı erişilebilirlik dizeleridir.
- EndTag, en son açılan yapı öğesini kapatır ve eşleşen EMC işlecini içerik akışına yazar.
- BeginArtifact(SubType), bir içerik bölgesini PDF artifact'i (pagination artefact, arka plan vb.) olarak işaretler ve bir BMC işleci yazar. SubType isteğe bağlıdır; sağlandığında /Artifact << /Subtype /SubType >> olarak yazılır.
- EndArtifact, artifact bölgesini bir EMC işleciyle kapatır.
- Kaydetme sırasında, herhangi bir tagged structure element kaydedilmişse, kütüphane tam StructTreeRoot'u otomatik olarak oluşturur, etkilenen sayfalara StructParents anahtarları atar ve ParentTree number tree'yi yazar; böylece tagged PDF için ISO 32000-1 §14.7 gereksinimlerini karşılar.
- Standart Type 1 fontlar (Helvetica, Times, Courier ailesi, Symbol) ve WinAnsi kodlamalı gömülü Type 1 fontlar artık bir ToUnicode CMap akışı alır; bu da bu font türleri için güvenilir Unicode metin çıkarma ve kopyala/yapıştır olanağı sağlar.
v3.21.0 2026-05-19
- SetPDFUAMode(Language), PDF/UA-1 (ISO 14289-1) conformance mode'u etkinleştirir: belgeyi otomatik olarak PDF 1.7'ye yükseltir, MarkInfo.Marked ve MarkInfo.Suspects yazar, ViewerPreferences içinde DisplayDocTitle'ı etkinleştirir, Language boş olmadığında Catalog.Lang ayarlar ve ISO 14289-1 Section 6.7.11 tarafından gereken pdfuaid:part = 1 XMP namespace girdisini yazar.
- SetDocumentLanguage(Language), Catalog /Lang girdisini doğrudan yazar ve belge dilinin PDF/UA modundan bağımsız olarak bildirilmesine olanak tanır.
- MarkInfo.Marked true olarak ayarlandığında MarkInfo.Suspects artık her zaman false olarak ayarlanır ve ISO 14289-1 tagged-PDF yapı gereksinimini (Section 7.18.6) karşılar.
- Encrypt, ISO 14289-1 Section 7.17 tarafından gerektiği gibi, belge PDF/UA modundayken CanCopyAccess (erişilebilirlik için içerik kopyalama) izin bayrağını artık zorunlu kılar.
- Choice (dropdown) form alanları artık anlamsız sabit kodlanmış bir tooltip değeri taşımaz; TU ayarlanmadan bırakılır, böylece çağıran taraf form field property API üzerinden anlamlı bir etiket atayabilir.
v3.20.3 2026-05-19
- Encrypt ve AddSWFAnnotationFromFile, kaydetme sürümü seçilen şifreleme gücü veya annotation türü için gereken minimumun altında kilitlendiğinde artık sessizce devam edip yalnızca kaydetme sırasında başarısız olmak yerine LastErrorCode 602 ile hemen 0 döndürür.
- GetInformation(311) ve GetInformation(312), kilitli bir sürüm AES-256 veya RichMedia annotation'ları gibi extension-level feature'ları engellediğinde yazma sırasında çakışan version requirement'ı artık yansıtır.
v3.20.2 2026-05-19
- AddU3DAnnotationFromFile, daha düşük sürümlü bir belgeye 3D annotation eklendiğinde belge sürümünü artık otomatik olarak PDF 1.6'ya yükseltir; bu, diğer tüm PDF 1.6+ API giriş noktalarının version auto-bump davranışıyla tutarlıdır.
v3.20.1 2026-05-17
- PDF 1.2 kaydetme hedefleri artık katı PDF 1.2 sözleşmeleri olarak uygulanır. PDF 1.2 hedefi altında sayfa TrimBox verileri gibi PDF 1.3+ nesnelerini kaydetmek, karışık sürümlü bir dosya yaymak yerine çıktı yazılmadan önce başarısız olur.
- PDF 1.7 Adobe extension-level uyumluluğu artık kaydetme ön denetiminin parçasıdır. AESV3, AES-256, RichMedia, Projection, geospatial dictionaries ve ETSI signature subfilters gerekli ExtensionLevel'a göre denetlenir.
- AES-256 şifreleme, RichMedia annotation'ları, geospatial dictionaries ve ETSI signature subfilters, PDFlib bir belgeyi PDF 1.7 extension content'e otomatik yükselttiğinde artık eşleşen Adobe Extensions girdisini bildirir.
- Append kayıtları artık tam kayıtlarla aynı version-compliance kapısını kullanır.
- Birlikte verilen isteğe bağlı PDFium runtime DLL'leri Win32 ve Win64 için yenilendi. GDI+ varsayılan renderer olarak kalır; PDFium, SetPDFiumFileName ve SelectRenderer(3) üzerinden isteğe bağlı kalır.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 207/207 geçti ve C++Builder Win64x GoogleTest, mevcut örneğe bağımlı 2 test atlanarak 61 testi geçti.
v3.20.0 2026-05-17
- Sekiz PDFlib writer giriş noktası daha artık Phase 3 EnsureMinVersion üzerinden yönlendirilir; böylece belge sürümü, yayımlanan feature için gereken minimuma otomatik olarak yükseltilir: SetDocumentMetadata (PDF 1.4 - /Metadata XMP stream) SetPDFAMode(1 or 2) (PDF 1.4 - /MarkInfo + /OutputIntents) PageJavaScriptAction (PDF 1.5 - Page /AA + JavaScript) DocJavaScriptAction (PDF 1.4 - Catalog /AA + JavaScript) SetTabOrderMode (PDF 1.5 - Page /Tabs) NewOptionalContentGroup (PDF 1.5 - /Type /OCG) SetNeedAppearances (PDF 1.5 - AcroForm /NeedAppearances) NewFormField(ftSignature) (PDF 1.5 - AcroForm /SigFlags AppendOnly)
- v3.15.0 kümesi (SetTransparency, SetPageUserUnit, Encrypt, SetPageLayout) ve v3.17.0 kümesi (sekiz JavaScript / embedded-file / XFA / SWF girdisi) ile birlikte PDFlib artık FVersion'ı yirmi bir writer giriş noktası genelinde otomatik yükseltir.
- NewOptionalContentGroup daha önce FVersion'ı doğrudan yükseltiyordu; LockSaveVersion'a uyulması ve yükseltmenin AutoBumpedFeatures içinde kaydedilmesi için artık EnsureMinVersion üzerinden geçer.
v3.19.0 2026-05-17
- Kaydetme zamanı ve yükleme zamanı PDF version compliance artık daha önce ertelenmiş dört feature'ı da tanır: Btn /Ff bit 15 NoToggleToOff (yalnızca radio button) -> PDF 1.4 DeviceN /Subtype /NChannel (color-space refinement) -> PDF 1.6 FontFile3 /Subtype /OpenType (font program type) -> PDF 1.6 Sig /SubFilter ETSI.CAdES.detached or ETSI.RFC3161 -> PDF 1.7
- NChannel kuralı, index 4'teki attributes sözlüğü /Subtype /NChannel taşıdığında DeviceN color-space array biçimi [/DeviceN names alternateSpace tintTransform attributes] ile eşleşir.
- FontFile3 OpenType kuralı yalnızca akış 'FontFile3' adlı bir parent key üzerinden ulaşıldığında tetiklenir; böylece tesadüfen /Subtype /OpenType taşıyan ilgisiz akışlar işaretlenmez.
- PDFFeatureRules tablosu artık 103 kural taşır (99 + 4 yeni).
v3.18.6 2026-05-17
- Kaydetme zamanı ve yükleme zamanı PDF version compliance artık container-type farkındalığıyla /AA (additional actions) değerini tanır: Catalog /AA (document-level triggers) -> PDF 1.4 Annot /AA (annotation triggers) -> PDF 1.4 Page /AA (page triggers) -> PDF 1.5
- Form alanı /AA (PDF 1.2), mevcut PDF 1.3 kaydetme sözleşmesi kapsamında kalır; kural gerekmez.
- PDFFeatureRules tablosu artık 99 kural içeriyor (96 + 3 yeni).
v3.18.5 2026-05-17
- Kaydetme zamanı ve yükleme zamanı PDF sürüm uyumluluğu artık Page /Tabs değerini doğru şekilde bir PDF 1.5 özelliği olarak sınıflandırıyor; daha önce yanlışlıkla PDF 1.4 olarak sınıflandırılmıştı. PDF 1.4 spec changes document (Adobe TN #5409) /Tabs değerini listelemez ve PDF 1.5 Table 8.10 "Tabs (Optional; PDF 1.5)" öğesini tanıtır.
- Yeni kural: AcroForm /NeedAppearances, PDF 1.5 Table 218 uyarınca bir PDF 1.5 özelliği olarak tanınır.
- PDFFeatureRules tablosu artık 96 kural içeriyor (95 + 1 yeni).
v3.18.4 2026-05-13
- PDFlibZLib artık normal kitaplık derlemelerinde her zaman paketlenmiş statik zlib-ng nesne arka ucunu kullanır ve kalan System.ZLib yedek yolunu kaldırır.
- zlib-ng regresyon kapsamı artık Delphi ve C++Builder test çalıştırıcılarında sınır boyutlu yükleri, PNG benzeri tarama satırı verilerini, saklanan çok bloklu akışları ve bilinen zlib akışlarını içerir.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 194/194 geçti ve C++Builder Win64x GoogleTest, mevcut örneğe bağımlı 2 test atlanarak 58 testi geçti.
v3.18.3 2026-05-12
- PDF veya metin çıktısı oluşturan Delphi ve C++Builder demoları artık başarılı bir kaydetmeden sonra oluşturulan belgeyi otomatik olarak açar.
- Yükleyici paketlemesi artık derleme yapıtlarını demo klasörlerinin dışında tutar ve C++Builder örneklerini, DLL ve ActiveX/OCX modüllerini isteğe bağlı bileşenler yapar; eşleşen dosyaları yalnızca bileşen seçildiğinde yüklenir.
v3.18.2 2026-05-12
- Delphi ve C++Builder EditFormField demoları artık alan değerlerini güncellemeden önce /NeedAppearances değerini temizler; böylece düzenlenen her metin alanı, kaydedilen PDF içinde yenilenmiş bir normal görünüm akışı alır.
- Bu, kaydedilen /AP akışını saklanan /V değeriyle eşitler ve alana odaklanıldığında statik alan görünümünde eksik olan metnin görünmesine neden olan görüntüleyiciye bağlı farklılıkları önler.
v3.18.1 2026-05-10
- Kaydetme zamanı ve yükleme zamanı PDF sürüm uyumluluğu artık bit düzeyindeki form alanı /Ff bayraklarını ve AcroForm /SigFlags AppendOnly bitini de tanır: /Ff bit 21 (FileSelect, mask 1048576) -> PDF 1.4 /Ff bit 22 (MultiSelect, mask 2097152) -> PDF 1.4 /Ff bit 23 (DoNotSpellCheck, mask 4194304) -> PDF 1.4 /Ff bit 24 (DoNotScroll, mask 8388608) -> PDF 1.4 /Ff bit 25 (Comb, mask 16777216) -> PDF 1.5 /Ff bit 26 (RichText / RadiosInUnison, 33554432) -> PDF 1.5 /Ff bit 27 (CommitOnSelChange, mask 67108864) -> PDF 1.5 /SigFlags bit 2 (AppendOnly, mask 2) -> PDF 1.5
- /Parent devralımı izlenmez: yalnızca açıkça /Ff veya /SigFlags taşıyan sözlükler kuralları tetikler.
- PDFFeatureRules tablosu artık 95 kural içeriyor (87 + 8 yeni bit düzeyi).
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 191/191 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.18.0 2026-05-10
- Kaydetme zamanı ve yükleme zamanı PDF sürüm uyumluluğu artık dokuz ek alt anahtar ve bit düzeyi özelliği de tanır: bit düzeyinde açıklama bayrakları (/F mask): Locked (128) -> PDF 1.4 ToggleNoView (256) -> PDF 1.5 LockedContents (512) -> PDF 1.7 ayırt edici katalog ve sayfa alt anahtarları: /BoxColorInfo (page) -> PDF 1.4 /Permissions, /Legal, /PresSteps -> PDF 1.5 /VP (page geospatial viewport) -> PDF 1.6 /Collection (catalog portable collection) -> PDF 1.7
- PDFFeatureRules tablosu artık 87 kural içeriyor (78 bölüm düzeyi + 9 alt anahtar / bit düzeyi).
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 189/189 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.17.0 2026-05-10
- Sekiz ek PDFlib yazıcı giriş noktası artık Phase 3 EnsureMinVersion üzerinden yönlendirilir; böylece belge sürümü, yayımlanan özelliğin gerektirdiği en düşük sürüme otomatik olarak yükseltilir: AddLinkToJavaScript, SetOpenActionJavaScript, AddGlobalJavaScript, FormFieldJavaScriptAction (PDF 1.3 - JavaScript eylemleri) AddEmbeddedFile, AddFileAttachment (PDF 1.3 - dosya ekleri) SetXFAFromString (PDF 1.5 - XFA formları) AddSWFAnnotationFromFile (PDF 1.7 - RichMedia açıklaması)
- v3.15.0 kümesiyle (SetTransparency, SetPageUserUnit, Encrypt, SetPageLayout) birlikte PDFlib artık on üç yüksek sürüm yazıcı giriş noktasını uçtan uca kapsar.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 187/187 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.16.3 2026-05-10
- Yeni PDFlib API: LockSaveVersion(Version) belgeyi Version değerine sabitler ve Phase 3 yazıcı tarafı EnsureMinVersion işlevinin bunun üzerine otomatik yükseltme yapmasını durdurur. UnlockSaveVersion kilidi temizler.
- Kaydetme zamanı geçidi değişmedi: kilitli sürümün üzerindeki yazıcı tarafından yayımlanan özellikler, başlığı sessizce yükseltmek yerine kaydetme zamanında yine LastErrorCode 602 üretir.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 184/184 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.16.2 2026-05-10
- Yüklenen PDF'ler artık GetInformation(103) ("ContributorFeatures") aracılığıyla yükleme zamanı özellik algılamasının yalnızca katkıda bulunan görünümünü sunar. Liste yalnızca gereken en düşük sürümü HeaderVersion (key 100) değerinden kesin olarak büyük olan özellikleri içerir; böylece doğrudan "etkin sürüm neden dosya başlığından yüksek?" sorusunu yanıtlar.
- GetInformation(101) ("DetectedFeatures") değişmedi ve katkıdan bağımsız olarak eşleşen her özelliği listelemeye devam eder.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 181/181 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.16.1 2026-05-10
- Yükleyici tarafı algılama test kapsamı altı ek sentetik fixture ile genişletildi: sayfa içi saydamlık ExtGState (sürüm yükseltmesi yok), Catalog /MarkInfo (PDF 1.3 -> PDF 1.4), /OCProperties + OCG içeriği (PDF 1.4 -> PDF 1.5), /Type /3DStream (PDF 1.5 -> PDF 1.6), çok özellikli birleşim fixture'ı ve anlık görüntü kararlılığı denetimi.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 179/179 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.16.0 2026-05-10
- Yüklenen PDF belgeleri artık içerik odaklı bir sürüm algılama geçişinden geçer: her dolaylı nesne, kaydetme zamanı geçidi tarafından kullanılan özellikten en düşük sürüme tablosu üzerinden gezilir ve içerik gerçekten daha yüksek bir sürüm gerektirdiğinde FVersion, gerçek %PDF-X.Y başlık değerinin üzerine yükseltilir. Örneğin bir /UserUnit sayfa girdisi, dosya başlığı PDF 1.4 dese bile etkin sürümü PDF 1.6 değerine yükseltir.
- Yeni GetInformation anahtarları: 100 HeaderVersion (gerçek %PDF-X.Y) döndürür, 101 DetectedFeatures (yüklemede eşleşen CRLF ile ayrılmış özellikler) döndürür, 102 AutoBumpedFeatures (yazıcı tarafı EnsureMinVersion tetikleyen CRLF ile ayrılmış özellikler) döndürür.
- Kaydetme zamanı geçidi etkilenmez: etkin sürümü yüklemede yükseltilen, sonra SetInformation(0, ...) ile açıkça düşürülen belgeler, kaydetme zamanında yine LastErrorCode 602 üretir.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 173/173 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.15.0 2026-05-10
- Belirli bir en düşük PDF sürümü gerektiren özellikler üreten yazıcı giriş noktaları artık belgenin's PDF sürümünü otomatik olarak yükseltir. PDF 1.3 olarak işaretlenmiş bir belgede SetTransparency çağrılması artık kaydetmeyi LastErrorCode 602 ile başarısız kılmak yerine başlığı PDF 1.4 değerine yükseltir.
- Aynı otomatik yükseltme SetPageUserUnit (>=1.6), Strength 1/2/3/4 ile Encrypt (sırasıyla >=1.4/1.6/1.7/1.7) ve SetPageLayout iki sayfalı varyantlarına (>=1.5) bağlandı.
- 3.14.x'e göre davranış değişikliği: daha önce v3.12.6 "kaydetme hedefi yazıcı tarafından yayımlanan özellikleri reddeder" geçidine güvenen uygulamalar artık yükseltilmiş sürümde başarılı olur. Zaten daha yüksek sürüm özellikleri içeren yüklenmiş PDF'ler mevcut kaydetme zamanı geçidinden geçmeye devam eder; bu nedenle etiketli bir PDF yükleyip PDF 1.3 seçmek yine LastErrorCode 602 ile başarısız olur.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 170/170 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.14.3 2026-05-10
- Kaydetme zamanı PDF sürüm uyumluluğu artık kalan PDF 1.6 3D sözlük türlerini (/Type /3DStream /3DRef /3DBackground /3DRenderMode /3DLightingScheme /3DCrossSection /3DNode) ve PDF 1.7 Redact, RichMedia ve Projection açıklama alt türlerini, ayrıca /Type /Requirement ve /ReqHandler eşlikçi sözlüklerini de tanır.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 168/168 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.14.2 2026-05-10
- Kaydetme zamanı PDF sürüm uyumluluğu artık PDF 1.5 özelliklerini de tanır: /XFA formları, /AlternatePresentations, /Renditions ad ağacı, /Type /Rendition /MediaCriteria /MediaPermissions /MediaPlayers multimedya sözlükleri ve Screen açıklama alt türü.
- PDF 1.4 olarak kaydetme artık bu özellikleri taşıyan belgeleri LastErrorCode 602 ile reddeder.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 166/166 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.14.1 2026-05-10
- Kaydetme zamanı PDF sürüm uyumluluğu artık PDF 1.4 özelliklerini de tanır: tagged-PDF /StructTreeRoot /MarkInfo ve StructElem sözlükleri, belge /Lang ve sayfa /Tabs girdileri, /OutputIntents ve /OutputIntent sözlükleri, /UR3 kullanım hakları imzası ve PDF 1.4 açıklama alt türleri Polygon, PolyLine, Caret, Ink, Popup ve Watermark.
- PDF 1.3 olarak kaydetme artık bu özellikleri taşıyan belgeleri LastErrorCode 602 ile reddeder.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 165/165 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.14.0 2026-05-10
- Kayıt sırasındaki PDF sürüm uyumluluğu artık smooth shading, function nesneleri, ICCBased ve DeviceN renk uzayları, /TrimBox /BleedBox /ArtBox sayfa girdileri, /ToUnicode CMaps, dosya eki ve /Sound ve /Movie açıklamaları, /Type /Filespec ve /Type /EmbeddedFile sözlükleri, /Group /EF /Alternates /Mask anahtarları ve JavaScript eylemleri gibi PDF 1.3 özelliklerini de tanıyor.
- PDF 1.2 çağırıcıları artık PDF 1.3 sözleşmesi altında kaydeder: gerçek %PDF-1.2 başlığı korunur, ancak geçit PDF 1.3 özelliklerini kabul eder. PDF 1.4 ve sonraki özellikler hâlâ LastErrorCode 602 ile reddedilir.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 162/162 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.13.0 2026-05-10
- Kayıt sırasında daha yeni sürüm özelliklerini reddeden PDF sürüm uyumluluğu geçidi, kural kümesinin belge çekirdeğini sürekli değiştirmeden büyüyebilmesi için özel bir modüle yeniden düzenlendi.
- v3.12.7 ile karşılaştırıldığında kullanıcı tarafından görülebilir davranış değişikliği yok: aynı sürüm dışı özellikler hâlâ LastErrorCode 602 ile reddedilir.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 155/155 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.12.7 2026-05-09
- Hem Delphi DUnitX hem de C++Builder GoogleTest paketlerinde PdfToImage doğrudan erişimli işleme iş akışı için otomatik test kapsamı genişletildi.
- Delphi VCL GUI test çalıştırıcısı artık konsol çalıştırıcısının kapsamıyla eşleşecek şekilde Syntax ve XRef fikstürlerini kaydediyor.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 147/147 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
v3.12.6 2026-05-09
- PDF 1.3, 1.4, 1.5, 1.6 veya 1.7 olarak kaydetme artık seçilen sürümü tam kayıt çıktısı sözleşmesi olarak zorunlu kılar.
- Tam kayıtlar catalog /Version geçersiz kılmalarını kaldırır, daha düşük hedefler için desteklenmeyen catalog extension ve metadata girdilerini kaldırır ve PDF 1.3 olarak kaydederken PDF 1.4 XMP metadata akışlarını bastırır.
- SaveToFile, SaveToString ve SaveToStream artık seçilen PDF hedef sürümü belgede hâlâ bulunan transparency, optional content, JPX, UserUnit, 3D veya AES crypt-filter özellikleri gibi özelliklerden daha düşük olduğunda LastErrorCode 602 ile başarısız olur.
v3.12.5 2026-05-09
- Bilinmeyen kaçış dizilerinin standardın gerektirdiği gibi ters eğik çizgiyi yok sayması için PDF 1.7 literal string ayrıştırması iyileştirildi.
- Literal string sekizlik kaçışları artık yalnızca sekizlik rakamları tüketir ve ardından gelen sekizlik olmayan bir rakamı normal string verisi olarak korur.
- Bilinmeyen literal-string kaçışları ve karışık sekizlik/sekizlik olmayan kaçış dizileri için regresyon kapsamı eklendi.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 141/141 geçti.
v3.12.4 2026-05-09
- PDF 1.7 sözcüksel ayrıştırması iyileştirildi; name nesneleri artık sağ küme ayracında doğru şekilde duruyor.
- Nesne akışı numarası PDF bayt uzunluğundan daha büyük olan xref stream sıkıştırılmış nesne girdilerinin SmartAccess ile yüklenmesi düzeltildi.
- Sağ küme ayracı name ayırıcıları ve seyrek sıkıştırılmış nesne xref stream girdileri için regresyon kapsamı eklendi.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 139/139 geçti.
v3.12.3 2026-05-08
- StrF, StmF, EFF, Identity, None veya adlandırılmış StdCF tarzı crypt filter kullanan standard security handler dosyaları için PDF 1.7 şifreli belge uyumluluğu iyileştirildi.
- Metadata akışları artık decrypt, encrypt ve copy/save iş akışlarında sıradan akışlar gibi işlenmek yerine EncryptMetadata=false ayarına uyar.
- Embedded file akışları artık /Type /EmbeddedFile taşır ve şifreli belgeler yüklendiğinde veya kaydedildiğinde embedded-file crypt-filter karar yolunu kullanır.
- Harici embedded file akışları artık FFilter, Filter olarak yükseltildiğinde FDecodeParms değerini DecodeParms olarak yükselterek akış kod çözme parametrelerini korur.
- Yeni AES şifreli PDF'ler artık crypt-filter Length değerlerini bit uzunlukları olarak yazar ve PDF 1.7 crypt filter dictionary sözleşmesiyle eşleşir.
- XRef stream Prev/XRefStm değerleri ve büyük sayısal ofsetler artık parser ve SmartAccess yolları boyunca 64 bit hassasiyetini korur.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 137/137 geçti.
v3.12.2 2026-05-08
- PDF 1.7 stream kod çözme uyumluluğu iyileştirildi. Genel stream kod çözme artık /DP değerini DecodeParms takma adı olarak kabul eder, dolaylı decode-parameter dizi girdilerini çözer ve /AHx ile /LZW standart filter kısaltmalarını kabul eder.
- Büyük dosyalı PDF çıktısı artık xref, startxref, linearization ve digital signature ByteRange ofsetlerini, bu değerleri 32 bit integer yardımcıları üzerinden daraltmak yerine 64 bit biçimlendirme yollarıyla yazar.
- Yüklenen belgeler artık catalog /Version girdisini dosya başlığı sürümünden daha yeni olduğunda etkin PDF sürümü olarak ele alır.
- Yeniden yazılan xref-stream trailer'ları, PDFlibPas bunları klasik trailer dictionary olarak kaydettiğinde artık yalnızca stream'e özgü DecodeParms anahtarlarını tutmaz.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 134/134 geçti.
v3.12.1 2026-05-06
- Oluşturulan PDF'ler artık ilk sayfa görüntüleyici penceresinin kullanılabilir yüksekliğine' göre boyutlandırılmış şekilde açılır; böylece tüm ilk sayfa, pencereye sığan en büyük yakınlaştırmada üstten alta görünür. Bu varsayılanı geçersiz kılmak için belge üzerinde özel bir OpenAction (SetOpenActionDestination, SetOpenActionMenu, SetOpenActionJavaScript) yapılandırın.
v3.12.0 2026-05-06
- Windows statik backend'leri artık Win32 ve Win64 için libjpeg-turbo NASM SIMD nesnelerini ve Win64x zlib-ng kümesi için zlib-ng x86 SIMD dispatch nesnelerini içeriyor.
- zlib-ng yeniden derleme betikleri yeniden çalışıldı; böylece Win64x bcc64x ve tanılama MSVC derlemeleri generic, SSE2, SSSE3, SSE4.1/SSE4.2, PCLMULQDQ ve AVX2 kaynak dosyalarını tek bir global compiler switch'e dayanmak yerine dosya başına feature flag'leriyle derler.
- Statik C kütüphaneleri için 32 bayt hizalı malloc/calloc/realloc/free CRT stub'ları eklendi ve TPDFJPEGImage.Compress, jpeg_mem_dest arabelleklerini onları ayıran aynı C free yolu üzerinden serbest bırakacak şekilde düzeltildi.
- Bu sürümün arkasındaki sıkı otomatik kapsamı belirtmek için herkese açık doğrulama notları genişletildi: kütüphane derlemeleri, sıkıştırma round trip'leri, HelloWorld /FlateDecode çıktısı, JPEG işleme, görüntü iş akışları, fontlar, formlar, güvenlik, imzalama, yazdırma ve C++Builder demo türevi iş akışları.
v3.11.0 2026-05-05
- Windows Flate sıkıştırma ve açma işlemleri zlib uyumlu modda zlib-ng'ye geçirildi. Win32, Delphi Win64 ve C++Builder Win64x artık Lib\thirdparty\Win32, Lib\thirdparty\Win64 ve Lib\thirdparty\Win64x içinden ABI uyumlu zlib-ng statik nesne kümelerine bağlanır.
- Win64 yolu artık Delphi's System.ZLib birimi üzerinden yönlendirilmiyor; bu nedenle PDF stream sıkıştırma/açma, 32 bit derlemede olduğu gibi zlib-ng backend'inden yararlanabilir.
- Win64 derlemeleri için küçük bir zlib-ng bridge nesnesi eklendi; böylece Pascal kodu kararlı zlib uyumlu giriş noktalarını korurken Delphi ve C++Builder kendi linker uyumlu nesne kümelerini kullanır.
- Tüm C++Builder demo projeleri, GoogleTest çalıştırıcısıyla eşleşecek ve Win64x demolarının Delphi Win64 zlib-ng nesnelerine bağlanmasını önleyecek şekilde PDFLIB_CPPBUILDER tanımlayacak biçimde güncellendi.
v3.10.3 2026-05-01
- C++Builder GoogleTest paketi, Demo\C++Builder altındaki her demoyu kapsayacak şekilde genişletildi. 7 fikstürlü phase-1 düzeni 15 fikstüre / 52 GoogleTest testine büyüdü ve tümü Win64x üzerinde geçti. Yeni kapsanan demolar: AddFormattedTitle, AddTextImage, AddTrueTypeSubsettedFont, AddWebLink, CanvasText, CaptureToNewSize, CopyPageRanges, CreateWithImage, CreateWithImageToStream, DoInTheStream, DrawWrappedText, EditFormField, EmbeddedFonts, ExtractAnnotAttach, ExtractEmbeddedFonts, ExtractImage, ImageToPdf, ImportEMF, MultiFunction (renderer switch), PageOperations, PdfDecrypt, PdfPermission, PrintPDF, TextMeasure, TextPaging.
v3.10.2 2026-05-01
- Tests\C++Builder altında, C++Builder demolarının kullandığı aynı {$JPHNE}-emitted HPP header'ları üzerinden Lib\PDFlibrary.pas öğesini çalıştıran bir C++Builder GoogleTest çalıştırıcısı eklendi. İlk phase, yedi temel Delphi senaryosunu (HelloWorld, DrawShapes, CreateTable, PdfEncrypt, ExtractText, PdfSigning, PdfToImage rendering) 17 GoogleTest testi olarak yansıtır ve tümü Win64x üzerinde geçer.
- Delphi DUnitX paketi, PrintPDF ve ShowPrinterBins demolarını kapsayan Tests.Print ile genişletildi (varsayılan yazıcı numaralandırması, özel yazıcı kurulumu, yazdırma seçenekleri, dosyaya yönlendirilen yazdırma işi) ve Tests.Render içinde aynı kaynak PDF üzerinde MultiFunction demo's GDI+ / PDFium / Cairo engine seçimini sınayan bir renderer-switch testi eklendi.
v3.10.1 2026-05-01
- SetPageSize içine 57 adlandırılmış sayfa boyutu eklendi; böylece aynı kanonik sayfa boyutu adları burada da çalışır: SIZE8X11, QUADA0, DOUBA0, B0PLUS, ENVB4/B5/C6/DL/MONARCH, ENV9/10/11, ANSIA/B/C/D/E, ARCHA/B/C/D/E1/E, SHIROKU, G1K, USBC/EUBC/ASBC, ID1/ID2/ID3, ONEINCH/TWOINCH/L2INCH/USVISA, P2R..P24R / S8R / P4D photo prints, plus the Chinese / Taiwanese octavo and sextodecimo sheet formats LARGE/STANDARD/CROWN/ROC 8K and the matching 16K halves.
v3.10.0 2026-04-30
- Demo altındaki her Delphi örneği için yerel C++Builder sürümleri eklendi. PDF oluşturma, sayfa işleme, yazı tipi, görüntü, güvenlik, imzalama, render etme ve yazdırma demoları artık herhangi bir Delphi tarafı sarmalayıcı olmadan C++Builder içinden derlenip çalıştırılabilir.
- Her yeni demo, Lib\PDFlibrary.pas dosyasını doğrudan kullanan ve çalıştırmak için gereken giriş dosyalarıyla birlikte gelen bir konsol projesi olarak Demo\C++Builder\<Name>\ içinde yer alır.
- Her Delphi demo klasörüne, demonun ne gösterdiğini, odaklandığı API'yi ve nasıl çalıştırılacağını açıklayan kısa bir İngilizce Readme.txt eklendi; Demo\Delphi\index.html konumundaki bir HTML genel bakışı, konuya göre gruplanmış olarak bunların tümüne bağlantı verir.
- Her C++Builder demosu için aynı Readme.txt yansıtıldı ve Run bölümü konsol iş akışı için yeniden yazıldı (Open/SaveDialogs yerine argv argümanları); eşleşen Demo\C++Builder\index.html, her C++Builder demosunu aynı konu gruplarıyla listeler.
- ImportEMF demosundaki bellek sızıntısı düzeltildi (TPDFlib örneği oluşturuluyor ancak hiç serbest bırakılmıyordu).
v3.9.14 2026-04-30
- Sayfa aralığı kopyalama demosu, her zaman hata bildirmek yerine gerçekten sayfaları kopyalayacak şekilde düzeltildi.
- Sarılmış metin ve HTML sayfalama demoları, her biri kendi API'sine odaklanacak ve tek bir düğmeden çalışacak şekilde düzenlendi.
- Derlenen yürütülebilir dosyaların eski prototip adları yerine klasör adlarıyla eşleşmesi için iki demo projesi (EmbeddedFonts ve PdfPermission) yeniden adlandırıldı.
v3.9.13 2026-04-30
- Dahili tampon okuyucudaki akış konumu hatası düzeltildi: iki baytlık sözcük okumaları, okuma imlecini iki bayt yerine dört bayt ilerletiyordu. İki bayttan uzun tamponlarda sonraki okumalar yanlış ofsete iniyor ve sessizce yanlış veri döndürüyordu. Etki en çok bayt ve sözcük okumalarını iç içe geçiren ikili veri yapılarını ayrıştırırken görülüyordu.
- Yardımcı birimleri — buffer, AES, ZLib, Unicode ve digest hashing — ve belge oluşturma, dosyaya kaydetme ve akışa kaydetme, yükleme gidiş dönüşleri ve AES-128/AES-256 şifreleme dahil kitaplık düzeyi iş akışlarını kapsayan otomatik bir DUnitX test paketi (konsol ve VCL GUI çalıştırıcıları) eklendi.
v3.9.12 2026-04-30
- GDI+ görüntü render etme artık raster görüntüleri ekrana veya dışa aktarma çözünürlüğüne ölçeklerken varsayılan olarak pürüzsüz, yüksek kaliteli bicubic enterpolasyon kullanır. Önceden varsayılan nearest-neighbour idi; bu da ekran önizlemesi veya yüksek DPI dışa aktarımı için büyütülen küçük görüntülerde (logolar, küçük resimler) görünür basamak artefaktları üretiyordu. Daha keskin nearest-neighbour modunu tercih eden çağırıcılar eski davranışı SetGDIPlusOptions aracılığıyla geri yükleyebilir.
v3.9.11 2026-04-30
- Renk anahtarı saydamlığı kullanan PDF görüntülerinin Cairo ile render edilmesi düzeltildi (görüntü sözlüğünde bir /Mask renk aralığı dizisi). Önceden, bir sayfa bu saydamlık biçimine sahip bir görüntü içerdiğinde Cairo renderer, görüntüyü sayfa arka planıyla bileşik hale getirmek yerine tamamen atlıyordu. Düzeltme, bildirilen renk anahtarı aralıklarından piksel başına bir alfa kanalı türetir ve sonucu saydam bir görüntü olarak render ederek GDI+ renderer ile görsel olarak tutarlı çıktı üretir.
v3.9.10 2026-04-30
- Kırpılmış görüntü dizisini izleyen tüm sayfa içeriğinin hatalı şekilde görüntünün's kırpma dikdörtgeniyle sınırlandığı bir Cairo render regresyonu düzeltildi. Grafik durumunu kaydeden, bir kırpma yolu uygulayan, bir görüntü boyayan ve sonra durumu geri yükleyen PDF sayfaları — çerçeveli veya kenarlıklı görüntüler için yaygın bir yerleşim tekniği — sonraki tüm metin, şekil ve grafikleri yalnızca kırpılmış bölgenin içinde render ediyordu. Cairo durum kaydetme ve geri yükleme artık PDF q/Q operatörlerine doğru şekilde eşlenir, böylece görüntü çizildikten sonra kırpma bölgesi atılır.
v3.9.9 2026-04-29
- GDI+ ve PDFium ile birlikte üçüncü bir render seçeneği olarak Cairo tabanlı bir PDF render motoru eklendi. Etkinleştirmek için render etmeden önce SelectRenderer(2) çağırın; motor, paketle birlikte gelen DLL\Cairo klasöründeki cairo.dll dosyasını gerektirir. Cairo render etme, GDI+ ile aynı çıktı modlarını destekler: bitmap dosyası ve akış dışa aktarımı (BMP, JPEG, PNG, GIF, TIFF, G4 TIFF), device-context render etme ve doğrudan yazıcı çıktısı.
- MultiFunction View/Print demosu artık üç yönlü renderer seçicisi sunar; böylece kullanıcılar herhangi bir kod değişikliği olmadan aynı belgede GDI+, PDFium ve Cairo çıktısını yan yana karşılaştırabilir.
v3.9.8 2026-04-29
- RAD Studio 13.1 ve sonrasında görünen Win32 C-runtime shim içindeki iki gereksiz derleyici tanısı bastırıldı. Bir derleyici sürümü yetenek koruması Delphi 2009'dan daha yeni derleyicilere aktarılmadığı için kullanımdan kaldırma uyarısı (W1000) oluşturuluyor, bu da onların kullanımdan kaldırılmış bir memory-manager API'ye karşı derleme yapmasına neden oluyordu. Kullanılmayan değişken ipucu (H2164), yalnızca Delphi 7 derlemeleri için gereken dahili bir uyumluluk değişkeni için oluşturuluyordu; artık bu sürümün's koşullu bloğuna kapsamlandırıldı. Her iki sorun da yalnızca tanısaldı ve çalışma zamanı etkisi yoktu.
v3.9.7 2026-04-29
- Windows üzerinde BMP akış render etme, device-context render etme, bellek render etme ve yazıcı çıktısı dahil isteğe bağlı PDFium tabanlı sayfa render etme eklendi.
- Delphi MultiFunction View/Print demosu, kullanıcıların mevcut GDI+ renderer ile PDFium arasında geçiş yapabilmesi için bir renderer seçicisiyle güncellendi.
v3.9.6 2026-04-29
- Tam PDFlibPas paketi ve deneme paketi için ayrı Inno Setup betikleri eklendi; kaynak denetimi meta verileri, derleme çıktıları, IDE önbellekleri, yerel agent dosyaları ve gönderilen paketin parçası olmayan paketlenmiş üçüncü taraf kaynak ağaçları için yayın odaklı dışlamalar içerir.
- Deneme yükleyicisi artık kurulum yürütülebilir dosyası oluşturulmadan önce RAD Studio 11.3, 12.3 ve 13.1 için deneme ikili kitaplıklarını ve deneme Delphi demolarını derleyip paketler.
v3.9.5 2026-04-29
- RAD Studio 9.0 / Delphi XE2 altında Win32 kitaplık derlemeleri düzeltildi. Derleme betiği, yalnızca Delphi 2010 ve sonrasında var olan bir DCU çıktı dizini bayrağı geçiriyordu; XE2's derleyicisi bayrağı farklı yorumlayarak bozuk bir çıktı yolu ve herhangi bir kaynak dosya işlenmeden önce ölümcül hata üretiyordu. Betik artık hedef derleyici sürümüne göre uygun bayrağı otomatik olarak seçer.
- Kitaplık kaynağında, XE4'te tanıtılan ad nitelikli bir çalışma zamanı işlevini XE2+ koşulu altında çağıran ilgili bir derleyici sürümü koruması düzeltildi. XE2 ve XE3 hedefli derlemeler artık bunun yerine doğru uyumluluk import'unu çözümler.
v3.9.4 2026-04-29
- Ağ ve sunucu paylaşımlı yazıcılar için yazıcı kurulumu, kağıt tepsisi, ortam, duplex, kalite ve diğer yazdırma ayarlarını yazıcı device context handle'ı yerine yazıcı DEVMODE handle'ı üzerinden uygulayacak şekilde düzeltildi.
v3.9.3 2026-04-29
- Paketlenmiş AES backend'i, hem Win32 hem de Win64 üzerinde Brian Gladman's 2018 AES kaynaklarına yenilendi. Tekrarlanabilir derleme betikleri artık statik AES nesnelerinin herhangi bir zamanda kaynaktan yeniden derlenmesine izin verir. Süreçte Pascal bağlamalarında bir ABI kusuru keşfedildi ve düzeltildi: AES-CBC encrypt ve decrypt işlevlerinde C calling-convention bildirimi eksikti, bu nedenle Win32 derlemeleri argümanları sessizce yanlış register sırasıyla geçiriyor ve potansiyel olarak yanlış şifrelenmiş çıktı üretiyordu. Win64 derlemeleri, platform tek tip çağrı kuralı uyguladığı için etkilenmedi.
- Üçüncü taraf yeniden derleme betikleri sağlamlaştırıldı; böylece MSVC tabanlı zlib, JPEG ve CRT-stub betikleri daha önce gerekli olduğu gibi çalışma dizininin thirdparty klasörüne ayarlanmasını gerektirmeden repository kökünden ve thirdparty dizininden başlatılabilir.
v3.9.2 2026-04-29
- JPEG 2000 backend'i, eski OpenJPEG 1.5'ten OpenJPEG 2.5.4'e hem Win32 hem de Win64 üzerinde yükseltildi. Her iki platform artık statik nesne bağlama kullanır, böylece JPEG 2000 kodlama ve kod çözme ek bir çalışma zamanı DLL'i olmadan çalışır. Modern codec, güncel JP2/J2K header işleme, callback odaklı bir akış API'si ve upstream projeden birikmiş hata ve güvenlik düzeltmeleri getirir. Genel TJpeg2000Bitmap API değişmedi.
v3.9.1 2026-04-29
- libjpeg-turbo yükseltmesinden sonra JPEG sayfa render etme ve görüntü dışa aktarımı düzeltildi; Win32 ve Win64 üzerinde PdfToImage JPG dönüştürmesi ve TPDFJPEGImage.SaveToStream çıktısı geri yüklendi.
- Callback'ler, yapı hizalaması, boolean alanlar ve bellek destekli JPEG hedefleri libjpeg-turbo 3.1.90 ile eşleşecek şekilde Win32 libjpeg-turbo ABI bağlamaları düzeltildi.
- Paketlenmiş zlib 1.3.2 backend'iyle Win32 FlateDecode akış sıkıştırma açma düzeltildi; PdfToImage örnek belgesi gibi dosyalar için PDF xref akışı yükleme geri yüklendi.
v3.9.0 2026-04-29
- Paketlenmiş JPEG 2000 backend'i eski OpenJPEG 1.5'ten OpenJPEG 2.5.4'e yükseltildi. JPEG 2000 yükleme ve kaydetme artık genel TJpeg2000Bitmap API'sini korurken modern codec'i, callback odaklı akış API'sini ve güncel JP2/J2K header işlemeyi kullanır.
- JPEG 2000 çıktısı artık küçük görüntüler için geçerli bir OpenJPEG çözünürlük sayısını otomatik olarak seçer ve Win32 statik backend'i artık eksik MSVCRT yardımcı dışa aktarımlarına bağlı değildir.
v3.8.1 2026-04-29
- Win32 ve Win64 üzerindeki 16 kozmetik linker W1028 "Bad global symbol definition" uyarısının tümü ortadan kaldırıldı. Kaynak düzeyindeki yeniden adlandırmalar gereksiz Pascal tarafı kopyaları kaldırır (jpeg_std_error ve jmemnobs ayırıcı stub'ları artık yalnızca obj katmanından çözümlenir); Pascal tarafı verilere karşı link çözümlü kalması gereken kalan üç bcc32 / vc64 obj sembolünün (jpeg_natural_order, jpeg_aritab, jpeg_nbits_table) COFF sembol adları artık thirdparty\build-jpeg-vc64.bat sırasında bir ObjConv son işleme geçişiyle çıkarılır. Genel API değişikliği yok; hem Delphi Win32 hem de Win64 derlemeleri için temiz linker çıktısı.
v3.8.0 2026-04-29
- Win64 JPEG codec'i IJG tarzı libjpeg'den libjpeg-turbo 3.1.90'a yükseltildi ve v3.7.0'da (Win32) başlayan JPEG geçişi tamamlandı. Hem Win32 hem de Win64 yolları artık aynı modern JPEG codec'ini, aynı SIMD ile optimize edilmiş iç döngüler ve upstream'den birikmiş 30+ CVE / fuzz düzeltmesiyle paylaşır. Genel PDFlibPas API değişmedi.
v3.7.0 2026-04-28
- Win32 JPEG codec'i IJG libjpeg-6b'den libjpeg-turbo 3.1.90'a yükseltildi. SIMD ile optimize edilmiş iç döngüler aracılığıyla önemli ölçüde daha hızlı JPEG encode/decode ve libjpeg-turbo upstream'de birikmiş 30+ CVE / fuzz düzeltmesi içerir. Genel PDFlibPas API'si (TPDFJPEGImage sınıfı, DumpJPEG işlevleri) değişmedi; mevcut PDF/JPEG kod yolları kaynak değişikliği gerektirmeden daha hızlı çalışır.
v3.6.0 2026-04-28
- Win32 zlib 1.2.x'ten 1.3.2'ye yükseltildi. 1.2.8'den bu yana upstream'de birikmiş standart 25+ CVE / fuzz düzeltmelerini ve 64 bit pencereli akışlar tarafından kullanılan yeni inflateBack9 / inflateTree9 giriş noktalarını içerir. Genel PDFlibPas API'si (DeflateStr / InflateStr / InflateStrParms) değişmedi.
- Win64 zlib yolu bu sürümde değişmedi - Delphi ile paketlenmiş System.ZLib birimini kullanmaya devam eder.
- v3.5.0'da tanıtılan Win64 link-time CRT shim PDFlibCLibs.pas, yeni zlib 1.3.2 obj dosyalarının başvurduğu memcpy / memset / malloc / free sembollerini sağlayarak Win32 zlib yolu için etkinleştirildi.
v3.5.0 2026-04-28
- Paketlenmiş C görüntü / sıkıştırma kitaplıkları için yeni derleme altyapısı vendored edildi: zlib 1.3.2, libjpeg-turbo 3.1.90, libtiff 4.7.1. Hem Embarcadero bcc32 (Win32) hem de MSVC cl.exe (Win64) için derleme betikleri kaynak ağaçlarının yanında Lib/thirdparty/ içinde bulunur; böylece RAD Studio + VS2022 sahibi olan herkes statik obj dosyalarını temiz kaynaktan yeniden derleyebilir.
- OpenJPEG 2.5.4 için derleme altyapısı eklendi. OpenJPEG kaynak ağacı, PDFlibPas's derleme yapılandırmasına dokunmadan yükseltilebilmesi için kullanıcı tarafından bağımsız olarak alınır (Lib/thirdparty/OpenJPEG/ içine git clone uclouvain/openjpeg).
- Win64 arka ucu tarafından kullanılan Win64 bağlantı zamanı CRT shim'i Lib/PDFlibCLibs.pas eklendi. Bu, MSVC ile derlenen C obj dosyaları ile msvcrt.dll dosyasını otomatik olarak içeri almayan Delphi Win64 bağlayıcıları (dcc64 / Win64x ld.lld / BCB ilink64) arasındaki boşluğu kapatır.
v3.4.0 2026-04-28
- Şifreleme anahtarı, AES initialization vector ve Perms izin bloğu üretimi, tahmin edilebilir rastgele sayı kaynaklarına karşı sağlamlaştırıldı. Aynı duvar saati zamanına yakın başlatılan sistemlerde üretilen şifreli PDF'ler artık kolayca ilişkilendirilemez; AES-256 belgeleri artık tam anahtar gücünü korur.
- Görüntü sözlüğü ayrıştırma, makul olmayan Width, Height, BitsPerComponent veya DeviceN bileşen sayıları bildiren bozuk ya da saldırgan PDF'lere karşı sağlamlaştırıldı. Aralık dışı değerler herhangi bir piksel tampon aritmetiğinden önce sınırlandırılır ve bu tür dosyalar açılırken çökmeler önlenir.
- Çapraz başvuru ve sayfa ağacı dolaşımı, /Prev xref zincirleri veya /Parent sayfa bağlantıları döngü oluşturan ya da aşırı derin olan belgelere karşı sağlamlaştırıldı. Okuyucu artık hatalı yapıları yığın tükenene kadar özyineleme yapmak yerine temiz şekilde reddeder.
v3.3.1 2026-04-27
- Bileşen başına Windows derleme betikleri sadeleştirildi. DLL/, OCX/ ve Dylib/ klasörleri artık ayrı build12-* / build13-* varyantları taşımaz: her platform artık en son RAD Studio'ya sabitlenen ve isteğe bağlı "debug" argümanını kabul eden tek bir build-Win32 / build-Win64 betiğine sahiptir.
- İlk Git temelinde zaten mevcut olan PDFlibRenderer.pas işleme düzeltmelerinin etrafına satır içi gerekçe yorumları eklendi. Yorumlar, SetPen'in kontur genişliklerini etkin canvas dönüşümüne göre neden ölçeklediğini ve Type 3 font CharProc d0/d1 operatörlerinin işlenenlerini neden tüketmesi gerektiğini belgelendirir. Çalışma zamanı davranışı değişmedi.
v3.3.0 2026-04-26
- PDFlibRenderer.pas içinde dönüştürülmüş kontur işleme düzeltildi. SetPen artık Picasso'yu çağırmadan önce PDF çizgi genişliklerine geçerli canvas-transform ölçeğini uygular; bu, koordinatları zaten dönüştürülmüş yollarda fazla büyük veya fazla küçük konturları önler. Bu, kalın, düzensiz bloklar olarak işlenebilen Type 3 glif ana hatlarını düzeltir.
- İçerik akışı ayrıştırıcısında Type 3 font CharProc d0/d1 işleme düzeltildi. d0 artık iki genişlik işlenenini, d1 ise sonraki çizim komutları çalışmadan önce altı genişlik/sınırlayıcı kutu işlenenini tüketir; bu, eski işlenenlerin glif veya yol geometrisini bozmasını önler.