Sürüm notları
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.
Son sürüm
- En yeni sürüm: v3.75.6; Yayın tarihi: 2026-06-23
Version 3.333.0
Added
- Artımlı revizyon denetimi. Bir imza, içine yazıldığı revizyonun baytlarını kapsar ve sonradan eklenen her şey, içeriği imzanın belge için hâlâ geçerli olup olmadığını belirleyen ayrı bir güncellemedir.
GetDocumentRevisionCount,GetDocumentRevisionStartveGetDocumentRevisionEndbu revizyonları düzenler veGetSignatureRevisionIndexbir imzanın hangisinde bittiğini söyler GetDocumentRevisionKind, bir güncellemenin ne yaptığını, dokunduğu nesneler arasında en kapsamlı olanı olarak bildirir: defter tutma, doğrulama malzemesi, bir belge zaman damgası, bir imza, bir form alanı, bir ek açıklama veya belge içeriği. Bu nedenle uzun vadeli doğrulama için doğrulama malzemesi eklemek artık belgeyi düzenliyormuş gibi görünmezGetDocumentRevisionChanges, bir güncellemenin eklediği, değiştirdiği veya sildiği her nesneyi, her birinin ne olduğu ve değiştirilen bir sözlük için hangi anahtarların gerçekten farklı olduğuyla birlikte listelerGetDocumentRevisionsComplete, tüm geçmişin kurtarılabilir olup olmadığını bildirir. Kırık, döngüsel veya okuyucunun izleyeceğinden daha uzun olan bir zincir en eski güncellemeleri görülmemiş bırakır ve bu durumda sayımlar bir yanıt değil bir alt sınır olur- Önceki sürümü okunamayan veya akım gövdesi hiç karşılaştırılmamış olan bir nesne zararsız olarak değil belirsiz olarak bildirilir: sözlüğüne dokunmadan bir sayfayı yeniden yazan bir güncelleme yeniden paketleme sanılmaz
Version 3.332.0
Added
ApplyPAdESLongTermValidation, önceden imzalanmış bir PDF'yi tek bir çağrıda PAdES-B-LT'ye yükseltir. İmzacı sertifika yolunu imzanın kendisinden kurar, sertifikaların adlandırdığı adresler aracılığıyla her bağlantı için OCSP ve CRL malzemesini toplar ve sertifikalarla yürürlükten kaldırma verilerini imza için bir VRI girdisiyle birlikte belge güvenlik deposuna tek bir artımlı güncellemede yazar.ApplyPAdESLongTermValidationToStreamsonucu bir dosya yerine bir akışa yazar- Bu davranış bir
PADES_LTV_*seçenek maskesiyle yapılandırılabilir: VRI girdisinin yazılıp yazılmayacağı, OCSP yanıtlayıcılarına sorulup sorulmayacağı, CRL'lere geri düşülüp düşülmeyeceği, yolu tamamlamak için veren adreslerinin izlenip izlenmeyeceği ve kendi kendine yayımlanan bir kök için yürürlükten kaldırmanın atlanıp atlanmayacağı - Boş bir alan adı her imzayı tek bir revizyon olarak işler; adlandırılmış bir alan yalnızca o imzayı işler
GetPAdESLTVCertificateCount,GetPAdESLTVCRLCount,GetPAdESLTVOCSPCountveGetPAdESLTVErrorson çağrının ne topladığını ve neden erken durduğunu bildirir, böylece ulaşılamayan bir yanıtlayıcı üzerinden gelen kısmi bir sonuç sessizce yok sayılmak yerine görünür olur- Çoktan hazırlanmış bir şeyle özdeş olan malzeme bir kez yazılır ve ona ihtiyaç duyan her imza tarafından başvurulur ve okunabilir bir sertifika taşımayan bir imza, başarılı bir yükseltme gibi gösterilmek yerine bildirilir
Version 3.331.0
Added
- Bir imza kendi sertifikasyon yolunu taşır, bu nedenle uzun vadeli doğrulama profilinin ihtiyaç duyduğu malzeme yalnızca imzalı dosyadan okunabilir.
GetSignatureSignerCertificateDER,GetSignatureEmbeddedCertificateCountveGetSignatureEmbeddedCertificateDERbir imzanın gömmüş olduğu sertifikaları döndürür veGetSignatureCertificateChainLengthileGetSignatureCertificateChainDERbunları imzacıdan dışarıya giden bir yol olarak sıralar GetSignatureContentsHashHex, birAddPAdESDSSVRIgirdisinin adreslendiği anahtarı imzadan kendisinden hesaplayarak döndürür- İmza, imzacı sertifikasını veren ve seri numarasıyla mı yoksa konu anahtarı tanımlayıcısıyla mı tanımladığına bakılmaksızın imzacı sertifikası eşleştirilir ve yol, imzanın gerçekten taşıdığı son verenerde durar, tamammış gibi davranmaz
Fixed
- DER okuyucusu, azamiye yakın bir değerin sınır denetimini dolandırmasına izin vermek yerine, veriden daha büyük olan bildirilmiş bir öğe uzunluğunu reddeder ve sertifika uzantısı gezintisi artık kırpılmış veya fazla uzun bir sertifikanın sonunun ötesine okumaz. İkisi de hazırlanmış bir belgeden ulaşılabilirdir, dolayısıyla yukarıdaki erişimciler güvenilmeyen girdide güvenli kalır
- İmza erişimcileri belgeyi paylaşımlı bir tanıtıcıyla okur, böylece bir doğrulayıcı veya görüntüleyici dosyayı çoktan açmışken yanıt verirler ve imza yokmuş gibi başarısız olmazlar
Version 3.330.0
Added
- OCSP status requests.
BuildOCSPRequestencodes an RFC 6960 request for a certificate and its issuer,FetchOCSPResponseposts it to the responder and returns the reply, andAddPAdESDSSOCSPFromCertificatesdoes both and files the result in the document security store - The responder address is optional: when it is omitted, the one the certificate itself names is used, so a caller that has the certificate chain needs no further configuration
- A certificate pair that does not actually belong together is refused before anything is sent, instead of producing the "unknown" answer such a request earns from the responder and which reads like a revocation problem
- Only a successful response is stored; a responder that answered
tryLaterorunauthorizedis reported throughGetTimeStampErrorrather than filed as if it were a status answer
Version 3.329.0
Fixed
- Reusing one result array across successive enumeration calls no longer leaks the strings held in the array slots that a later call does not fill. This affected the documented "call once for the count, resize, call again" pattern whenever a later call returned fewer items than the array could hold, and the stranded text accumulated for the lifetime of the process
- Affected entry points include
EnumPageContentStates,EnumPageContentStatesEx,EnumAttachments,EnumDocumentFonts,EnumPageElements,EnumNamedDestinations,EnumSignatures,EnumFormFields,GetFormValues,GetTextInAreaEx, and the text-search, form-field-action and certificate enumeration calls
Changed
- The result-array parameter of those calls is now passed as
varrather thanout. Existing Delphi and C++Builder code compiles and links unchanged; the only visible difference is that array slots past the returned count keep whatever they held before instead of being silently blanked
Version 3.328.0
Added
- Certificates now tell the library where their status can be checked:
GetCertificateOCSPURLs,GetCertificateIssuerURLsandGetCertificateCRLURLsread the responder, issuing-certificate and CRL addresses out of a certificate, so assembling long-term validation material no longer requires knowing where a given authority publishes FetchRevocationMaterialdownloads material from those addresses, andAddPAdESDSSCRLFromURLandAddPAdESDSSCertificateFromURLdownload and file it in the document security store in one step- Addresses that name no fetchable resource, such as a directory name or a mail address, are skipped rather than reported as something that can be downloaded
Version 3.327.0
Added
- A built-in RFC 3161 time-stamp client.
SetTimeStampServerandSetTimeStampOptionsconfigure the authority, hash algorithm, requested policy, nonce use and timeout;FetchTimeStampTokenreturns a TimeStampToken for any digest ApplyPAdESSignatureTimeStampcompletes a PAdES-B-T signature in one call: it hashes the signature value, obtains the token from the configured authority and attaches it as the signature time-stamp attribute, replacing the previous three-step exchange the caller had to wire up itself- When a nonce is used the token is checked to carry the same value back, so a replayed or substituted response is rejected instead of being embedded in the document
GetTimeStampStatusandGetTimeStampErrorreport the authority's own status and failure text, so a refused request explains itself
Version 3.326.0
Added
- The PDFium renderer now writes the same image formats the GDI+ and Cairo renderers write.
RenderPageToFile,RenderPageToStreamandRenderPagesToFilesaccept BMP (option 0), JPEG (1), PNG (5), GIF (6), TIFF (7) and G4 TIFF (10) afterSelectRenderer(3), instead of accepting BMP alone - The JPEG quality set through
SetJPEGQualityand the active TIFF compression settings now apply to PDFium output as well, so switching renderers no longer changes the encoding of the file that is produced
Fixed
- Requesting PNG or any other non-BMP format from the PDFium renderer used to return 0 and leave an empty file behind. Applications that offered a renderer choice silently produced unreadable output whenever PDFium was the selected engine
- Asking the PDFium renderer for a metafile format it cannot produce (WMF, EMF, EPS, EMF+, HTML5) now reports which formats are available through
LastRenderErrorinstead of naming BMP as the only option
Version 3.324.0
Changed
- The PDFium renderer now feeds the document to the engine through a streaming data source instead of one resident buffer. Rendering and printing previously serialised the document and then copied it again into a string, so every page cost twice the document size in memory; the copy is gone and PDFium reads only the blocks it needs
- Rendering a page range to files parses the document once for the whole batch instead of once per page, so a long range no longer re-reads the entire file for every image it writes
- Older PDFium builds that do not export the streaming entry point keep working unchanged through the in-memory path
Fixed
- The renderer smoke test located the optional PDFium and Cairo libraries one directory too high and silently skipped both engines; it now finds them and exercises the real rendering paths
Version 3.323.0
Added
CreateValidationReportveSaveValidationReport, yapısal bir PDF/A ve PDF/UA-1 doğrulama raporunu XML veya JSON biçiminde üretir. Her bulgu, kural kimliğini, kuralın sahibi olan standardı, kısa bir kural adını, uyguladığı ISO maddesini, bir önem düzeyini ve etkilenen nesne sayısını taşır ve rapor, standart başına ve belge düzeyinde geçme/kalma istatistikleriyle kapanır- Talep edilmemiş bir standart, sessiz bir geçme yerine
not-checkedolarak raporlanır; böylece kısmi bir çalışma, temiz bir sağlık raporuyla karıştırılamaz - Derleme hatları artık düz metin içinde alt dizgiler eşleştirmek yerine bir kural kimliği veya ISO maddesi üzerinden denetlenebilir: denetleme raporu ailesi önce insanlar için bir rapor oluşturur ve bu metni JSON, HTML veya CSV biçimine dönüştürürken, doğrulama raporu ham kontrol çıktısından oluşturulur ve makine tarafından okunabilir alanları bozulmadan korur
Version 3.322.0
Added
- Başvuru kılavuzu artık daha önce ayrı bir sayfası olmayan
TPDFlibyüzeyi genelinde kullanılan dört harici tanımlı genel türü belgelendiriyor:TPDFlibProgressEvent,TPDFlibLogger,TPDFlibCertificateInfoveTPDFlibWatermarkBase, böylece genel olay, günlükleyici, numaralandırma-sonucu ve filigran türlerinin kapsamı tamamlanıyor
Version 3.321.0
Added
CheckDocumentPolicy,Fonts.NotEmbedded = 0,Security.Encrypted = noveyaDocument.Pages <= 500gibi bildirimsel ev kurallarını belgeye karşı değerlendirir ve her kuralı, gerçek değerle birlikte geçti veya kaldı olarak raporlar; yayıncılar, arşivler ve matbaalar için bir alım denetimini, elle yazılmış inceleme kodu yerine yapılandırmaya dönüştürür
Version 3.320.1
Fixed
- PDF/A kipinde önce bir yazı tipi yüklemeden metin çizmek artık hata vermez: PDF/A, her yazı tipi programının gömülü olmasını gerektirdiğinden, yerleşik bir yazı tipine dolaylı kısayol reddedildi ve seçili yazı tipi kalmadı, bu yüzden
DrawTextve diğer metin çağrıları çizmek yerine çöktü - Dolaylı yazı tipi yolu artık PDF/A kipi etkinken gerçekten gömülebilir bir yazı tipini çözer, dolayısıyla açık bir
AddTrueTypeFontçağrısı olmadan çizilen metin gömülür ve uyumlu kalır; doğrudan birAddStandardFontçağrısı PDF/A altında hâlâ reddedilir - Gömülebilir bir yazı tipinin çözülemeyeceği konaklarda, çizim hata vermek yerine yerleşik ölçümlere geri düşer ve uyum eksikliğini
LastErrorCode605 üzerinden raporlar, böylece dosya uyumlu olarak yayınlanmadan önce yakalanabilir
Version 3.320.0
Added
GetDocumentFeatureReport, tek bir çağrıda yapısal bir özellik raporu döndürür — belge üst verisi, sayfa ve nesne sayıları, şifreleme durumu, yazı tipi ve görüntü envanterleri, etiketleme ve ana hatlar, form alanları, imzalar, ekler ve kategoriye göre bayt dökümü — daha önce bir kataloglama veya alım hattının bir araya getirmek zorunda olduğu düzine ayrı sorgunun yerini alır
Version 3.319.0
Added
SetCollectionView,AddCollectionField,SetCollectionSortveSetCollectionItemValue, mevcut eklerin üzerine PDF portföyleri kurar; böylece gömülü dosyalar kümesi, düz bir ek listesi yerine kendi sütunları, sıralama düzeni ve dosya başına değerleriyle gezilebilir bir paket olarak sunulurGetCollectionViewveGetCollectionFieldCount, yüklenen bir portföyün sunum kipini ve bildirilen sütun sayısını raporlar
Version 3.318.1
Fixed
- Metin çıkarma seçeneği 12 (döndürülmüş metni yoksay) artık döndürülmüş akışları hangi yönde dönerlerse dönsünler bırakır: saat yönünde çeyrek dönüş ve saat yönünün tersine çeyrek dönüş eskiden farklı ele alınırdı, bu yüzden yatay kenar boşluğu notları tek yönde atılırken diğerinde döndürülüyordu
- Aynı seçenek, yalnızca yatık olan (örneğin sentetik italik) yatık metni korur ve tolerans artık metin boyutu ve sayfa dönüşümüyle ölçeklenir, dolayısıyla büyük yatık başlıklar artık döndürülmüş gibi atılmıyor
Version 3.318.0
Added
DecodeAllStreams, bir belgenin sıkıştırılmış akışlarını yerinde genişletir; böylece onu kaydetmek, içerik akışları, üst veri ve yapısının fark araçları, adli inceleme ve destek iş akışları tarafından doğrudan okunabilen bir kopya üretir; görüntüler, öngörü akışları ve çapraz başvuru akışları kodlamalarını korur ve nesne akışları önce somutlaştırılır, böylece hiçbir şey kaybolmaz
Version 3.317.0
Added
SetTrappedveGetTrapped, PDF/X'in gerektirdiği belge tutuklama durumunu bildirir ve okur; bir metin dizisi yerine belirtimenin çağırdığı/Trappedadı olarak yazılırSetOutputIntentSubtypeveGetOutputIntentSubtype, çıktı amacını yeniden etiketler; böylece yüklenen bir renk profili, PDF/A kiplerinin oluşturduğuGTS_PDFA1arşivleme koşulu yerine birGTS_PDFXbaskı koşulunu tanımlayabilir
Version 3.316.0
Added
SetEncryptEmbeddedFilesOnlyveGetEncryptEmbeddedFilesOnly, AES şifrelemesini gömülü dosyalarla sınırlandırır: belge herhangi bir okuyucuda parola istemi olmadan açılır ve işlenirken ekleri şifreli kalır; bu, kapak sayfaları herkese açık yük ise de içeriği olmayan faturalar, tıbbi kayıtlar ve dosya örnekleri için standart düzendir
Version 3.315.0
Added
- Metin çıkarma seçeneği 18, 90, 180 veya 270 derecede çizilen akışları yatay okuma çerçevesine döndürür ve her çeyrek dönüşü ayrı ayrı gruplandırır; dolayısıyla döndürülmüş kenar boşluğu notları, tablo başlıkları ve grafik eksen etiketleri, dik metinle iç içe geçmek veya atılmak yerine okunabilir satırlar olarak çıkarılır
Fixed
DASetTextExtractionOptions, 16 (kısa çizgi kaldırma) ve 17 (karakter aralığı sözcük bölme) seçeneklerini reddetmek yerine kabul eder ve doğrudan erişimli çıkarma yolu artık 15, 16 ve 17 seçeneklerini çıkarıcıya iletir; böylece alt çizgi kuralı kaldırma, kısa çizgi kaldırma ve karakter aralığı bölme, yüklenen bir belgeye uygulandığı gibi dosya tanıtıcılarına da uygulanır
Version 3.314.0
Added
GetFontHasToUnicode, seçili yazı tipinin bir Unicode eşlemesi taşıyıp taşımadığını raporlar ve yazı tipi envanteri, eşleşen bir yazı tipi başınaHasToUnicodealanı ile birNoToUnicodeCountözeti kazanır; böylece belgeler, işlemeden önce çıkarma açısından güvenli ve PDF/A-*u veya PDF/UA dönüştürülebilir yazı tipleri için denetlenebilir
Version 3.313.0
Added
SetPDFAMode, PDF/A-2u için (ISO 19005-2 Level U) 8 kipini kazanır; bu uyum düzeyi, gömülü dosyalara izin vermeden Unicode metin eşlemeleri bildirir ve mevcut 2b ve 2a kiplerinin yanında PDF/A-2 ailesini tamamlar
Version 3.312.0
Added
GetObjectByPathveGetObjectByPathCount,Root/Pages/Kids[0]/MediaBox[2]veyapages[0]/Typegibi yol ifadeleriyle nesne ağacının herhangi bir düğümünü okur — türler, skaler değerler, serileştirilmiş biçimler ve öğe sayıları tek çağrıda; üst veri yoklamaları, uyum nokta kontrolleri ve destek tanılaması için elle yazılmış nesne taramasının yerini alır
Version 3.311.0
Added
SetBlackPointCompensation, sonraki çizimler için siyah nokta telafisini (AÇIK, KAPALI veya Default) PDF 2.0/UseBlackPtCompgrafik durumu üzerinden bildirir; böylece baskı ön hazırlık ve prova çıktısı, daha önce görüntüleyiciye özel olan koyu ton ICC dönüşümlerini sabitleyebilir; belge sürümü otomatik olarak yükseltilir ve PDF/A kipleri bu durumu reddeder
Version 3.310.0
Added
SetCompressionLevelveGetCompressionLevel, kitaplığın gerçekleştirdiği her sıkıştırma için deflate düzeyini ortaya çıkarır: 0 varsayılan SIMD hızlandırılış motoru tutar, 1 iş çıkarma hızını tercih eder ve 9 arşivleri en küçük boyuta sıkıştırırRecompressStreams, seçili belgenin her düz FlateDecode akışını geçerli düzeyde yeniden deflate eder ve akış başına daha küçük kodlamayı korur; böylece içeriklerine dokunmadan, özgün olarak hızlı bir sıkıştırma ayarında yazılmış belgeleri küçültür
Version 3.309.0
Added
SetObjectStreamModeveGetObjectStreamMode, üç durumlu bir nesne akışı denetimi ekler: devre dışı, üret (varsayılan) veya koru; burada koru, yüklenen dosyanın özgün sıkıştırılmış gruplandırmasını korur ve kapsayıcıları birebir yazar; bu sayede mevcut PDF 1.5+ dosyalarının dönüştürmeleri hiçbir şeyin açılması veya yeniden gruplandırılması gerekmediği için daha ucuz hale gelir
Changed
- Koru kipinde, yükleme işleminden sonra düzenlenen üyeler değişikliklerinin kaydedilmesi için üst düzey nesnelere yükseltilir ve geri kalan sıkıştırılmış üyelerden herhangi biri otomatik olarak ikili çapraz başvuru akışı biçimini seçer
Version 3.308.0
Added
CheckDocumentStructure, tek çağrıda bir yapısal sağlık denetimi yürütür: her nesne ve akış kod çözücüsünden geçirilir, düz Flate akışları kesilmiş verinin yakalanması için zlib bitiş işaretçisine karşı katı olarak doğrulanır ve rapor; eksik trailer'ları, çözülemeyen katalogları ve sayfaları, desteklenmeyen şifreleme işleyicilerini ve bayt taramasıyla onarılmış dosyaları, nesne başına bulgularla ve bir özet satırıyla işaretler
Version 3.307.0
Fixed
- Çapraz başvuru akışları kullanan hasarlı belgeler artık başarıyla onarılıyor: ham yeniden yapılandırma, sıkıştırılmış nesne akışlarının üyelerini kurtarır ve dosyada hiçbir trailer anahtar sözcüğü olmadığında trailer'ı en yeni erişilebilir belge kataloğundan sentezler; böylece bozuk bir startxref sapması bu tür dosyaları artık açılamaz hale getirmiyor
Version 3.306.0
Added
ExportDocumentData, belge bilgi anahtarlarını, tüm yer imi ağacını ve sayfa etiketi aralıklarını klasik dump_data satır biçiminde düzenlenebilir düz metin olarak yazarImportDocumentData, aynı biçimi geri uygular — bilgi anahtarları güncellenir, yer imi ağacı iç içe düzeyler ve hedef sayfalarla yeniden kurulur ve sayfa etiketi aralıkları değiştirilir — böylece her yönde tek çağrıda toplu yer imi düzenleme ve belgeler arasında üst veri göçüne olanak tanır
Version 3.305.0
Added
AuditDocumentSpace, belgenin bayt kullanımını kategoriye göre ayrıştırır — görüntüler, yazı tipi programları ve sözlükler, içerik akışları, form XObject'leri, nesne akışları, gömülü dosyalar, üst veri, yapı ağacı, ek açıklamalar, sayfa ağacı ve diğer — nesne sayıları, bayt toplamları ve yüzdelerle; bir dosyanın neden bu kadar büyük olduğunu ve hangi iyileştirmenin en çok işe yaradığını yanıtlar
Version 3.304.0
Added
StructTreeItemCount,GetStructTreeItemTextveGetStructTreeItemIntProperty, etiketli bir belgenin yapı ağacını düzleştirilmiş bir derinlik öncelikli öğe listesi olarak okur — öğe türleri (ham ve rol eşlemeli), alternatif ve gerçek metin, dil, başlıklar, işaretli içerik kimlikleri, sayfa numaraları ve üst/alt ilişkileri
Changed
- Yapı ağacı okuyucusu hasarlı belgelere karşı korunur: başvuru döngüleri, erim dışı nesne numaraları ve 64 düzeyden daha derin iç içe ağaçlar döngüye girmek yerine kesilir
Version 3.303.1
Fixed
StampTextveStampImagetarafından oluşturulan yarı saydam alt katman damgaları artık saydamlıklarını özgün sayfa içeriğine sızdırmıyor — saydamlık durumu artık damganın kendisiyle sınırlı, dolayısıyla sayfa tam saydamlığını koruyor
Version 3.303.0
Added
OverlayDocumentPages, başka bir açık belgenin sayfalarını seçili belgenin sayfaları üzerine basar; hedef sayfa başına bir kaynak sayfa, mevcut içeriğin üstünde veya altında — antetli kâğıt, sürekli sayfa arka planları ve taranmış form şablonları tek çağrıda- Kaynak tükenmesi yapılandırılabilir: durdur, kaynak sayfalarında döngü oluştur veya son kaynak sayfasını tekrar etmeye devam et; başka bir seçenek damganın doğal boyutunun ötesinde büyütülmesini engeller
Changed
- Belge damgaları hedef sayfanın CropBox'ına sığdırılır ve bir
/Rotategirdisi taşıyan sayfalarda dik olarak yerleştirilir ve her kaynak sayfa, paylaşılan bir Form XObject olarak bir kez içe aktarılır; böylece tekrarlanan şablonlar kaynaklarını hiçbir zaman çoğaltmaz
Version 3.302.0
Fixed
- AES-256 parolaları artık karma işleminden önce SASLprep (RFC 4013) ile işlenir; böylece ASCII olmayan boşluklar, yumuşak kısa çizgiler, uyumluluk karakterleri veya birleştirme dizileri içeren parolalar Acrobat ve diğer uyumlu okuyucularda doğru şekilde açılır
- AES-256 belgelerini açma işlemi önce standart hazırlanmış parolayı dener ve eski bayt biçimine geri düşer; böylece ASCII olmayan parolalarla daha önceki sürümler tarafından yazılan dosyalar açılmaya devam eder
Added
- 604 hata kodu, yasaklı kod noktaları içerdiği veya çift yönlü kuralları ihlal ettiği için SASLprep tarafından reddedilen bir AES-256 parolasını raporlar
Version 3.301.0
Added
SplitDocumentToFiles, seçili belgeyi her birinde sabit sayfa bulunan bir toplu çıktı dosyası grubuna böler; bir%pdosya adı yer tutucusu kullanır
Changed
- Toplu bölme, kaynak belgeyi bir kez ayrıştırır ve her yığı aynı bellek içi yapıdan kopyalar; bir
ExtractFilePagesdöngüsünün her erim için yaptığı yinelenen tam yeniden ayrıştırmanın yerini alır
Version 3.300.0
Added
CollateDocuments, birkaç açık belgeden gelen sayfaları seçili belgeye dönüşümlü olarak birleştirir; her turda her kaynaktan yapılandırılabilir sayıda sayfa alır (A1, B1, A2, B2, …)CollateDocumentsEx, kaynak başına bir sayfa erim listesi kabul eder; burada3-1gibi azalan erimler bir kaynağı tersine çevirir, böylece ön ve tersine çevrilmiş arka tarayıcı geçişleri tek çağrıda okuma düzeninde birleşir
Changed
- Birleştirilmiş katıştırmalar her kaynağı tek bir nesne eşlemesi üzerinden içe aktarır ve sayfa yeniden sıralamayla araya yerleştirir; böylece bir kaynak içinde paylaşılan yazı tipleri ve görüntüler, grup boyutundan bağımsız olarak yalnızca bir kez yazılır
Version 3.299.0
Added
SetDeterministicDocumentIDveGetDeterministicDocumentID, trailer dosya tanımlayıcısını yeniden üretilebilir bir değere değiştirir; böylece özdeş girdiler derleme önbellekleme, içerik adreslenebilir depolama ve bayt düzeyinde gerileme karşılaştırması için özdeş çıktı baytları üretirSetDocumentIDSeed, yeniden üretilebilir dosya tanımlayıcısı için açık bir tohum sağlar; tohum olmadan tanımlayıcı, belge üst verisinden, sürüm başlığından ve sayfa sayısından türetilir
Changed
- Yeniden üretilebilir dosya tanımlayıcıları yalnızca tam kaydetmelerde yenilenir; artımlı güncellemeler ve şifreli belgeler mevcut tanımlayıcılarını korur; böylece imzalar ve parola korumalı dosyalar doğru şekilde açılmaya devam eder
Version 3.298.0
Added
AddLinkToArticleThreadveSetOutlineArticleThread, sayfa etkin noktalarını ve taslakları standart Thread eylemleriyle bir makale ipliğine veya boncuğa bağlarAddActionNextArticleThreadvePDF_ACTION_BUILDER_THREAD, zincirli, form, sayfa ve belge eylem iş akışlarına Thread eylemleri ekler
Changed
- Thread eylem hedefleri, kararlı dolaylı iplik ve boncuk başvurularını kullanır ve hedef kapsayıcıyı değiştirmeden geçersiz dizinleri reddeder
- Form alanı eylem oluşturucuları, PDF/A modu etkinken ek eylemleri reddeder ve alan ile widget
/AAsözlüklerine yönelik PDF/A yasağını korur
Version 3.297.0
Added
DLdüz DLL başvurusu artık herAsonekli ANSI (char) giriş noktasını belgelemekte ve Unicode karşılıklarını doğruPAnsiCharDelphi veconst char *C imzalarıyla yansıtan 353 başvuru sayfası eklemektedirBufferUtilities,DirectAccessFunctionalityveMiscellaneousFunctions, paylaşılan kategori şeması tarafından yönetilen temiz fonksiyon grubu dizin sayfaları olarak yeniden inşa edildi; bozuk işaretleme, yanlış etiketlenmiş bölümler ve eksik çipler düzeltildi- Gezinme dizini ve paylaşılan arama dizini artık hem Unicode hem de ANSI çağıranlar için tüm DLL yüzeyini kapsamaktadır
Fixed
- Kaynakta eşleşen sembolü olmayan eski
SetLoggergirdisi kaldırıldı; belgelenen özellikLogger
Version 3.296.0
Added
AddAlternateImage,AlternateImageCount,GetAlternateImageInfoveRemoveAlternateImage, görüntü ve yazdırma görüntü varyantlarının tiplenmiş yazılma ve incelenmesini sağlar- Alternatif görüntüler bir isteğe bağlı içerik grubu veya üyelik sözlüğü ile ilişkilendirilebilirken, her temel görüntü için bir varyant yazdırma varsayılanı olarak seçilebilir
Changed
- Yerleşik işleyici, bir temel görüntü gizli olduğunda isteğe bağlı içerik alternatif görüntülerini seçmekte ve yazıcı hedeflerinde yazdırma varsayılanına uymaktadır
FindImagesartık sayfa kaynaklarından ulaşılabilir alternatif görüntü XObject'lerini kaydeder, böylece içe aktarılan varyantlar kullanılabilir görüntü tanıtıcıları alır
Version 3.295.0
Added
AddArticleThread, tiplenmiş meta veriler, sıralı sayfa dikdörtgenleri, dairesel boncuk bağlantıları ve sayfa başına boncuk dizileri ile standartlara uygun makale gezinmesi oluştururArticleThreadCount,GetArticleThreadInfoveGetArticleThreadBead, oluşturulan veya içe aktarıılan makale iplerini, bozuk bağlantı döngülerinin sınırlı geçişi ile inceler
Changed
DeletePagesartık her boncuğu kaybeden makale iplerini kaldırır ve hayatta kalan iplerin dairesel bağlantılarını onarır- Silinen sayfa izleme artık kararlı dolaylı sayfa başvurularını tutar, böylece sayfa ağacı imleci hareket ettikçe ana hat ve makale temizliği kaymaz
Version 3.294.0
Added
SearchTextBatch, her sayfa çıkartması bellekteyken birden fazla metin sorgusu arar ve her eşleşmeyle birlikte kaynak sıfır tabanlı sorgu dizinini döndürürSearchTextBatchEach, ilerleme raporlama ve iptal ile aynı tek geçişli aramayı bir akış geri araması üzerinden sağlar
Changed
- Tek sorgulu ve toplu metin araması artık tek bir eşleştirme çekirdeğini paylaşmakta; büyük/küçük harf duyarlı, tam kelime ve sayfa aralığı semantiğini korurken tekrarlanan sayfa çıkartma, metin katlama ve eşleşme geometrisi işinden kaçınır
Version 3.293.1
Fixed
- Örgü gölgelendirme taraması artık hiçbir Delphi sürümünde derleme başarısızlığı yaşamıyor; GDI+ boyayıcısındaki gerçek-kayan-noktaya dönüşümlerinde
E2089 Invalid typecastçözüldü - Paralel toplu sayfa işleme artık
System.Threadingbulunmayan Delphi XE5 ve XE6'da derleniyor; eski araç zincirleri Windows dışındaki gibi seri işleme yoluna geri düşüyor - Yazıcı yeteneği yoklaması,
SetPrinterçağısını yazdırma kodunun geri kalanıyla hizalayarak eski Delphi sürümlerinde uyumsuz türler hatası artık vermiyor - Sertifika deposu numaralandırması artık RAD Studio 10.3 Rio'da derleniyor; daha önce numaralandırma yordamını eniyilerken dahili derleyici hatasıyla iptal ediliyordu
Version 3.293.0
Added
- İsteğe bağlı içerik üyelik sözlükleri artık
AnyOn,AllOn,AnyOffveAllOffuyumluluk ilkeleriyle oluşturulabilir, güncellenebilir ve numaralandırılabilir - İç içe PDF 1.6
/VEgörünürlük ifadeleri, Delphi ve C++Builder tarafından paylaşılan kompakt bir ön ek gösterimi yoluylaAnd,OrveNotdestekler
Changed
- İsteğe bağlı içerik kapsamları, içerik akışları, yakalanan sayfalar, görüntüler, form alanları ve ek açıklamalar artık bir grup tanıtıcısı veya üyelik tanıtıcısı kabul eder
- İşleme önce geçerli
/VEifadelerini değerlendirir ve bozuk veya desteklenmeyen ifadeler için/OCGsartı/P'ye geri düşer
Fixed
- İç içe isteğe bağlı içerik artık kapsayan bir grup veya üyelik gizliyken içeriği görünür yapamaz
- Etkili isteğe bağlı içerik grupları olmayan üyelik sözlükleri artık PDF belirtiminin gerektirdiği gibi görünürlüğü değiştirmeden bırakır
Version 3.292.0
Added
EnumAttachmentsartık hem belge hem de ek açıklama ekleri için oluşturma ve değiştirme tarihlerini, onaltılık sağlama toplamlarını, ilişkili dosya ilişkilerini ve dosya belirtimi nesne numaralarını raporlamaktadırValidateAttachmentChecksumisteğe bağlı bir ekin yükünü depolanan sağlama toplamına göre doğrularken, yeni gömülü dosyalar artık otomatik olarak sağlama toplamı meta verisi alır
Fixed
SetEmbeddedFileAFRelationshipartık ekleme API'sinin geri kalanıyla aynı 1 tabanlı gömülü dosya dizinlerini, tek ekli belgeler dahil kabul eder
Version 3.291.0
Added
DeduplicateResourcesartık yüklenen bir belge genelinde tam yinelenen görüntü, Form, desen, gölgelendirme, fonksiyon, ICC profili, yazı tipi programı, CMap, Type 3 CharProc, gömülü dosya, meta veri ve PostScript akışlarını birleştirir- Kaynak tekilleştirme bağımsız tür bayrakları, kuru çalıştırma analizi, isteğe bağlı yetim toplama ve ayrıntılı sağlama, karşılaştırma, yük, başvuru ve kategori başına istatistikler sağlar
Changed
- Yinelenen algılama, anahtar sırasından bağımsız olarak tam akış sözlüklerini standartlaştırır, her aday yükü SHA-256 ile bir kez sağlar ve başvuruları yeniden yönlendirmeden önce eşleşen kovaları bayt bayt doğrular
- Tam eşdeğerlik grupları belirleyici çıktı için en düşük nesne numarasını ve üretimini tutarken, bozuk doğrudan nesne döngüleri ve anlamsal sözlük farkları birleştirilmemiş kalır
Version 3.290.0
Changed
PurgeUnusedResourcesartık döşeme desenleri, Type 3 glifleri, ek açıklama görünüm durumları, ExtGState yumuşak maske grupları, görüntüler, gölgelendirmeler ve iç içe renk uzayları genelinde geçişli bir bağımlılık kapanışı hesaplar- Varsayılan temizleme seçenekleri artık desen, Type 3, görünüm, yumuşak maske ve görüntü bağımlılık analizini etkinleştirir; daha dar bir taramaya ihtiyaç duyan çağıranlar için bağımsız bayraklar sağlar
- İç içe içerik programları ve bağımlılık girdileri önbelleğe alınır, paylaşılan kaynak kapsamları budamadan önce özelleştirilir ve bozuk döngüler etkin akış ve derinlik koruyucuları ile sınırlanır
Fixed
- Yalnızca görüntü renk uzayları, Indexed temelleri, Separation veya DeviceN alternatifleri, Pattern temel uzayları, ICCBased alternatifleri veya gölgelendirme sözlükleri aracılığıyla kullanılan sayfa kaynakları artık kullanılmayan olarak kaldırılmıyor
- Yalnızca Type 3 CharProcs, döşeme deseni hücreleri, ek açıklama görünümleri veya saydamlık yumuşak maske grupları tarafından kullanılan kaynaklar artık kendi veya devralınan kapsamlarından kaldırılmıyor
Version 3.289.0
Added
PurgeUnusedResourcesartık seçilen içerik katmanları tarafından başvurulmayan adlandırılmış sayfa kaynaklarını kaldırır ve ayrıntılı kategori başına istatistikler döndürebilir- Kaynak temizliği artık sayfa aralıkları, kuru çalıştırma raporlaması, ilerleme ve iptal, özyinelemeli Form XObject analizi, kullanımdan kaldırılan ProcSet kaldırma ve isteğe bağlı yetim nesne toplama destekler
Changed
- Kaynak analizi artık PDF ad büyük/küçük harf duyarlılığını, devralınan Form kaynaklarını, özel satır içi görüntü renk uzaylarını ve tüm yedi standart kaynak kategorisini izler
- Yinelenen Form programları önbelleğe alınır, kullanılan kaynak kümeleri sıralı arama kullanır ve sözlük girdileri öngörülebilir büyük belge performansı için azalan sırada kaldırılır
Fixed
- Sözlük girdisi kaldırma artık büyük sözlük anahtar dizinlerini geçersiz kılar, böylece sonraki aramalar eski girdileri döndüremez
- Bozuk akışlar ve bilinmeyen işleçler varsayılan olarak tam kaynak kapsamını korurken, paylaşılan veya devralınan kaynak sözlükleri mutasyondan önce kopyalanır
Version 3.288.0
Added
- Dijital imzalar artık tam DocMDP sertifikalama ve FieldMDP alan kilidi yapıları yayabilir ve her seçili imza için yapısal izin raporları sağlar
- RFC 3161 belge zaman damgaları, imza zaman damgaları, PAdES-B-T belirteç enjeksiyonu, sertifika zinciri doğrulama, OCSP kanıtları ve DSS veya VRI doğrulama materyali artık tam yazma ve doğrulama iş akışlarına sahip
- RichMedia ek açıklamaları artık gömülü varlıkları, etkinleştirme ve devre dışı bırakma ayarlarını, poster görünümlerini, numaralandırmayı, çıkartmayı ve kaldırmayı destekler
- Poster yazdırma artık vektör sayfa dayatması, örtüşme ve kırpma işaretleri, sabit kenar boşluğu algılı yerleştirme ve yeniden kullanılabilir döşeme planlarını destekler
- Etiketli tablolar artık kararlı tanımlayıcılar, başlık ilişkilendirmeleri, açıklıklar, yinelenen başlıklar ve artifakta dönüştürülmüş süslemelerle anlamsal Table, TR, TH ve TD yapıları yayar
- Görüntüleyici artık metin, seçim, onay kutusu, radyo ve düğme alanları için klavyeyle erişilebilir AcroForm düzenlemesi sağlarken eylemleri ana uygulamaya gönderir
Changed
- Type 1 fonksiyon tabanlı ve Type 4 ile 7 arası örgü gölgelendirmeler artık yerel fonksiyon değerlendirmesi ve sınırlı örgü mozaiklemesi yoluyla işlenir
- ICCBased renk işleme artık görüntüler ve gölgelendirmeler genelinde önbelleğe alınmış dönüşümleri paylaşırken kalibre renk uzayı davranışını korur
- Artımlı kaydetmeler artık nesne akışlarını ve çapraz başvuru akışlarını tutarlı biçimde yeniden inşa eder ve seçili imzalar kendi imzalı revizyonlarına göre doğrulanır
Fixed
- SHA-1 imza zaman damgası istekleri artık SHA-256'ya düşmek yerine imzalayanın imza değerini SHA-1 ile sağlar
- Reddedilen alan kilidi değiştirmeleri artık daha önce geçerli olan bir alan kilidi yapılandırmasını atmıyor
- Yinelenen görünüm durumu adlarına sahip radyo pencere öğeleri artık seçili pencere öğesini korur ve kardeş pencere öğelerini kapalı tutar
Version 3.287.0
Changed
- Satır içi görüntü sözlükleri artık sınırlı iç içe geçmeyle PDF yorum, sınırlayıcı, değişmez, onaltılık, dizi ve sözlük sınırlarını izler
- Satır içi görüntü yükleri artık raw, DCT, ASCII85, ASCIIHex, RunLength ve Flate verileri için biçim algılayan sonlandırma kullanır
- Flate yük keşfi artık içerik akışı ofsetinden tam sıkıştırılmış bayt muhasebesiyle tek bir sınırlı inflate gerçekleştirirken, zincirleme kayıpsız süzgeçler uçtan uca çıktı tavanını paylaşır
- ASCII85, ASCIIHex, LZW, tahmin eden, renk profili ve yardımcı görüntü akışları artık aşırı büyük geçici ayırmalar olmadan sınırlı ara çıktı uygular
Fixed
- Bozuk veya kırpılmış satır içi görüntüler artık kaynak verilerin ötesinde okumuyor, sonlandırılmamış değerler üzerinde döngüye girmiyor veya kod çözücü yeniden kullanımı arasında eski durum tutmuyor
- Paketlenmiş görüntü satırları artık bayt yuvarlamadan önce bileşen bitlerini hesaplar; düşük bitli RGB ve çok satırlı görüntüler için yanlış uzunlukları önler
- Kaynak renk uzayları artık orijinal adlarını korurken Lab, dolaylı ICCBased ve DeviceN bileşen sayılarını türetir ve Indexed palet akışlarını katı sınırlar altında çözer
- Satır içi görüntü sınırları artık geçersiz boyutları, bit derinliklerini, desteklenmeyen süzgeçleri, güvensiz süzgeç zincirlerini, sıkıştırılmış akışları ve belirsiz bitiş işaretlerini tutarlı biçimde reddeder
- Indexed renk işleme artık her palet erişimini doğrular ve kod çözülen tablonun ötesinde okumak yerine kırpılmış arama verilerini reddeder
- PNG tahmin edenleri 10 ile 15 artık Flate ve LZW akışları için doğru çözüyor, geçersiz satır süzgeçlerini reddediyor ve ayırmadan önce tüm satır ve durum boyutlarını doğruluyor
- JPEG ve JPEG 2000 yükleri artık görüntü ayırmasından önce kodlanmış boyutlarını, bileşenlerini, hassasiyetini, işaretçi yapısını, kutu uzunluklarını ve kod çözülen depolama ayak izini doğruluyor
- Satır içi görüntü doğrulaması artık hem paketlenmiş hem de genişletilmiş bit eşlem depolamasını sınırlar ve ICC profillerini, JBIG2 globals ve terminal süzgeç parametrelerini sınırlar
- Gömülü bitiş işareti metni içeren ikili süzgeç yükleri artık sınırlı biçim doğrulamasından geçen ilk adaya kadar devam ediyor
Version 3.286.0
Changed
- Content stream tokenization now follows PDF whitespace, comment, delimiter, literal string, hexadecimal string, and name boundaries
- Text splitting and resource replacement now use geometrically grown output buffers for linear processing of large content streams
- Reusable content stream processors now reset derived output and parser state before every
Processcall
Fixed
- Malformed or truncated literal and hexadecimal strings no longer read beyond the source buffer or emit an extra empty token
- Resource replacement now preserves case-sensitive PDF name semantics, accepts optional leading slashes, and updates duplicate mappings deterministically
- XObject and shading operands at the beginning of a stream are now excluded from text output, while unmatched restore operators no longer cancel later saved graphics states
Version 3.285.0
Changed
- LZW encoding now uses constant-time dictionary lookup and buffered stream writes, while decoding uses compact prefix and suffix tables with geometric output growth
- Flate predictor decoding now processes rows directly in the output buffer and supports packed, 8-bit, and 16-bit TIFF samples with arbitrary colour counts
- Stored Deflate streams now write into an exact pre-sized result, and zlib wrappers release temporary buffers safely when compression or decompression fails
Fixed
- LZW code-width changes now follow PDF
EarlyChangesemantics across 9-bit through 12-bit codes, including dictionary resets andEarlyChange=0 - LZW decoding now rejects invalid future codes and truncated bit streams without reading beyond the source buffer
- PNG predictors now use the ceiling byte width of a pixel, preserve previous decoded rows, and safely pad a partial final row
- TIFF predictor decoding now handles 1-bit, 2-bit, 4-bit, 8-bit, and 16-bit components consistently in both LZW and Flate paths
Version 3.284.0
Changed
- Buffer searches now scan fixed 64 KiB blocks, use byte lookup tables for set membership, and preserve the caller's position across every search path
- Unicode, Latin-1, hexadecimal digest, and ARC4 conversions now reserve bounded output once instead of repeatedly growing strings or temporary arrays
- ASCII85 encoding now reads input streams in 32 KiB blocks, while decoding uses exact integer arithmetic and writes directly into a pre-sized output buffer
- MD5 string hashing now avoids a temporary memory stream, digest comparison examines every byte, and ARC4 key scheduling no longer allocates an expanded key array
Fixed
DistanceToAnyBytenow returns the correct offset beyond its first block instead of rereading the same prefix and overcounting skipped bytes- Stream-backed buffer reads now honour the actual byte count returned by custom streams, shrinking results and advancing positions only by bytes received
- Buffer length reductions now clamp the current position, and nil pointer or stream sources behave as empty inputs instead of exposing invalid memory
- Latin-1 decoding now maps the complete byte range 0x00-0xFF instead of replacing bytes 0x7F-0xFF
- ASCII85 decoding now preserves the valid maximum 32-bit group
s8W-!and stops at the first end marker without floating-point boundary loss
Version 3.283.0
Added
TPDFlibSignatureVerifiercan now enumerate signature fields and CMS signers, open files, streams, or strings, and verify a selected field and signer by index or field name- Detailed verification reports now separate cryptographic integrity from signed-revision coverage, current-file coverage, later revisions, strict Contents-gap validation, and native crypto errors
Changed
- Detached CMS validation now streams both ByteRange segments through Windows CryptoAPI in bounded chunks instead of materialising the complete PDF in memory
- Signature fields under nested AcroForm Kids arrays and inherited
/FT /Sigentries are now enumerated with fully qualified names, and direct signature value dictionaries are supported
Fixed
- ByteRange validation now rejects overflow, overlap, truncation, a gap that is not exactly the selected hexadecimal
/Contentstoken, and a signed revision that does not end at its own%%EOF - Certificate lookup no longer falls back to an unrelated embedded certificate when the selected CMS signer identifier has no exact issuer-and-serial match
- Incremental updates that use cross-reference streams now include the cross-reference stream object's own type 1 entry, preventing strict PDF validators from reporting a missing self entry after signing
Version 3.282.1
Changed
- Full saves now rebuild imported object streams from the live object graph, preserve private trailer roots, and retain free-object generations without reusing structural object numbers
- Cross-reference streams now size their offset fields for large files, preallocate their payload, include their own entry, and preserve trailer extension keys
Fixed
- Object-stream packing now writes real
/ObjStmcontainers and type 2 member entries instead of only switching to an xref stream - Garbage collection no longer writes missing object numbers as in-use entries at offset zero and now emits a linked free-object chain in both plaintext and stream cross-references
- Loaded packed PDFs can now be saved repeatedly with packing enabled or disabled without retaining stale object streams, losing live members, or requiring cross-reference repair
Version 3.282.0
Added
- Imported ICCBased colours now use the embedded ICC profile across vector painting, function and mesh shadings, indexed palettes, raw bitmap, CCITT and JBIG2 images, CMYK JPEG images, and JPEG 2000 images
Changed
- ICC transforms now use a bounded Windows Color System lookup table with multilinear interpolation, replacing the temporary PNG round trip used during image rendering
- The renderer now honours content-stream and graphics-state rendering intents, ICCBased
/Range, image/Decode, and original-domain colour-key masks while validating profile channel counts against the PDF colour-space dictionary - Repeated uses of the same profile and rendering intent now share one lookup table across vector colours, patterns, shadings, and images
Fixed
- Encrypted ICC profile streams are now decrypted only while decoded and restored afterward, and embedded profiles are no longer compressed twice while writing image output
Version 3.281.0
Added
- The built-in GDI+ renderer now paints imported PDF function-based shadings and free-form, lattice, Coons, and tensor mesh shadings (types 1 and 4-7), including transparency and clipping
- Shading dictionaries now support component Function arrays, calibrated Lab, CalGray, and CalRGB spaces, Separation and DeviceN tint transforms, PatternType 2 Background fills, and BBox clipping across the GDI+ and Cairo renderers
Changed
- Type 1 shading functions now use bounded adaptive colour sampling with additional quarter-cell probes for higher narrow-feature accuracy and lower work on constant or smooth regions
- PatternType 2 matrices around mesh shadings are now composed exactly once in both GDI+ and Cairo, preserving translated, scaled, and rotated pattern placement
- Mesh colour components are now interpolated in their source colour space before Function evaluation and conversion to RGB, preserving nonlinear functions, DeviceCMYK gradients, and the correct ordering for managed colour transforms
- Coons and tensor surfaces now use bounded device-pixel error subdivision for smoother high-curvature output at large render sizes
- Encrypted shading and Function streams are decoded through the document crypt callbacks, and Type 5 vertex records honour their required byte alignment
Version 3.280.1
Fixed
MergeFileList/MergeFileListFast/MergeFileListStrictleaked aTSmartPDFReader/TSmartPDFDocumentpair (and everything they own) when a non-PDF file appeared in the merge list: the reader and document were constructed before thetryblock that frees them, so a parse failure on the malformed file's content orphaned the already-constructed reader instead of being cleaned up by the surrounding exception handler; construction now happens inside the protectingtryin both the single-file and multi-file prescan paths- Mesh shading parsing (
TPLMeshShading.Parse, shading types 1 and 4-7) leaked the decoded/Functionobject on every parse - every early-exit path and the normal completion skipped freeing it; the function is now released in afinallyblock regardless of howParseexits TPDFlibSignDoc.Closenow nils its smart-reader/document/info fields after freeing them, and the exception paths inOpen,OpenStreamandOpenStringnow release any partially-constructed smart objects instead of only clearing the stream reference, preventing a leak when opening a signing target fails partway through
Version 3.280.0
Added
- Error category enumeration
TPDFlibErrorCategory(ecSuccess/ecStructure/ecSave/ecCrypto/ecGeneric/ecCompliance/ecAcroForm) layered on top of the existing numericLastErrorCodetaxonomy, so callers can classify failures without memorising code ranges; exposed viaTPDFlib.LastErrorCategory,TPDFlib.ErrorCategory(Code)andTPDFlib.ErrorMessage(Code) - Form-field error codes 701-704 (field not found, field read-only, no AcroForm, invalid value) with human-readable messages, letting callers distinguish "field is locked" from "no such field" instead of receiving a single generic failure
SetFormFieldValueForcedforce-write variant that bypasses the read-only guard, used internally bySetFormValues(SkipReadOnly=False)so bulk imports can still overwrite locked fields when the caller explicitly opts out
Changed
SetFormFieldValuenow setsLastErrorCodeto 701/702/703 on failure (field not found / read-only / no AcroForm) instead of returning 0 silently;LastErrorCategoryis a non-consuming read so callers can inspect the category before retrieving the numeric code
Version 3.279.0
Added
ReplacePageRangesreplaces visual page content from another open document without changing the target page count or target page object identities, preserving bookmarks, links, annotations, and form widgets already attached to those pages
Changed
- Cross-document page copying no longer creates and removes an extra placeholder page before importing the requested range
Version 3.278.0
Added
PrintPagesAdvancedapplies copies, collation, duplex, orientation, color, quality, paper-size and input-bin settings to arbitraryPrintPagesrange expressions while retaining one printer profile and one print job
Changed
- Advanced print settings are validated before the job starts, positive print-quality values above the four named presets are applied as DPI, and paper or input-bin identifiers may use the full positive range supported by the corresponding
DEVMODEfields
Fixed
- Damaged cross-reference recovery now dispatches its bounded block reads through the traditional
TStream.Readoverride on Win64, preserving instrumentation and custom-stream behavior while retaining 64 KiB sequential I/O
Version 3.277.0
Changed
- Damaged cross-reference recovery now scans source data in 64 KiB sequential blocks instead of seeking once for every matching character, keeping auxiliary memory bounded while scaling to large PDF files and non-memory streams
- Recovery validates complete indirect-object tokens, skips object-like data inside comments, strings, and streams, confirms stream endings with a following
endobjtoken, preserves headers split across read boundaries, and selects the last valid trailer dictionary
Fixed
- Trailer reconstruction now supports nested dictionaries and delimiter text inside literal strings and is no longer truncated to the first 2048 bytes or the first apparent
>>pair
Version 3.276.0
Added
ActivateWebLinksandActivateWebLinksExscan existing page text once per page and create non-duplicate URI link annotations for HTTP, HTTPS,www., FTP,mailto:, and bare email targets with selectable detection and border options- Generated links use matched-character geometry, precise quadrilaterals for rotated or skewed text when permitted, PDF/A print flags, progress and cancellation support, and selected-page restoration; tagged PDF and PDF/UA documents are protected from incomplete structure-tree updates
Changed
SetAutoCreateWebLinksnow uses the same boundary-aware detector and target normalization when creating links for newly drawn text, addingwww., FTP, and bare email support
Fixed
- Updating annotation
/Contents, name, date, title, or subject properties no longer overwrites the subtype of an existing action dictionary, so URI and other actions remain valid after annotation metadata changes
Version 3.275.0
Added
ExtractPageRangeText,SavePageRangeTextToStream, andSavePageRangeTextToFileextract a parsed page range in one traversal with caller-defined page separators; stream and file output writes UTF-8 data incrementally so large documents do not require a complete document-sized text bufferSetPageBoxRangeandRemovePageBoxRangeapply page-boundary changes across the standard page-range syntax while preserving the caller's selected pageSetPageTransitionRangeandSetPageTransitionRangeExapply legacy or extended presentation transitions to page ranges with per-page progress and cancellation supportGeneratePageThumbnailsrenders requested pages directly into reusable memory and attaches their/Thumbimages without intermediate files or nested progress operations
Version 3.274.0
Fixed
- GDI+ rendering of axial shading patterns now honours the PDF
/Extendarray:SetupGDIPlusPatternpassesWrapModeClampwhen either end is extended (matching the Cairo backend) instead of always usingWrapModeTile, so end colours paint the area outside the gradient axis correctly
Added
- The scroll-hint bubble (
"Page N / M") shown while dragging the vertical scrollbar now auto-hides after 3 seconds of inactivity via aWM_TIMERhandler, so it no longer lingers until a separate scroll event dismisses it ZoomInStep/ZoomOutStepnow snap ontoActualSize(100%),FitWidthandFitPagepercentages when they fall between the current zoom and the next preset on the 14-step ladder, matching the behaviour of professional PDF viewers- The viewer disk page cache writes a build-version marker (
cache.version) and wipes the whole cache root when the library version changes, so a build upgrade never reuses stale bitmaps rendered by an older code path
Version 3.273.1
Fixed
- Object-stream container and xref-stream objects created during save were leaked because they bypassed
TPDFStructure.AddObjectregistration; both call sites now use theNewStreamWithDictownership-tracking factory, eliminating theTPDFStreamleak reported by the test runner underReportMemoryLeaksOnShutdown - Cross-reference stream
/Sizewas off by one: it must be one past the highest object number in the whole file, and the xref stream is itself an indirect object numberedMaxObj+1, so/Sizeis nowMaxObj+2
Changed
- Peephole content-stream optimiser now also removes identity text-matrix operators (
1 0 0 1 0 0 Tm), covering bothcmandTmwith the same six-operand identity check - Mark-sweep GC preserves object 1 (the
/Linearizedparameter dictionary) when the source document was loaded linearized, since that dictionary is never referenced from/Rootbut must survive
Version 3.273.0
Added
- Object-stream packing on save (
TPDFDocument.PackObjectsIntoStreams) collects eligible non-stream indirect objects, serialises them into PDF 1.5 object streams (/Type /ObjStm) with Flate compression, and emits a binary cross-reference stream (/Type /XRef) carrying type-0, type-1 and type-2 entries, reducing the size of saved files 10-40% on object-dense documents TPDFlibSaveOptions.PackObjectStreamsflag plusTPDFlib.SetPackObjectStreams/GetPackObjectStreamsAPI; defaults to enabled, auto-gated by PDF version (1.5+ activates packing and xref streams, 1.4 and below keep the traditional plaintext xref for compatibility), andTPDFlib.GetLastSaveUsedObjectStreamsreports whether the last save actually packed
Version 3.272.0
Added
- Mark-sweep garbage collection of unreferenced indirect objects (
TPDFDocument.GarbageCollectUnusedObjects) walks the object graph from the trailer roots (/Root,/Info,/Encrypt) and removes every indirect object that is not reachable, stopping the file-size growth that accumulates when pages are deleted and their font, content and XObject resources become orphans TPDFlibSaveOptions.GarbageCollectflag plusTPDFlib.SetGarbageCollect/GetGarbageCollectAPI let callers opt in to GC during a full save (defaults to off for backward compatibility), andTPDFlib.GarbageCollectObjectsruns GC immediately and returns the number of orphaned objects removed
Version 3.271.0
Added
- Peephole content-stream optimiser (
TPDFContentPeepholeOptimizer) rewrites a parsed page content stream before Flate compression, removing semantically redundant PDF operators: identitycmmatrices, emptyq/Qpairs, emptyBT/ETobjects, no-op paths terminated bynwith no clip, duplicate graphics-state setters (colour, line width, cap/join, dash, text state), and deadnafter a painting operator - all transforms are output-equivalent so visible page output is unchanged TPDFlibSaveOptions.OptimizeContentStreamsflag and matchingTPDFlib.SetOptimizeContentStreams/GetOptimizeContentStreamsAPI let callers opt in or out of the peephole rewrite duringCompressContent/CompressPage; enabled by default
Changed
TPDFDocument.CompressPagenow forwards the optimisation flag to the page tree so the peephole pass runs insideTPDFPageTree.Compressbefore the existing Flate compression, stacking operator-level reduction on top of byte-level compression
Version 3.270.0
Added
- New
PLParseDefaultAppearancedecodes a/DAdefault-appearance byte string (ISO 32000-2 12.7.4.3) into the font resource name, font size and fill colour, covering therg,kandGcolour operators so form-field and annotation appearance generators can paint text with the author-intended styling
Changed
- Page content-stream assembly (
TPDFRenderer.GetContents) now concatenates multi-part/Contentsarrays through aTStringBuilderinstead of repeatedResult := Result + chunk, removing the O(n^2) string growth that penalised pages with many content-stream parts
Version 3.269.0
Added
- New
BeginMarkedContent/EndMarkedContentwrite inline marked-content sequences with accessibility properties (/Alt,/ActualText,/Lang,/E) directly in the BDC property list per ISO 32000-2 14.9.2–14.9.5, so screen readers and accessibility tooling can read substitute text without a structure-tree entry - Annotation reader exposes
GetAnnotEffectiveBorderimplementing the Errata #287 precedence (border style dict/BSwins over the legacy/Borderarray) and resolving width, style and dash pattern into one call - Signature documents expose
GetSignatureSeedValueto read the seed-value dictionary (/SV, ISO 32000-2 12.7.5.5 Tables 236–237): required filter, allowed SubFilters and allowed digest methods, so a signer can honour the constraints the author embedded GetSignatureFieldLockreads the/LockFieldMDP seed dictionary (Table 238): action (/All,/Include,/Exclude) and the affected field names that must be locked at sign time
Version 3.268.0
Added
- New
PLParsePDFDateparses ISO 32000-2 7.9.4 date strings (D:YYYYMMDDHHmmSSOHH'mm') into a localTDateTime, honouring the mandatoryD:prefix, the field-dependency ladder (each field only when all preceding fields are present) and the UT offset (+/-/Zwith optional apostrophe-minute), returning the local equivalent of the documented instant - Text-string decoding (
PLDecodeTextString) now recognises the PDF 2.0 UTF-8 BOM (EF BB BF) per 7.9.2.2.1, so UTF-8-authored metadata decodes correctly instead of being misread as PDFDocEncoding - File specifications expose
GetFileNamehonouring the PDF 2.0 precedence (Path > UF > F) per Errata #444, plusGetEmbeddedFileStreamandGetRelatedFilesaccessors for the/EFand/RFdictionaries - Annotation readers expose appearance-precedence helpers
GetAnnotNormalAppearance,GetAnnotDefaultAppearanceandGetAnnotOffStateAppearanceimplementing the Errata #23/#34/#42/#170 rules (AP/N is authoritative; DA is the byte-string fallback; Off state lives under the nameOff) - PDF/UA validation reports a new code 10045 when a non-standard structure type fails to terminate at a standard type through the role-map chain (ISO 14289-1:2014 7.1), with cycle protection to a depth of 8
- PDF/A and PDF/UA font audits now validate that embedded CIDFontType2 fonts carry a
/CIDToGIDMapwhose value is either the nameIdentityor a stream, not merely present (ISO 32000-1 9.7.4)
Changed
- Name-tree lookup (
NameTreeLookup) now binary-searches the sortedNamesarray per ISO 32000-2 7.9.6 before falling back to a linear scan, turning large EmbeddedFiles/JavaScript/Dests lookups from O(n) into O(log n) on conformant files - PDF/UA standard-structure-type set expanded with PDF 2.0 additions (
Artifact,DocumentFragment,FENote,MarkedContent,Title) so the role-map no-remap and chain-termination checks recognise the full tag vocabulary
Version 3.267.0
Added
EnumPageContentStatesExcan recursively enumerate Form XObject instructions with configurable depth, cycle protection and depth-first execution ordering- Content snapshots now expose invocation-tree identity, containing stream and parent XObject information, resource-scope identity, Form traversal status and descendant counts
- Standalone content trackers can register scoped fonts and initialise isolated Form execution state with matrix concatenation and bounding-box clipping
Changed
- Recursive content tracing selects each Form resource dictionary independently, inherits invoking resources for compatible legacy Forms, preserves inherited font identity and caches decoded Form programs across repeated invocations
Version 3.266.0
Added
- Text runs returned by
GetTextRunsnow carry the glyph origin (OriginX/OriginY) and the full text matrix components (Tm11/Tm12/Tm21/Tm22/TmDX/TmDY) captured by replaying BT, Td, TD, Tm and T* alongside the show operators, so consumers can locate glyphs without a separate text-funnel pass - Mesh shading decoding now routes Lab, CalRGB and CalGray colour spaces through the colour manager instead of falling through to black, producing correct fills for non-DeviceRGB free-form and coons patches
- Redaction now emits a real
/Subtype /Redactannotation with/Rect,/ICinterior colour and optional overlay text alongside the existing content removal, so redaction-aware viewers mark the sanitized region - Library operations emit structured log records at load and save boundaries through the previously dormant
Logger, with ISO-8601 UTC timestamps and a cachedTStreamWriterfile sink that no longer reopens the log file on every line - New
Tests.Memoryfixture guards create/draw/save/free andNewDocumentcycles against heap regression, and the console test runner now enablesReportMemoryLeaksOnShutdown - EMF interpretation now counts unknown or private records via the
UnknownRecordCountproperty so silent metafile gaps are observable
Changed
- Dictionary key lookup (
TPDFDictionary.FindIndexByKeyName) builds a lazy open-addressing hash index for dictionaries with more than 16 entries, turning the linear scan that dominated renderer Resources/ColorSpace/Font/ExtGState lookups into an O(1) probe - sRGB gamma conversion (
XYZ2RGB) uses a shared 4096-entry lookup table instead of threePower(x, 1/2.4)calls per pixel, and Lab-to-XYZ cubing now uses direct multiplies; both are the dominant per-pixel cost when decoding Lab or ICC-based images - Page lookup (
TPDFPageTree.GetPage) returns the cached page dictionary on repeat access instead of re-walking the page tree every call - Content-stream operator dispatch (
ContentOperatorFromName) buckets the 73 operators by first byte, cutting the per-token linear scan to a short residual compare - PDF/A colour-space audit now recurses into the base or alternate space of Indexed, Separation, DeviceN and ICCBased up to a depth of 8, so a hidden DeviceCMYK tint transform or bare Lab name is flagged rather than passing silently
- Shaped-font finalize now walks the used-glyph set recorded at draw time instead of scanning all 65536 glyph slots four times per save
- String escape routines (literal-string, XFDF, stamp and variable token expansion) build output through
TStringBuilderor two-pass allocation, removing O(n^2) concatenation from save and form-export hot paths - AES stream encrypt/decrypt reuse their chunk buffer across loop iterations instead of reallocating per block
- Composite-glyph parsing in the TrueType parser grows the components array geometrically instead of one element at a time
- Mesh shading
ReadBitsreads the minimum covering bytes in one pass andWriteBitspre-sizes the output buffer, eliminating per-bit reallocation - Painter circle control point uses a precomputed kappa constant and arc squaring uses
Sqrinstead ofPower
Fixed
- Fixed a non-Windows compile break in
PDFlibParallelwhere the stub body signature forPDFlibRenderPagesParalleldid not match the interface declaration
Version 3.265.0
Added
- Added 59 C++Builder console demos to align the C++Builder demo suite with Delphi, bringing the total from 33 to 92 demos covering the same API surfaces
- Added Demo/C++Builder/index.html expansion from 35 to 92 entries with Navigation, Color & ICC, Barcode & media, and Structure & compliance sections
Fixed
- Fixed all 33 existing C++Builder cbproj files that were missing 20 library units (PDFlibMeshShading, PDFlibGraphics, PDFlibWindows, PDFlibParallel, PDFlibLogger, PDFlibMail, PDFlibViewer, etc) from their DelphiCompile list, which prevented every C++Builder demo from compiling
Version 3.264.0
Added
- Content graphics-state snapshots now resolve
Dooperands as image, form or PostScript XObjects and report their resource names, object numbers and transformed bounds - Form snapshots expose the original
/Matrixand/BBoxtogether with resource, group, transparency-group and reference-form indicators - Standalone content trackers can pre-register XObject streams through
RegisterXObject
Changed
- Page content-state enumeration now precompiles selected-page XObject resources and calculates invocation bounds from all four transformed corners
Version 3.263.0
Added
- Content graphics-state snapshots now expose current path bounds, current point, path complexity, pending clipping rules and effective clipping bounds
- Standalone content trackers can initialise an explicit clipping boundary through
SetInitialClipBounds
Changed
- Page content-state enumeration now follows delayed
WandW*clipping, exact transformed cubic extrema,q/Qclipping restoration and selected-pageCropBoxboundaries
Version 3.262.0
Added
- Content graphics-state snapshots now report font writing mode, exact per-instruction text displacement and whether font metrics were resolved
- Standalone content trackers can provide font measurements through
OnMeasureText
Changed
- Page content-state enumeration now advances text matrices for
Tj,TJ,'and"using simple or composite font metrics, horizontal scaling, spacing and vertical writing rules
Version 3.261.0
Added
- Content graphics-state tracing can now resolve page
ExtGStateresources, including transparency, blending, overprint, soft masks, device controls and embedded font references TPDFContentStateTrackercan pre-register external graphics-state dictionaries for standalone content-program analysis
Changed
- External graphics-state parameters now apply cumulatively and participate in complete
q/Qsave and restore snapshots
Version 3.260.0
Added
- Added single-pass effective graphics-state tracing for structured content programs and complete selected pages
- Snapshots expose CTM, text matrices, line style, dash pattern, colours, text state and graphics-state stack depth before or after each instruction
Changed
- Image placement enumeration now maps all four unit-square corners, producing correct bounds under rotation and shear
Version 3.259.0
Added
- Added typed time, special-pattern and arbitrary-mask helpers for interactive form fields
- Added range validation with independently optional zero-safe bounds
- Added sum, average, product, minimum and maximum field calculations with automatic calculation-order registration
Security
- Generated JavaScript string values now escape quotes, backslashes, control characters and JavaScript line separators
Version 3.258.0
Added
- Added typed
SetOCGStateaction creation for form-field events, existing actions and action chains - Optional-content actions preserve left-to-right state changes, repeated groups and the optional radio-button relationship preference
Changed
- Optional-content action enumeration now returns canonical group handles that round-trip through the writer APIs
Version 3.257.0
Added
- Added complete explicit remote-destination writing with zero-based pages, all standard fit types, nullable XYZ values and tri-state window preferences
- Added complete launch-action writing for portable files, Windows parameters, default directories and open or print operations
- Existing action handles can now update these payloads or append them to action chains without container-specific duplicate APIs
Security
- Remote go-to and launch action builders now reject PDF/A mode before modifying an action chain
Version 3.256.0
Added
- Remote go-to action inspection now reports named and explicit destinations, zero-based target pages, fit types, coordinates and zoom values
- Launch action inspection now reports Windows application parameters, default directories and open or print operations
- Action information distinguishes an absent
/NewWindowpreference from an explicit false value and identifies array-based targets
Version 3.255.0
Added
- Added typed builders for remote named-destination and external application launch actions
- URI action builders now support coordinate-map requests through the standard
/IsMapflag - The new action kinds work across lifecycle, form-field and chained-action APIs through the existing extended builder interface
Version 3.254.0
Added
- Added 14 Delphi API-coverage demos for library surfaces that had no dedicated demo: OutlineBuilder, NamedDestinations, DocumentActions, EmbeddedFiles, LinearizeDemo, BarcodeGallery, XfaFields, TaggedPDF, OutputIntent, HtmlTextFlow, RichMediaAnnotations, MailSendDemo, TextBlockExtraction, and PadesDssDemo
- Added a Navigation section, Color & ICC section, Barcode & media section, and Structure & compliance section to the Delphi demo index, bringing the total from 56 to 92 listed demos
- Added Readme.en-us.html guides for the 20 demos that previously shipped without one
Changed
- Applied the project Formatter.config across all Delphi demo sources so operator spacing, indentation, and keyword casing follow one style, and set NewLineBeforeThen to False so If...Then stays on a single line
- Hardened error handling across the classic GUI demos: SaveToFile return values are now consistently checked, TPDFlib and secondary object lifetimes are always protected by try/finally, and failure messages include LastErrorCode
Fixed
- Fixed inverted SaveToFile polarity in ImageToPdf that treated success as failure, and stopped AddTrueTypeSubsettedFont from opening a stale file when the save failed
- Fixed resource leaks in CreateWithImageToStream, DoInTheStream, CanvasText, ExtractText, ExtractImage, PdfDecrypt, PdfEncrypt, and PdfPermission where TPDFlib, TStream, TBitmap, TOpenDialog, or TStringList instances could escape on an exception path
- Removed dead code in AddFormattedTitle (unused RectParts allocation, redundant try/except around StrToFloatDef) and MultiFunction (overwritten SetTextSize call)
Version 3.253.0
Added
- Added typed action details for thread, sound, movie, optional-content, rendition, transition and 3D-view actions
- Added reusable action-handle lookup and ordered optional-content state enumeration
- Added complete PDF transition records covering replacement, Fly, Push, Cover, Uncover and Fade styles
Fixed
- Wipe and Glitter transitions now store their direction in
/Di, read page display duration from the page dictionary and clear both transition and timing entries - Standard pre-PDF-1.5 transition styles no longer force a PDF 1.5 output version
Version 3.252.0
Added
- Added single-pass form-field action discovery with typed action details across primary, widget and field triggers
- Added complete calculation-order enumeration, per-field lookup and removal for interactive forms
- Extended bulk form-field snapshots with calculation order and action count
Changed
- Widget lifecycle triggers now support page-open, page-close, page-visible and page-hidden actions with the required PDF 1.5 version handling
Version 3.251.0
Added
- Added single-pass named-destination enumeration across legacy catalog entries and modern name trees with resolved page and view parameters
- Added named-destination removal, complete push-button captions, button text positioning and form-field mapping names
- Extended bulk form-field snapshots with mapping names, button captions and button text position
Fixed
- Name-tree editing now supports direct destination values and uses unambiguous multi-node index encoding
Version 3.250.0
Added
- Added single-pass form field snapshots with field identity, type, page, flags, values and Choice state
- Added typed Choice-field flag queries plus validated selected-index and top-visible-index accessors
Fixed
- Single-selection Choice fields no longer retain a multi-selection
/Iarray, and switching from multi-select to single-select now replaces the old/Varray with a string value
Version 3.249.0
Added
- Added one-pass stateful text search traversal so applications can iterate cached hits without extracting pages twice
- Added bulk form value export and name-based application with optional read-only field protection
Version 3.248.0
Added
- Added retained Viewer selections with page-space geometry, extracted text, enumeration, clearing and a vetoable marquee event
- Added exact current-viewport bitmap capture and file output including persistent overlays
Version 3.247.0
Added
- Added independent Viewer controls for user form editing and annotation activation
- Added configurable foreground colour for text and choice form editors
Version 3.246.0
Added
- Added typed line ending styles, shape interior colours, link highlight modes, FreeText alignment, Text annotation open state and Caret symbols
- Annotation setters validate compatible subtypes and automatically raise the minimum PDF version where required
Version 3.245.1
Fixed
- Corrected FastReport export page sizing and memo layout so A4 reports retain their intended scale, text stays within memo bounds and unconfigured memo frames remain hidden
Version 3.245.0
Added
- Added
OnPasswordso applications can supply another password after an encrypted document rejects the initial credential - Password retries now work consistently for file, stream and string loads, expose the next attempt number and allow the handler to cancel
Security
- Password callbacks are limited to sixteen total attempts and every retry uses a fresh parser and decryption state
Version 3.244.0
Added
- Added
SetXMPPropertyExfor safely writing scalar properties in caller-defined XMP namespaces - Custom XMP values are escaped through the XML DOM, repeated writes replace the matching namespace property and invalid or reserved XML names are rejected
Version 3.243.0
Added
- Added typed document lifecycle actions for before close, before save, after save, before print and after print triggers
- Added typed page open and close actions with shared support for URI, named, JavaScript, form and destination action builders
- Added action inspection and removal methods for every document and page lifecycle trigger
Version 3.242.0
Added
- Added
SaveChangesto append changes to the originally loaded file and automatically reload the updated xref chain for repeated incremental saves SaveChangesvalidates the reload password before writing and preserves the selected public document handle after reload
Changed
AppendToFilenow rejects a target whose current length differs from the loaded source, preventing stale incremental offsets from being appended to an externally changed file
Version 3.241.0
Added
- Added
GetLastOutlineandGetLastChildOutlinefor direct access to the tail of a bookmark list - Added
GetOutlineChildCountandGetOutlineSiblingIndexfor lightweight bookmark tree inspection without allocating a full tree snapshot
Version 3.240.0
Added
- Added
SaveAllAttachmentsExwith overwrite, skip and automatic rename conflict policies plus a per-attachment naming callback - Attachment exports now reduce requested names to safe leaf names and protect Windows reserved device names
Fixed
- Fixed
SaveAllAttachmentsreturning without writing files because its attachment snapshot was counted but not allocated and populated
Version 3.239.0
Added
- Added
OnPageMouseDown,OnPageMouseMoveandOnPageMouseUpso Viewer hosts receive one-based page numbers and top-down PDF point coordinates independent of zoom, scrolling and view rotation - Added
RegionAtClientPoint,ActiveRegionandOnActiveRegionChangeto distinguish links, non-link annotations and form fields as the pointer enters or leaves them - Added
CreatePDFlibViewerDefaultPopupMenuandInstallPDFlibViewerDefaultPopupMenu, which compose the existing Viewer action classes into a ready context menu for copy, zoom, fit, rotate, navigation, save and print
Version 3.238.0
Added
- Added
OnOperationProgresswith typed operation kind, lifecycle phase, current and total units, percentage and detail text while preserving the classicOnProgresspercentage callback - Load, save, search, merge and page-render file, stream and string entry points now report starting and terminal phases; operations with intermediate progress also report
opRunning - Setting
CancelduringopStartingoropRunningactivates the existingAbortstate, providing one cancellation path for old and new callers
Fixed
LoadFromFilenow preserves error code 404 for a wrong password instead of overwriting it with the generic load error 401 after cleanup
Version 3.237.0
Added
- Added
SearchTextEachandTPDFlibSearchHitEventto emit every text hit immediately without allocating or sizing a result array SearchTextandSearchTextEachnow report page progress throughOnProgressand honour bothAbortand callback cancellation; callback cancellation uses the existing abort state untilResetAbort- The Viewer search panel and search-highlight layer now consume the streaming API in one pass, removing their former 256-row and 512-highlight limits
Fixed
- Whole-word search now continues past an earlier substring occurrence in the same text block to find a later correctly bounded match
Version 3.236.0
Added
- Added
GetPrinterCapabilitiesto capture a live printer-driver snapshot without starting a print job - The typed
TPDFlibPrinterCapabilitiesresult includes paper IDs, names and millimetre dimensions, input-bin IDs and names, duplex, colour, landscape and collation support, the printer port and the maximum driver-reported copy count - Drivers that omit paper or bin metadata still return the remaining capabilities with empty arrays, while invalid printer names return a fully cleared snapshot
Version 3.235.0
Added
- Added
SendDocumentByMailfor saving the loaded document to a temporary PDF and delivering it as an SMTP attachment through the built-in Windows CDO provider - Added the reference-counted
IPDFlibMailProviderextension point so applications can supply another transport, support non-Windows hosts and test mail workflows without network access - Each send uses an isolated temporary directory, sanitises the attachment display name and removes both the PDF and its directory after the provider returns;
GetLastMailErrorreports validation, save, transport and platform failures
Version 3.234.0
Added
- Added variable placeholders to stamp, header and footer text:
<%PageNo%>,<%TotalPages%>,<%ShortDate%>,<%LongDate%>,<%ShortTime%>and<%LongTime%>expand per page alongside the classic &-tokens - Any custom
<%name%>placeholder resolves through the newOnCalcVariableevent, which receives the name and the page number and supplies the replacement - running numbers, batch codes and client fields stamp without pre-processing the text; without a handler unknown placeholders stay verbatim
Version 3.233.0
Added
- Added superscript/subscript detection to text extraction: the new
GetTextBlockVAlignreports each extracted text block's baseline classification (0 = baseline, 1 = superscript, 2 = subscript) relative to its visual line, so chemical formulas, exponents and footnote markers can be recognised - A block classifies as super-/subscript when it is markedly smaller than the line's dominant text and its vertical centre sits above/below the dominant centre within one text height
Version 3.232.0
Added
- Added character-level word splitting to text extraction:
SetTextExtractionOptions(17, 1)re-splits show-text runs that carry no space characters into words wherever a per-character advance step is much wider than the run's median glyph advance - documents that paint whole lines as a single operator with kerning gaps standing in for spaces now extract as separate words inGetPageTextmodes 7 and 9-11 - The advance arrays stay aligned with the widened text, so block quads and per-character width outputs remain consistent
Version 3.231.0
Added
- Added layout-preserving fixed-grid text export:
GetPageText(11)maps the page geometry onto a monospace character grid - rows cluster by baseline, every block lands at its column computed from the average character width, and shorter cells pad with real spaces - so tables and forms keep their visual alignment in plain-text viewers, terminals and diffs without relying on tab stops - The reference page for
GetPageTextnow documents the reading-order (9), tab-separated table (10) and fixed-grid (11) modes
Version 3.230.0
Added
- Added dehyphenation to text extraction:
SetTextExtractionOptions(16, 1)re-joins words hyphenated across line breaks ("inter-" at a line end followed by "national" becomes "international") in the line-oriented outputs ofGetPageTextmodes 7 and 9 - The heuristic only merges when a letter precedes the hyphen and a lowercase letter starts the next line, so numeric ranges, proper nouns and sentence-initial capitals keep their hyphens
Version 3.229.0
Added
- Added the
OnBeforeSnapshotevent to theTPDFlibViewercontrol: it fires before a snapshot drag is captured with the dragged region, and setting Handled cancels the default clipboard capture so applications can process the region themselves - Exposed
PrefetchEnabled: the background pre-render worker can now be switched off and on at run time (the worker stops immediately and restarts on the open document) - Exposed
DiskCacheMaxDocuments: the number of documents the cross-session disk page cache keeps before pruning is now tunable (default 10)
Version 3.228.0
Added
- Added precise navigation to the
TPDFlibViewercontrol:GoToPagePointjumps to a page and scrolls a given page point to the top-left of the viewport, so link destinations and search hits land exactly in view - Added programmatic scroll control:
ScrollBypixel stepping, read/writeHScrollPos/VScrollPosproperties (ideal for synchronising two side-by-side viewers over the same document), andGetScrollPosForPagereporting each page's scroll anchor in continuous mode - Added public coordinate bridges
ClientPointToPageandPageRectToClientRectconverting between client pixels and page user space through zoom, rotation and scroll; the internal hit-testing now shares the exact geometry of the paint path and also works on unparented (headless) controls
Version 3.227.0
Added
- Added view-state events to the
TPDFlibViewercontrol:OnZoomChangefires on every effective-zoom move (explicit zoom, preset steps, fit-mode recomputation on resize, rotation or DPI change) andOnHScroll/OnVScrollfollow the scroll position, so toolbars and status displays stay in sync without polling - Dragging the vertical scrollbar thumb now shows a floating "Page N / M" bubble that previews the page the view will land on - a big help in long documents; the
ScrollHintEnabledproperty (on by default) turns it off
Version 3.226.0
Added
- Completed the fill-and-save loop in the
TPDFlibViewercontrol:SaveToFileandSaveToStreamwrite the displayed document - committed form edits included - back to disk or a stream (any open in-place editor commits first) - Multiline text fields now edit in a proper multi-line memo: Enter inserts a line break, Ctrl+Enter commits, Escape cancels; single-line fields keep the plain Enter-commits behaviour
- Tab and Shift+Tab cycle the in-place editor through the document's editable text and choice fields, following each field's page;
FocusNextFormFieldexposes the same navigation programmatically
Version 3.225.0
Added
- Added preset-ladder zooming to the
TPDFlibViewercontrol:ZoomInStepandZoomOutStepsnap the zoom to the standard preset sequence (1, 5, 10, 25, 50, 75, 100, 150, 200, 400, 800, 1600, 2400, 3200 percent), starting from the zoom currently in effect so fit modes step naturally; the toolbar zoom actions now use the same ladder - Ctrl+mouse wheel now zooms along the preset ladder while a plain wheel keeps scrolling
- Added keyboard shortcuts: Ctrl+'+'/'-' step the zoom, Ctrl+1/2/3 switch to actual size, fit width and fit page, and Shift+Up/Down jump to the first and last page
Version 3.224.0
Added
- Added
CreateSelfSignedCertificatewith Delphi, DLL and ActiveX entry points: generates a self-signed RSA certificate (SHA-256 signature, configurable subject, validity and key length) and exports it with its private key to a password-protected PFX file, ready forSignFileand the sign-process APIs - so signing workflows can be built and tested without an external certificate authority - The certificate is created in a throwaway key container that is deleted after the export; only the PFX keeps the key material. Self-signed certificates are meant for testing and internal documents - viewers flag them as untrusted unless installed explicitly
Version 3.223.0
Added
- Added
TPDFlibShapeWatermarkto the composable watermark layer: rectangles, circles, ellipses, polygons, Bezier curve chains and straight lines stamp onto a page range with fill and stroke colours, line width and opacity, through the sameApplyWatermarkentry point as text and image watermarks - Rectangle, circle and ellipse shapes size themselves from Width/Height; polygon, curve and line shapes take their geometry from
SetPoints(local X,Y pairs), so the nine-point Position grid and custom placement apply to every shape kind; degenerate geometry (too few points) is rejected
Version 3.222.0
Added
- Added
AddLinkToEmbeddedPDFwith Delphi, DLL and ActiveX entry points: a page hotspot that opens a PDF embedded in the current document (by its EmbeddedFiles name) and jumps to a chosen page there, using the standard embedded go-to (/GoToE) action of ISO 32000-1 §12.6.4.4 with an optional new-window request; the document version rises to PDF 1.6 automatically GetAnnotActionInfoand its outline/form-field siblings now recognise embedded go-to actions, reporting the newakGoToEkind together with the embedded target name, the parent/child target relationship, the optional file specification and the /NewWindow flag
Version 3.221.0
Added
- Added
SetSignProcessAppearanceTextwith Delphi, DLL and ActiveX entry points: digital signatures can now show an automatically generated visible text appearance composed of the signer name, reason, location and signing date, with optional descriptive labels ("Signed by:", "Reason:", ...) selected through a bit mask - The text block lays out inside the signature field rectangle in Helvetica with a configurable colour; font size 0 auto-fits the lines to the field. A field image set through
SetSignProcessFieldImageFromFilekeeps precedence, and document time-stamp processes ignore the text appearance
Version 3.220.0
Added
- Added interactive form filling to the
TPDFlibViewercontrol: clicking a checkbox or radio button toggles it, and clicking a text or choice field opens an in-place editor over the field (Enter commits, Escape cancels, leaving the editor commits); read-only fields are left alone and the changed page re-renders automatically - Every write fires the new
OnFormFieldValueChangedevent, andHighlightFormFieldswithFormHighlightColorpaints a translucent backdrop over each fillable area so users can spot form fields - Added the programmatic counterparts
FormFieldAtPagePoint,GetFormFieldPageRect,ToggleCheckBoxField,SetFormFieldValueAndRefresh,BeginEditFormFieldandCommitInplaceEditor, driving the same machinery without mouse input
Version 3.219.0
Added
- Added annotation interaction to the
TPDFlibViewercontrol: clicking a non-link annotation fires the newOnAnnotClickevent with the page, annotation index and subtype, andAnnotAtPagePointexposes the hit test programmatically (Popup companions are skipped) - Hovering an annotation now shows its Contents text as the control's hint (the
AnnotHintsswitch, on by default, works with the standardShowHintproperty) - Added
SaveAnnotAttachmentToFileto write a FileAttachment annotation's embedded file to disk, completing click-to-save attachment workflows in the viewer
Version 3.218.0
Added
- Added a cross-session disk page cache to the
TPDFlibViewercontrol: settingDiskCacheFolderpersists rendered pages on disk so a recently viewed document reopens instantly without re-rendering - Cached pages are keyed by a fingerprint of the document's path, size and last write time, so editing the file automatically invalidates its stale pages; the cache keeps up to ten documents and prunes the least recently used ones
- Added the
DiskCacheHitscounter reporting how many page renderings the disk cache saved
Version 3.217.0
Added
- Added the
PDFlibViewerActionsunit with twenty ready-madeTActiondescendants forTPDFlibViewer, so toolbars and menus work without glue code: page navigation (First/Prior/Next/Last), zoom (In/Out/FitWidth/FitPage/ActualSize), view rotation (clockwise/anticlockwise), printing, file open and save-as dialogs, copy selected text, and the five mouse-tool mode switches - Each action targets a viewer through its
Viewerproperty and keeps its enabled state (document open, page position, selection present) and checked state (active zoom fit or mouse tool) up to date automatically; all actions register in the losLab PDF category for the Action List editor - Added
TPDFlibViewer.EffectiveZoomPercentreporting the zoom actually in effect (including computed fit-width/fit-page factors) so zoom steps can build on it
Version 3.216.0
Added
- Added search-hit highlighting to the
TPDFlibViewercontrol:HighlightSearchHitssearches the whole document and paints a translucent bar over every match that stays in place while scrolling, zooming and rotating, withClearSearchHighlights,SearchHighlightCountand a configurableSearchHighlightColor TPDFlibSearchPanel.RunSearchnow also paints the hit bars in the attached viewer (the newHighlightInViewproperty, on by default, turns this off), so search results are visible on the pages, not just in the hit list
Version 3.215.0
Added
- Added mouse tool modes to the
TPDFlibViewercontrol through the newViewerModeproperty:vmSelecttext selection (default),vmHandpan-by-dragging with a grab cursor (a plain click still follows links),vmZoommarquee zoom that magnifies the dragged band to fill the viewport,vmSnapshotregion capture to the clipboard, andvmHighlightpersistent translucent region highlighting - Added
CaptureRegionto render any client region (pages plus highlights) into a caller-owned bitmap, theOnSnapshotevent andSnapshotToClipboardswitch for snapshot handling, andAddHighlightRegion/ClearHighlightRegions/HighlightRegionCountwith a configurableHighlightColorfor page-anchored highlights that survive zoom, rotation and navigation
Version 3.214.0
Added
- Added printing to the
TPDFlibViewercontrol:PrintDocshows the standard Windows print dialog (printer choice, page range, copies, collation) and hands the job to the library's printing engine, whilePrintDoc(False)prints the whole document to the default printer without any UI - Added
PrintDocRangefor fully programmatic viewer printing with an explicit printer name, page range, copy count and collation flag
Version 3.213.0
Added
- Added view rotation to the
TPDFlibViewercontrol:RotateClockwise90andRotateAntiClockwise90turn the displayed pages in 90-degree steps, and theViewRotationproperty reads or sets the angle directly (0, 90, 180 or 270) - Rotation is a pure view attribute: the document is never modified, link clicking and text selection keep working at every angle, fit-width and fit-page zoom modes adapt to the rotated page shape, and opening a new document resets the view to 0 degrees
- Rotated page bitmaps are cached per angle, so switching between angles reuses previous renderings instead of re-rendering
Version 3.212.0
Changed
- Improved XFA datasets SOM path compatibility:
GetXFAFormFieldValueandSetXFAFormFieldValuenow accept simple FormCalc-style predicate selectors such as$data.Receipt.Detail.[Total_Price > 200].Descriptionand update every matching data node when a predicate selects a subset
Version 3.211.0
Changed
- Improved XFA datasets SOM path compatibility:
GetXFAFormFieldValueandSetXFAFormFieldValuenow accept Data DOM class selectors#dataGroupand#dataValuewith numeric or wildcard occurrences, allowing class-based paths such as$data.Receipt.#dataGroup[0].#dataValue[0]
Version 3.210.0
Changed
- Improved XFA datasets SOM path compatibility:
GetXFAFormFieldValueandSetXFAFormFieldValuenow accept the$recordroot in non-record-processing packets, so paths such as$record.Taxand$record/Detail[0]/Total_Priceresolve from the outer data record element
Version 3.209.0
Changed
- Improved XFDF annotation interchange: annotation exports now write standard border style attributes
width,style, anddashesfrom PDF annotation/BSvalues, and annotation imports restore those attributes on inserted annotations
Version 3.208.0
Changed
- Improved XFDF annotation interchange: annotation exports now write standard
creationdateandopacityattributes from PDF annotation/CreationDateand/CAvalues, and annotation imports restore those attributes on inserted annotations
Version 3.207.0
Changed
- Improved XFDF annotation interchange: annotation exports now write standard
flagsnames from PDF annotation/Fvalues, and annotation imports restore those names to the inserted annotation flags
Version 3.206.0
Changed
- Improved XFA datasets SOM path compatibility:
GetXFAFormFieldValueandSetXFAFormFieldValuenow accept direct child wildcard selectors such as$data.Receipt.*.Total_Priceto read or update matching child branches without selecting same-name fields on the parent node
Version 3.205.0
Changed
- Improved XFA datasets SOM path compatibility:
GetXFAFormFieldValueandSetXFAFormFieldValuenow accept descendant selectors such as$data..Total_Priceand$data.Receipt..Total_Priceto read or update the first matching descendant data node
Version 3.204.0
Changed
- Improved XFA datasets SOM path compatibility:
GetXFAFormFieldValueandSetXFAFormFieldValuenow accept theparentproperty in paths such as$data.Receipt.Detail[1].parent.Taxto read or update a selected node's parent sibling data
Version 3.203.0
Changed
- Improved XFA datasets SOM occurrence handling:
GetXFAFormFieldValueandSetXFAFormFieldValuenow support[*]selectors such as$data.Receipt.Detail[*].Total_Priceto read or update every matching repeated data node
Version 3.202.0
Changed
- Improved XFA SOM path compatibility: XFA datasets and template field APIs now preserve literal periods in slash-delimited field paths and accept escaped periods such as
Line\.Itemin dot-delimited SOM paths
Version 3.201.0
Changed
- Improved XFA datasets path compatibility: XFA field value APIs now accept slash-delimited paths after standard data SOM roots such as
$data/...,xfa.datasets.data/..., andxfa.datasets/...
Version 3.200.0
Changed
- Improved XFA datasets SOM compatibility: XFA field value APIs now accept the standard
!data...short form, including slash-delimited!data/...paths
Version 3.199.0
Changed
- Improved XFA template path compatibility: template editing APIs now accept slash-delimited field paths returned by XFA field-name enumeration, including
$template/...paths
Version 3.198.0
Changed
- Improved XFA datasets namespace compatibility: field value APIs now read and update data nodes by local XML name when the business data inside the datasets packet uses its own namespace prefix, and field-name enumeration returns prefix-free paths
Version 3.197.0
Changed
- Improved XFDF annotation interchange: annotation exports now include the common
nameanddateattributes from PDF/NMand/M, annotation imports restore those values on inserted annotations, andSetAnnotStrPropertynow accepts tag 104 for annotation modified dates
Version 3.196.0
Changed
- Improved XFA field-name enumeration: field list APIs now scan every top-level data record in the datasets packet and return leaf data fields without adding container groups as fields
Version 3.195.0
Changed
- Improved XFA datasets compatibility: XFA field value APIs now read and update complete XDP packets whose datasets packet uses an unprefixed
dataelement
Version 3.194.0
Fixed
- Improved XFA template field updates: XFA template field APIs now accept standard template SOM roots such as
$templateandxfa.template, and template-only changes in complete XDP streams are saved correctly
Version 3.193.0
Changed
- Improved XFA field addressing: XFA field value APIs now accept standard data SOM roots such as
$dataandxfa.datasets.datain addition to relative field paths
Version 3.192.0
Changed
- Improved XFA XML packet handling: XFA streams with UTF-16 byte order marks or UTF-16 XML byte patterns now decode before XML parsing, so UTF-16 encoded form values remain available through XFA field read/write APIs
Version 3.191.0
Changed
- Improved XFA packet authoring:
SetXFAFromStringnow creates the requiredAcroFormcontainer when a document does not already have form data, replaces stale parsed XFA state when a complete XFA packet is stored, and keeps the saved packet available through XFA field read/write APIs
Version 3.190.0
Changed
- Improved XFDF annotation interchange: annotation exports now write the common
colorattribute from the PDF/CRGB array, and annotation imports now restorecolor="#RRGGBB"values into the inserted annotation color array
Version 3.189.0
Added
- Added XFDF annotation interchange APIs:
ExportAnnotationsToXFDF,ExportAnnotationsToXFDFString,ImportAnnotationsFromXFDFandImportAnnotationsFromXFDFStringnow read and write ISO 19444<annots>data for text-style annotation comments, including page, rectangle, title, subject and plain contents data
Version 3.188.0
Changed
- Improved XFDF rich text field import: fields with
<value-richtext>now preserve the rich text XML in the fieldRVvalue while still applying the plain<value>fallback when present
Version 3.187.0
Changed
- Improved XFDF form-data interchange for multi-select choice fields: repeated
<value>elements now import into the selected-value array, and exporting a multi-select choice field now writes one<value>element per selected item instead of flattening them into one escaped text node
Version 3.186.0
Changed
- Improved XFDF form-data export for rich text fields: fields with an
RVrich text value now include a<value-richtext>element while preserving the plain<value>fallback
Version 3.185.0
Changed
- Improved XFDF form-data import for rich text fields: when a field provides
<value-richtext>without a plain<value>, the importer now extracts the XHTML text content and applies it to the matching AcroForm field instead of skipping the field
Version 3.184.0
Changed
- Improved XFDF form-data interchange: exports now use the standard XFDF namespace with
xml:space="preserve", emit nested<field>elements for hierarchical AcroForm names, skip non-terminal parent field values, write file exports as UTF-8, and import whitespace-flexible XFDF with nested fields, single-quoted attributes, CDATA, XML entities, and numeric character references
Version 3.183.0
Added
- Added
SanitizeDocument(Flags)which strips sensitive content in one call: removes all global JavaScript, removes the catalog OpenAction, strips /A actions from every annotation, blanks Author/Subject/Keywords/Creator/Producer metadata (both /Info and XMP), and optionally deletes all annotations. Flag bitsSANITIZE_JAVASCRIPT/SANITIZE_ACTIONS/SANITIZE_METADATA/SANITIZE_ANNOTATIONS/SANITIZE_OPEN_ACTIONcombine;SANITIZE_ALLapplies every strip. Closes the classic data-leak hole where redaction removes visible content but leaves metadata or hidden scripts recoverable - Added
TPDFAnnots.RemoveAnnotAction(Index)to strip the /A action dictionary from an individual annotation (used by SanitizeDocument, also useful standalone)
Version 3.182.0
Added
- Image elements returned by
EnumPageElementsnow carry their real placement rectangle (Left/Top/Right/Bottom) instead of zeros. Backed by a newTPDFContentProgram.EnumImagePlacementsmethod that walks the content stream tracking the CTM (cm/q/Q) and maps eachDooperator's 1x1 unit square into page coordinates - Added four showcase demos: DocumentProperties (DocInfo/page-box/rotation/transition/viewer-preferences/XMP round-trip), FormProperties (per-field property grid: type/value/readonly/MaxLength/MultiLine/description), SignatureValidator (enumerate signature fields + verify + signer certificate), Reader (VCL TPDFlibViewer with open/navigate/zoom/copy-text)
Version 3.181.0
Added
- Added
SetXMPPropertyexposing the existing schema-aware XMP engine (PDFlibXMP) through the public facade: set any Dublin Core (dc:), XMP Basic (xmp:), Adobe PDF (pdf:), PDF/A ID (pdfaid:), PDF/UA ID (pdfuaid:), or XMP Media Management (xmpMM:) property by namespace + key without hand-writing RDF XML - Added
ImportFormDataFromFDF/ImportFormDataFromFDFStringwhich parse an FDF /Fields array (each<< /T (name) /V (value) >>) and apply each value to the matching AcroForm field by title, inverting the EscapePDFText octal/paren escaping. Closes the asymmetric export-only gap - Added
ExportFormDataToXFDF/ExportFormDataToXFDFString/ImportFormDataFromXFDF/ImportFormDataFromXFDFStringfor XFDF (XML Forms Data Format) bidirectional interchange - the modern XML counterpart of FDF - Made the six namespace-scoped XMP setters (
SetDublinCore,SetXMPBasic,SetAdobePDF,SetPDFA,SetPDFUA,SetXMPMM) public onTPDFlibXMPso advanced callers can drive the engine directly
Version 3.180.0
Added
- Added
SearchAndReplaceTextInContentwhich performs TRUE content-stream text replacement (rewriting the Tj/TJ/'/" show-text operators in place viaTPDFContentProgram.ReplaceTextRun), unlike the existing mask-basedSearchAndReplaceTextthat only overlays a rectangle on top of the original glyphs. The original text is gone from the stream and cannot be recovered. Locates hits viaSearchText, maps each hit rect to its covering instruction viaFindInstructionsInRect, rewrites, and writes the layer back
Version 3.179.0
Added
- Added a structured internal logger (
TPDFlibLogger) in a newLib/PDFlibLogger.pasunit with four levels (Debug/Info/Warn/Error), a host callback (OnLog), an optional thread-safe file sink, and an error-code-to-message map (PDFlibErrorMessage) that finally gives the existing numeric codes (1xx/3xx/4xx/5xx) human text. Exposed onTPDFlibvia theLoggerproperty - Added
RenderPagesToFilesParallelwhich renders a page range to one file per page using aTTaskpool with oneTPDFlibinstance per worker (TPDFlib is not thread-safe) and per-threadCoInitializefor GDI+ apartment safety. Scales near-linearly with CPU cores for CPU-bound raster output
Version 3.178.0
Added
- Added
EnumCertificatesto enumerate every certificate in a Windows system store ("MY", "Root", ...) returning subject, issuer, serial number, validity window, HasPrivateKey, and Qualified (eIDAS QCStatements extension, OID 0.4.0.1862.1.7, detected via a new built-in DER decoder in PDFlibASN1) - replaces the previous single-cert-by-CNSetSignProcessCertFromStorelimitation - Added
SetSignProcessCertFromStoreByHandleto select a signing certificate by raw PCCERT_CONTEXT handle obtained from enumeration, letting callers pick by any criterion (qualified filter, validity, fingerprint) rather than only by Subject CN - Added
RedactRegionwhich truly removes text, vector paths, and image XObjects whose painted area intersects a rectangle (editing the content stream so removed content cannot be recovered, unlikeMaskRectwhich only covers it), with optional black fill and /Redact annotation. Backed by a CTM-tracking content-stream analyser in PDFlibContentModel (FindInstructionsInRect) - Added minimal DER decoder functions (
DERDecodeLength,DERFindExtensionByOID) to PDFlibASN1 for in-process certificate extension inspection without CryptDecodeObjectEx
Version 3.177.0
Added
- Added page stitching APIs that compose existing pages into new layouts via vector Form XObject capture (preserving full vector fidelity, unlike content-stream concatenation):
StitchPageOverlayoverlays one page onto another at a position with optional opacity,StitchPagesSideBySideplaces two pages left/right on a new wider page, andStitchPagesVerticallystacks a page range into a new tall poster-style page - Added a composable watermark template layer in a new
Lib/PDFlibWatermark.pasunit:TPDFlibWatermarkBasewith nine-point positioning (wpTopLeft..wpBottomRightpluswpCustom),TPDFlibTextWatermark,TPDFlibImageWatermark, andTPDFlibCompositeWatermarkwhich applies a list of sub-watermarks recursively across a shared page range - Added
TPDFlib.ApplyWatermarkas a convenience entry point that delegates to a watermark template's own page range and settings
Version 3.176.0
Added
- Added named render-output format constants (
PDF_RENDER_BMP,PDF_RENDER_EMF,PDF_RENDER_EMFPLUS,PDF_RENDER_EMF_DUAL, etc.) that map 1:1 to the integerOptionsvalues accepted byRenderPageToFile,RenderPageToStream,RenderPagesToFiles, andRenderDocumentToFile - Added
TPDFlibMetafileFormatenum and the convenience methodsRenderPageToMetafileStreamandRenderPageToMetafileFile, which accept a named metafile variant (mfEMF, mfEMFPlus, mfEMFDual, mfWMF) instead of a bare integer - Added EMF+ Dual output mode (Options value 11 / mfEMFDual), which records both GDI and GDI+ commands in the same metafile for compatibility with older GDI-only consumers
- Added
TPDFlibClipboardFormatenum andRenderPageToClipboard, which places a rendered page on the Windows clipboard as an enhanced metafile (CF_ENHMETAFILE), a DIB bitmap (CF_DIB), the page Unicode text (CF_UNICODETEXT), or all three at once - Added a new
Lib/PDFlibClipboard.pasunit with low-level Win32 clipboard placement helpers used byRenderPageToClipboard - Added full per-monitor DPI awareness to
TPDFlibViewer: a new publicScreenDPIproperty, aCreateWndoverride that auto-detects the host monitor DPI viaGetDpiForWindow(with aGetDeviceCapsfallback), and aWM_DPICHANGEDhandler that rebuilds the layout and clears the bitmap cache when the window moves between monitors - Added
TPDFRenderer.SetEMFPlusMetafileTypeto select between EMF+ Only and EMF+ Dual recording at the renderer level
Fixed
- Fixed the
RenderPageToFilereference page where the Options value list was misplaced in the Page row and the Options cell was empty
Version 3.175.3
Added
- Added a Lib/PDFlibTableExport.pas unit that renders any TDataSet (FireDAC, ClientDataSet, query result) into a paginated PDF table with styled header, zebra striping, right-aligned numeric columns, and automatic page continuation, plus a Demo/Delphi/DataSetExport console demo that loads the RAD Studio customer.FDS sample via FireDAC and exports it
Version 3.175.2
Added
- Added end-to-end Demo/ReportBridges projects that build a minimal report in FastReport, QuickReport, and ReportBuilder and export it to PDF through the matching Addons bridge, with a dedicated build-ReportBridges.cmd that supplies the engine source paths and gating symbols so the standard demo build still compiles the projects as stubs
Version 3.175.1
Added
- Added a Delphi JBIG2 options matrix demo that sweeps SymbolExtract, SkipBlackDots, BlackDotSize, and LossyLevel combinations against CCITT G4 and Flate baselines, with per-row PDF, CSV, and summary outputs
- Added a Delphi Pattern showcase demo covering axial and radial RGB shaders, a Coons-patch mesh shader, and a custom tiling pattern applied as fill, stroke, and text colour
- Added a Delphi CCITT fax matrix demo comparing Group 3 1-D, Group 3 2-D, and Group 4 compression with BlackIs1 and Interpolate option bits, reporting each output size and the resulting /Filter name
- Added FastReport, QuickReport, and ReportBuilder export bridges under Addons that render a prepared report into a PDFlibPas PDF via the engine's native object, metafile, and DrawCommand surfaces respectively
Version 3.175.0
Changed
- Expanded the WorkflowGallery demo with an annotation variant matrix that records text highlight fills, markup styles, note icons, free text, caret, and stamp annotations in companion CSV and HTML reports
Version 3.174.0
Changed
- Expanded the C++Builder AdvancedWorkflowMatrix demo to map action navigation, PDF/A and AcroForm workflows, font diagnostics, streaming delivery, and the latest scan-compression helpers into the generated matrix reports
Version 3.173.0
Added
- Added the DeliveryWorkflowMatrix Delphi demo for streamed Web and CGI PDF output, page-thumbnail validation, and watermark delivery workflows using one generated PDF byte buffer
Version 3.172.0
Added
- Added outline tree convenience APIs for ordered sibling insertion, child creation, subtree deletion, and preorder outline enumeration with parent, sibling, level, destination page, open-state, and title details
Version 3.171.0
Added
- Added the FontDiagnosticsMatrix Delphi console demo for CJK and Unicode font paths, TrueType subset updates, installed-font probes, document font enumeration, and font diagnostics reports
Version 3.170.0
Added
- Added the CanvasMigrationMatrix Delphi console demo for Canvas DC migration, raw content and path entry points, Delphi color helpers, pattern-filled text, watermarking, page thumbnail workflows, and rendered validation previews
Version 3.169.0
Added
- Added dedicated LayerCompositionMatrix, TransparencyMaskMatrix, and ComplianceFormWorkflowMatrix Delphi console demos for optional-content print/export policy, Pattern/Form XObject composition, transparency mask comparison, PDF/A-1b success and failure examples, AcroForm action workflows, appearance rebuilds, and visible signature templates
Version 3.168.0
Added
- Added dedicated ImageCompressionMatrix and SecurityPermissionMatrix Delphi console demos with generated PDF, CSV, and HTML reports for image compression strategy selection, scan compression, JPEG render quality, and encrypted permission profile auditing
Version 3.167.0
Added
- Added named helper APIs for JBIG2 bitmap encoding, EMF import options, AcroForm event actions, and chained actions so callers can use explicit option switches instead of composing integer bitmasks manually
Version 3.166.0
Added
- Added a runnable C++Builder AdvancedWorkflowMatrix console demo with PDF, CSV, and HTML outputs that map advanced canvas migration, EMF import, image compression, AcroForm, signature, security, PDF/A, optional-content, pattern, and Form XObject workflows to C++Builder project entry points
Version 3.165.0
Added
- Added a Delphi action navigation matrix demo that demonstrates open-document actions, document-level JavaScript, embedded-file links, remote GoTo links, AcroForm event actions, Submit/Reset/Hide link helpers, and chained Next actions with PDF, CSV, and HTML outputs
Fixed
- Fixed remote file link helpers so AddLinkToFile, AddLinkToFileEx, AddLinkToFileDest, and local file launch links create one annotation and return instead of looping indefinitely
Version 3.164.0
Added
- PDF/A modu kurulumu, saydamlık, harmanlama kipleri, şifreleme, JavaScript, çoklu ortam, gömülü dosyalar ve PDF/A-3 ile ilişkili dosya iş akışları için erken reddetme veya izin verilen yol kararlarını denetleyen bir Delphi PDF/A koruma matrisi demosu eklendi ve oluşturulan PDF, CSV ile HTML raporları sağlandı
Version 3.163.0
Added
- FastReport, QuickReport, ReportBuilder, DBGrid ve özel canvas dışa aktarma yolları için açık bir ReportAdapter köprü matrisi eklendi; yeniden kullanılabilir bağdaştırıcı stratejisini gösteren bir PDF sayfasının yanı sıra oluşturulan CSV ve HTML eşleme çıktıları da içerildi
Version 3.162.0
Added
- Canvas geçişi, EMF içe aktarma seçenekleri, görüntü sıkıştırma karşılaştırmaları, AcroForm işlem akışları, görünür boş imzalar, güvenlik izinleri, PDF/A-1b denetimleri, isteğe bağlı içerik, döşeme desenleri, Form XObject'ler, DBGrid tarzı tablo dışa aktarma ve büyük dosya tepe bellek raporlaması için somut çıktılar üreten gelişmiş iş akışı demosu matrisi eklendi
Version 3.161.0
Added
- Kompakt open-document action oluşturma, form alanı görünürlük olay eylemleri, TColor ve gri renk ayarlayıcıları ve direct raw content, path, text ile matrix content stream enjeksiyonu için Delphi yardımcıları eklendi
Version 3.160.0
Added
- Bitmap-to-JBIG2 taranmış görüntü sıkıştırması, tek çağrıda image mask ve color-key saydamlık kurulumu, GoTo action zincirleme ve JavaScript ya da mevcut action ataması için okunabilir AcroForm olay adları için Delphi yardımcıları eklendi; ayrıca
ImportEMFFromFileExveImportEMFFromStreamExgenişletilerekOptionsbayraklarının bitmap içe aktarmayı zorlaması, EMF renkli görüntü JPEG yeniden sıkıştırmasını etkinleştirmesi ve GDI+ işleme denetimleri istemesi sağlandı ImportEMFFromFileExveImportEMFFromStreamExgenişletilerekOptionsbayraklarının bitmap içe aktarmayı zorlaması, EMF renkli görüntü JPEG yeniden sıkıştırmasını etkinleştirmesi ve GDI+ işleme denetimleri istemesi sağlandı
Version 3.159.1
Changed
SaveToStreamve bound output stream kaydetme iyileştirildi; böylece büyük PDF stream nesneleri, her stream nesnesini tek bir ara çıktı dizgesine kopyalamak yerine sınırlandırılmış parçalar halinde yazılıyor
Version 3.159.0
Added
- Belirtilen bir resmi çizen ya da sığdıran ve ardından handle'ını hemen serbest bırakan image placement yardımcıları eklendi; tek kullanımlık görüntü üretim iş akışlarında daha düşük tepe bellek için Delphi, DLL ve ActiveX giriş noktalarıyla
- Taranmış görüntü sıkıştırma iş akışlarından önce threshold dönüşümü ve yalıtılmış black-pixel temizliğiyle 1-bit BMP oluşturma için
RenderPageToMonochromeFileExeklendi
Version 3.158.1
Added
- Yeniden kullanılabilir report-style dışa aktarma, RichEdit-to-EMF rich text içe aktarma ve page-thumbnail, annotation, form XObject, table, compression, JavaScript ile bound-stream output senaryolarını birleştiren Delphi iş akışı demoları eklendi
Version 3.158.0
Added
- Delphi, DLL ve ActiveX giriş noktalarına sahip metadata encryption control API'leri eklendi:
SetEncryptMetadataşifrelenmemiş XMP metadata stream'leriyle Standard-security PDF yazabilir,GetEncryptMetadataise bekleyen ya da yüklenmiş/EncryptMetadatadurumunu bildirir
Version 3.157.0
Added
- Delphi, DLL ve ActiveX giriş noktalarına sahip direct tiling-pattern drawing API'leri eklendi:
BeginTilingPatterngeçici bir pattern cell çizim yüzeyi oluşturur,EndTilingPatternbunu yeniden kullanılabilir bir pattern olarak kaydeder veCancelTilingPatternadlandırılmış bir pattern bırakmadan oluşturmayı iptal eder
Version 3.156.0
Added
- Delphi bound-output stream yardımcıları eklendi:
BeginOutputToStream,EndOutputStream,CancelOutputStreamveOutputStreamActive, streaming, web ve report-export kodunun bir hedefTStream'e bağlanmasına, bunu mevcut chunked writer ile bitirmesine ya da stream sahipliğini almadan bekleyen hedefi iptal etmesine izin verir
Version 3.155.0
Added
- Delphi, DLL ve ActiveX çağıranlar için
Abort,AbortedveResetAborteklendi; böylece uygulamalar bir örneği iptal edilmiş olarak işaretleyebilir ve bayrak temizlenene kadar save veya append output işlemlerinin başlamasını engelleyebilir
Version 3.154.0
Added
- Görüntü içe aktarma seçenekleri ve bellekteki kaynaklar için page-thumbnail yardımcıları, grup adına göre optional-content group arama ve durum ayarlayıcıları ile belge açılışında named destination atlaması için
SetOpenActionNamedDestinationeklendi
Fixed
GetDestNameartık açıkça belirtilen hedef dizi tanıtıcılarını çözümler, buna adlı belge açma eyleminden dönen diziler de dahildir
Version 3.153.0
Added
- Zincirlenmiş form action'lar, Hide ve ImportData field trigger'ları, başlangıç optional-content group durumları, isteğe bağlı EMF içe aktarmaları ve color-key saydam görüntü içe aktarmaları için kolaylık API'leri eklendi
Version 3.152.0
Added
- Metin çizimi için otomatik URL link oluşturma, CCITT Group 3/4 görüntü içe aktarma yardımcıları, JBIG2 direct-image yardımcıları, EMF extended import sarmalayıcıları, image mask ekleme yardımcıları, visible signature field oluşturma ve JavaScript, SubmitForm ile ResetForm iş akışları için form-field olay/action yardımcıları eklendi
Version 3.151.0
Added
- Açık kapalı dairesel ve eliptik yay çizimi için
DrawPie,DrawChord,DrawEllipticPieveDrawEllipticChordeklendi; outline, fill veya fill-and-outline kipleriyle
Version 3.150.0
Added
- Çağıranların fill transparency, stroke transparency, line width, line cap, line join ve miter-limit ayarlarını birleştiren yeniden kullanılabilir ExtGState kaynakları oluşturabilmesi için
NewGraphicsStateveSetGraphicsStateeklendi
Version 3.149.1
Fixed
- Form XObject ve miter-limit yöntemleri için yinelenen ActiveX dispatch ID'leri düzeltildi; böylece late-bound COM çağıranlar her yöntemi belirsizliğe yer bırakmadan çözümler
Version 3.149.0
Added
- Miter join kullanan yolların stroke miter-limit oranlarını denetlemek için
SetMiterLimiteklendi BeginFormXObject,EndFormXObjectveCancelFormXObject, DLL ve ActiveX API'leri üzerinden kullanıma sunuldu
Version 3.148.0
Added
- Yeniden kullanılabilir Form XObject oluşturucu API'leri eklendi:
BeginFormXObject,EndFormXObjectveCancelFormXObject, çağıranların normal page drawing calls ile yeniden kullanılabilir bir şablon çizmesine ve bunu captured-page drawing API'leri üzerinden tekrar tekrar yerleştirmesine izin verir
Version 3.147.0
Added
SetTextTilingPatternveSetLineTilingPatterneklendi; böylece captured-page tiling pattern'leri text, underline ve stroked graphics için çizim komutlarını kopyalamadan yeniden kullanılabilir
Fixed
- Çizgili shader ve döşeme deseni renkleri artık çizgi desen renk operatörünü yazıyor, çizgisiz renk durumunu güncellemek yerine
Version 3.146.0
Added
- Çağıranların mevcut content stream'i yeniden yazmadan yalnızca sonraki çizim komutlarını bir optional content group ile işaretleyebilmesi için
BeginOptionalContentveEndOptionalContenteklendi
Fixed
- Optional content, tagged PDF veya artifact scope'ları bir content stream sonunda kapandığında scope-closing marked-content operatörleri artık hemen flush edilir
Version 3.145.0
Added
- Çağıranların sonraki metin ve grafikler için fill ve stroke transparency değerlerini ayrı ayrı ayarlayabilmesi ve mevcut PDF 1.4 auto-upgrade davranışını koruyabilmesi için
SetTransparencyExeklendi
Version 3.144.0
Added
- Bir sayfa hotspot'unun bağlantı oluşturma anında hedef sayfayı çözmeden aynı belgede bir named destination'a atlayabilmesi için
AddLinkToNamedDestinationeklendi
Fixed
- Annotation action okuyucuları artık annotation olmayan sayfalar için boş bir annotation cache'e başvurmak yerine no action döndürür
Version 3.143.0
Added
- Çağıranların mevcut bir action'ı field trigger'a bağlayabilmesi, typed trigger action'ı inceleyebilmesi ve primary ya da additional field action'ları kaldırabilmesi için form-field action yönetim API'leri eklendi
Fixed
FormFieldJavaScriptActionartık PDF/A belgelerini ve geçersiz trigger adlarını reddeder, uyumsuz field action dictionary'leri yazmaz
Version 3.142.0
Added
- Çağıranların mevcut bir annotation, outline veya form-field action'a URI, named ve JavaScript next-action'ları ekleyebilmesi ve zincirlenmiş action'ları
GetActionNextCountileGetActionNextInfoüzerinden inceleyebilmesi için action chaining API'leri eklendi
Version 3.141.0
Eklendi
- Sayfa etkin noktalarının (hotspots) JavaScript olmadan standart PDF eylemleri (actions) aracılığıyla AcroForm alanlarını gönderebilmesi (submit) veya sıfırlayabilmesi (reset) için
AddLinkToSubmitFormveAddLinkToResetFormeklendi
Version 3.140.0
Eklendi
- Artımlı güncelleme (incremental update) iş akışlarının güncellemeyi önce bir
AnsiStringolarak oluşturmak yerine doğrudan çağıran tarafından sağlanan bir akışa (stream) yazabilmesi içinAppendToStreameklendi
Değiştirildi
SaveToStreamartık doğrudan hedef akışa (stream) serileştiriyor veAppendToString(1)artık orijinal kaynak baytlarını geçici bir arabelleğe kopyalamadan yalnızca artımlı güncelleme bölümünü döndürüyor
Version 3.139.0
Eklendi
- İş parçacıklı ek açıklama yanıtlarının (threaded annotation replies) genel ek açıklama özellik etiketleri (generic annotation property tags) yerine adlandırılmış okuma tarafı erişimcileri (named read-side accessors) aracılığıyla incelenebilmesi için
GetAnnotReplyToveGetAnnotReplyTypeeklendi
Version 3.138.0
Eklendi
- Birleştirilmiş yazı tipi tanılamaları (font diagnostics), görüntü örnekleme (image sampling), renk uzayı keşfi (color-space discovery), yükleme zamanlaması (load timing) ve JSON, CSV ve HTML raporları ile PDF'leri toplu olarak incelemek için Delphi
DocumentInspectionWorkbenchörneği eklendi
Version 3.137.0
Eklendi
- Sayfa görüntüsü keşfini (page image discovery), kodu çözülmüş görüntü baytlarını (decoded image bytes) ve CSV ve HTML zamanlama raporlarıyla sayfa renk uzayı keşfini (page color-space discovery) ölçmek için Delphi
ImageDecodeBenchmarkörneği eklendi
Version 3.136.0
Eklendi
- Belge yazı tipi gömmeyi (font embedding), alt kümeleri (subsetting), Standard 14, CID, Type3 ve bilinmeyen yazı tipi (unknown-font) sayılarını tek bir çağrıda özetlemek için
GetDocumentFontDiagnosticsveTPDFlibFontDiagnosticseklendi
Version 3.135.0
Eklendi
TPDFlibSignatureVerifier.VerifySignerCertificateChainartık Windows CryptoAPI ile gömülü imzalayan sertifika zincirini (embedded signer certificate chain) oluşturuyor ve yalnızca zincir Windows temel güven ilkesini (base trust policy) karşıladığındavsValiddöndürüyor, kendinden imzalı (self-signed) veya başka bir şekilde güvenilmeyen imzalayan sertifikaları iseVerifySignature'ın içerik bütünlüğü sonucunu (content-integrity result) değiştirmedenvsInvaliddöndürüyor
Version 3.134.0
Düzeltildi
TPDFlibSignatureVerifier.VerifySignatureartık eskiadbe.pkcs7.sha1imzalarını doğruluyor; imzalanan özet (signed digest), kapsanan/ByteRangebaytlarıyla eşleştiğindevsValidve kapsanan içerik (covered content) değişikliklerinden sonravsInvaliddöndürüyor
Version 3.133.0
Eklendi
- Oluşturucu (renderer) kurulumunu seçilen sayfalar genelinde yeniden kullanırken rastgele sayfa aralıklarını numaralandırılmış çıktı dosyalarına oluşturmak için
RenderPagesToFilesveDARenderPagesToFileseklendi
Version 3.132.0
Eklendi
- Bir aralıktaki her sayfaya, sol/orta/sağ hizalama ve belirteç genişletmesi (token expansion) ile (
&Pgeçerli sayfa,&Ntoplam sayfa,&Dtarih,&Tbelge başlığı,&&ersan işareti) sabit bir üst veya alt kenar boşluğunda metin yerleştirenAddPageHeaderveAddPageFooterkolaylık damgalayıcıları (convenience stampers) eklendi soUnderlayileStampTextveStampImage, artık yeni bir içerik katmanı (content layer) ekleyerek (daha öncesoOverlaygibi üste çiziyordu) içeriği mevcut sayfa içeriğinin gerçekten altına yerleştiriyor; yeni birPrependContentLayersayfa ağacı (page-tree) yöntemiyle desteklenir
Version 3.131.0
Eklendi
- Seçilen sayfanın içeriğini, her içerik katmanını bir
q sx 0 0 sy tx ty cm ... Qgrafik durumu (graphics-state) bloğuna sararak ve MediaBox ile CropBox'ı yeniden boyutlandırarak ölçekleyenScalePage(ScaleX, ScaleY, Anchor)eklendi; çapa (anchor) sol alt orijini korur (0), içeriği ortalar (1) veya sol üstü korur (2) - Yeni bir
ekPathöğe türü (element kind) ileEnumPageElementsgenişletildi: artık her sayfa aynı zamanda, yapılandırılmış içerik modeli aracılığıyla içerik akışlarından (content streams) alınan, sınırlayıcı kutu (bounding box), nokta sayısı, kapanış bayrağı (closure flag) ve boyama işleci (paint operator) ile vektör yollarını (vector paths) raporluyor
Version 3.130.0
Eklendi
- Yüklenen belgeleri yeniden kaydetmede küçülten üç dosya boyutu optimizasyonu API'si eklendi:
SubsetEmbeddedFonts, her gömülü TrueType yazı tipi programını (FontFile2), belgenin FontSub.dllCreateFontPackagehizmeti aracılığıyla gerçekte oluşturduğu Unicode karakterlerine kadar yeniden yazar;DownsampleImages(MaxDPI, Quality, Filter), hedef DPI'ın üzerindeki her görüntü XObject'inin kodunu çözer, onu (kutu (box) veya çiftdoğrusal (bilinear)) yeniden örnekler (resamples) ve JPEG veya PNG olarak yeniden kodlar;NormalizeLZWStreams, hâlâ LZWDecode ile filtrelenen her akışı (stream), Predictor parametrelerini koruyarak, mevcut LZW kod çözücü (decoder) ve Flate kodlayıcı (encoder) aracılığıyla FlateDecode'a yeniden yazar
Version 3.129.0
Eklendi
- Daha önce yalnızca okuma/ayrıştırma (read/parse) desteği olan dört gölgeleme türü (shading types) için ağ gölgeleme (mesh shading) oluşturma API'leri eklendi:
NewRGBFreeFormTriangleMesh(ShadingType 4, serbest biçimli Gouraud üçgenleri),NewRGBLatticeTriangleMesh(ShadingType 5, kafes biçimli Gouraud),NewRGBCoonsPatchMesh(ShadingType 6, Coons yama ağı) veNewRGBTensorPatchMesh(ShadingType 7, tensör ürünü yama ağı) — her biri mevcut eksenel (axial) ve radyal (radial) gölgelendiriciler gibiSetFillShader/SetLineShader/SetTextShaderile seçilebilen, seçilebilir koordinat/renk bit derinliği ve sınırlayıcı kutu ile düz bir köşe veya yama listesinden (flat vertex or patch list) adlandırılmış bir ağ gölgeleme deseni (mesh shading pattern) oluşturur
Version 3.128.0
Eklendi
- Görüntüleyici için bir küçük resim şeridi eklendi:
TPDFlibThumbnailBar, her sayfanın bir minyatürünü, satırlar görünüme kaydıkça tembel (lazy) olarak oluşturulmuş, altında sayfa numarasıyla birlikte gösterir; bir küçük resme tıklamak, ekli görüntüleyiciyi o sayfaya atlatır — görüntüleyici kontrol ailesini tamamlar (görüntüleyici, yer imi paneli, arama paneli, küçük resimler)
Version 3.127.0
Eklendi
- Görüntüleyici için bir arama paneli eklendi:
TPDFlibSearchPanel.RunSearchekli belgenin tamamını arar ve her isabet (hit) için sayfa numarası ve eşleşen metinle birlikte bir satır listeler; bir isabete tıklamak, görüntüleyiciyi o sayfaya atlatır
Version 3.126.0
Eklendi
- Görüntüleyici için bir yer imi paneli eklendi:
TPDFlibOutlineViewerbelge anahat (outline) ağacını girintili olarak listeler ve tıklandığında ekli görüntüleyiciyi (AttachVieweraracılığıyla) bir yer iminin hedef sayfasına atlatır; daha sonra yan panellerin paylaşacağı yeniden kullanılabilir bir panel temel sınıfı (base class) üzerine inşa edilmiştir
Version 3.125.0
Eklendi
- Görüntüleyici kontrolüne metin seçimi eklendi: seçmek için sol fare tuşuyla sürükleyin, seçimi panoya kopyalamak için Ctrl+C tuşlarına basın veya
CopySelectedTextçağrısını kullanın; yakalanan metin, şeritler (bands) arasında satır sonlarıyla birlikte yukarıdan aşağıya doğru sıralanmışSelectedTextözelliği aracılığıyla kullanılabilir - Doğrudan dikdörtgen bir sayfa bölgesinin metnini döndüren
GetTextInRegioneklendi — özel seçim arayüzleri için kullanılabilen, fare seçiminin kullandığı aynı blok tabanlı arama
Version 3.124.0
Eklendi
- Görüntüleyici kontrolü artık komşu sayfaları bir arka plan iş parçacığında (thread) önceden oluşturur, böylece ileri veya geri sayfalama sonraki sayfayı anında gösterir; işçi (worker) kendi belge örneğini (instance) kullanır ve bitmiş işlemeleri UI'yi (kullanıcı arayüzünü) engellemeden önbelleğe teslim eder
- Görüntüleyiciye bağlantı etkileşimi eklendi: bir bağlantı ek açıklamasına (link annotation) tıklamak, sayfa numarası ve
GetAnnotActionInfo'nun ürettiği aynı türlendirilmiş eylem özeti (web adresi, belge hedefi, adlandırılmış eylem vb.) ileOnLinkClick'i tetikler;LinkActionAtPagePointözel işleme için temel isabet testini (hit test) ortaya çıkarır
Version 3.123.0
Eklendi
- Görüntüleyici kontrolü sürekli kaydırma kazandı:
SetDisplayMode,TPDFlibViewer'ı tek sayfa görünümü ile tüm belge boyunca sürekli dikey kaydırma arasında değiştirir, yalnızca görünüm alanında (viewport) görünen sayfalar oluşturulur ve geçerli sayfa kaydırma konumunu izler (sayfalar görünüme girdikçeOnPageChange'i tetikler) - Oluşturulan sayfalar artık en son kullanılan (least-recently-used) bitmap önbelleğinde tutulur, bu nedenle ileri geri kaydırma yeniden oluşturma gerektirmez; bellek bütçesi varsayılan olarak 128 MB'tır ve
SetCacheLimitile ayarlanır, bütçe daraldığında veya dolduğunda en eski sayfaları çıkarır - Görüntüleyiciye fare tekerleği kaydırması ve klavye gezintisi eklendi: PageUp/PageDown (tek sayfa modunda sayfa adımları, sürekli modda görünüm alanı adımları), ok tuşları, Home ve End
Version 3.122.0
Eklendi
- Etkileşimli bir PDF görüntüleyici kontrolü eklendi:
TPDFlibViewer, dosyadan bir belge açan veya mevcut birTPDFlibörneğine (instance) eklenen, sayfaları seçilen işleme motoru (GDI+, Cairo veya PDFium) aracılığıyla görüntüleyen, sayfa gezintisi (birOnPageChangeolayıyla birlikteGoToPage/NextPage/PrevPage) ve yakınlaştırma (zoom) kontrolü sunan VCL kaydırma (scrolling) kontrolüdür — sabit bir yüzde, genişliğe sığdır (fit-to-width) veya sayfaya sığdır (fit-to-page), kontrol yeniden boyutlandırıldığında otomatik olarak yeniden hesaplanır; görünüm alanından daha geniş olan sayfalar kaydırılır, daha dar sayfalar ortalanır - Kontrolü, IDE'de sürükle ve bırak kullanımı için losLab PDF paleti sayfasına kaydeden bir tasarım zamanı (design-time) paketi (
Package\PDFlibViewerPkg.dpk) eklendi
Version 3.121.0
Eklendi
DrawText'te otomatik karmaşık komut dosyası (complex-script) şekillendirmesi: Arapça, İbranice, Hintçe veya diğer karmaşık komut dosyası karakterleri içeren metinler artık algılanır ve otomatik olarak şekillendirilir — bağlamsal harf formları, zorunlu ligatürler ve sağdan sola sıralama, hiçbir kod değişikliği olmadan doğru şekilde çıkar; standart-14 adları, metrik uyumlu yüklü yüzleriyle eşleşir (Helvetica, Arial'a; Times, Times New Roman'a; Courier, Courier New'a) veGetTextWidthaynı şekillendirme geçişiyle (pass) ölçer, böylece hizalama tutarlı kalır; Latince, Kiril, Yunanca ve CJK metinleri mevcut çizim yolunu bayt bayt korur- Otomatik yönlendirmeyi değiştirmek için
SetTextShapingeklendi (varsayılan olarak etkindir; tam şekillendirme öncesi davranışı geri yüklemek için 0 iletin)
Version 3.120.0
Değiştirildi
- Şekillendirilmiş metin (shaped-text) yardımcı yazı tipleri artık kaydetme zamanında yalnızca belgenin gösterdiği gliflere alt kümelenir (subsetted), çıktı dosyalarını önemli ölçüde küçültür (bir megabaytın üzerindeki tam bir yazı tipi programı kullanılan gliflere düşürülür); alt kümeli yazı tipi glif numaralandırmasını korur, alt küme etiketli bir
BaseFontadı ile gerçek glif başına (per-glyph)/Wgenişlikleri taşır ve her şekillendirilmiş glifi kaynak karakterlerine geri çeviren bir ToUnicode haritası kazanır — böyleceDrawShapedTextçıktısını kopyalamak veya çıkarmak, bir lam-alef ligatürünün arkasındaki iki harf dahil olmak üzere orijinal dizeyi döndürür
Version 3.119.0
Eklendi
- Karmaşık komut dosyası metin çizimi eklendi:
DrawShapedTextArapça, İbranice ve diğer karmaşık komut dosyası dizelerini çizmeden önce şekillendirir — bağlamsal harf formları, lam-alef gibi zorunlu ligatürler ve sağdan sola sıralamanın tümü doğru şekilde çıkar — ve şekillendirilmiş glifleri tam yazı tipi programını gömen yardımcı bir Type0 (Identity-H) yazı tipi aracılığıyla yazar, böylece kendi karakter koduna sahip olmayan formlar tam olarak oluşturulur; her yüz (face) için bir yardımcı yazı tipi oluşturulur ve çağrılar arasında yeniden kullanılır - Ligatürlü metnin gerçek çizim genişliğinde ölçülebilmesi için metni aynı şekillendirme geçişiyle (pass) ölçen
GetShapedTextWidtheklendi — şekillendirilmiş paragrafları sağa hizalamak veya ortalamak için kullanın
Version 3.118.0
Eklendi
- Karmaşık komut dosyası metin şekillendirme için temel eklendi: yeni bir Uniscribe (usp10.dll) bağlayıcısı, Arapça, İbranice ve diğer karmaşık komut dosyası dizelerini doğru sıralanmış ve şekillendirilmiş glif çalışmalarına dönüştürür — bağlamsal Arapça formlar, lam-alef gibi zorunlu ligatürler ve sağdan sola sıralama — her glifin yazı tipi glif indeksini, ilerleme ve kaynak karakter kümesini raporlar; bu, sonraki sürümlerin çizim yolunu oluşturduğu şekillendirme motorudur ve Uniscribe'ı olmayan platformların yalnızca mevcut karakter başına yolu tutması için tembel (lazy) olarak yüklenir
Version 3.117.0
Eklendi
- ICC profili iç gözlemi eklendi:
GetOutputIntentICCInfo, belgenin OutputIntent'ine ekli ICC profilini ayrıştırır ve sürümünü, cihaz sınıfını, veri renk alanını, profil bağlantı alanını, oluşturma amacını ve bileşen sayısını bildirir — PDF/A ve PDF/X dosyalarının yazdırma durumunu incelemek için kullanışlıdır; oluşturucunun ICCBased renk alanı işlemesi, artık bir gölgelendirmenin renk alanının/Alternateveya/Ntaşımadığı durumlarda bileşen sayısını doğrudan profil başlığından alır
Version 3.116.0
Eklendi
- Tabloya duyarlı metin çıkarma modu eklendi:
GetPageTextseçenek 10, sayfanın metin bloklarının sol kenarlarını küresel sütun konumlarına göre kümelendirir ve sekmeyle ayrılmış satırlar yayar, böylece tablo düzenleri, içe aktarılmaya hazır TSV olarak çıkarılır ve dikey olarak hizalanmış hücreler satırlar boyunca hizalı kalır
Version 3.115.0
Eklendi
- Sayfa yerleştirme (imposition) eklendi:
ImposePagesNUp, belgenin her sayfasını canlı vektör içeriği olarak hücresinde merkeze ve en boy oranına sığacak şekilde, n-up ızgarasında (2-up, 4-up, 9-up veya herhangi bir Sütun x Satır düzeni) yeni sayfalara yerleştirir, veya — kitapçık seçeneği ile — çift taraflı yazdırıldığında ve istiflendiğinde sayfa eşleştirmesi bir kitapçık oluşturacak şekilde katlanan tel dikişli sayfalar üretir
Version 3.114.0
Eklendi
- Yazılı eylem okuyucuları
GetAnnotActionInfoveGetOutlineActionInfo, dört eylem türüne daha genişletildi — Hide (gizli hedef sayısı ve gizle/göster bayrağı ile), SubmitForm (gönderim URL'si ve alan sayısı), ResetForm (alan sayısı) ve ImportData (kaynak dosya) — ve Adlandırılmış eylemlerin (ör.NextPage) ad yükünü (payload) ortaya çıkarmak için; her iki okuyucu da artık aynı ayrıştırıcıyı (parser) paylaşıyor, böylece ek açıklama bağlantıları ve yer imleri aynı bilgileri raporluyor
Version 3.113.0
Eklendi
- Form alanı biçimlendirme yardımcıları eklendi:
SetFormFieldNumberFormat(ondalık basamaklar, ayırıcı stili, negatif stil ve para birimi yerleşimi),SetFormFieldPercentFormatveSetFormFieldDateFormat(örneğinmm/dd/yyyygibi Acrobat tarih resim dizeleri) her biri, alanın ek eylemlerine (additional actions) standart Acrobat biçimlendirme JavaScript çiftini yazar — bir tuş vuruşu filtresi artı bir ekran biçimlendiricisi — böylece uyumlu görüntüleyiciler, elle yazılmış JavaScript olmadan girdiyi doğrular ve biçimlendirilmiş değerleri oluşturur
Version 3.112.0
Eklendi
- Ses ek açıklaması oluşturma eklendi:
AddSoundAnnotationFromFilesıkıştırılmamış bir PCM WAV dosyasını (8 veya 16 bit, mono veya stereo) okur ve örneklerini, PDF ses mekanizmasının beklediği imzalı kodlamada/Soundakışı olarak bir hoparlör simgesi ek açıklamasının arkasına yerleştirir, gidiş-dönüş işlemini mevcutGetAnnotSoundToFile/GetAnnotSoundToStringokuyucuları ile tamamlar
Version 3.111.0
Eklendi
- İş parçacıklı ek açıklama yanıtları eklendi (ISO 32000-1 §12.5.6.3):
AddAnnotationReply, mevcut herhangi bir ek açıklamaya,/IRTdeğeri hedefi/RTyanıt ilişkisi ile referans alan gizli bir Metin ek açıklaması olarak bir yanıt ekler, böylece Acrobat ve diğer görüntüleyiciler onu yorum panelindeki hedefin altında iş parçacıklı olarak gösterir; eksiksiz ortak çalışma inceleme (collaborative-review) gidiş-dönüşleri içinAddAnnotationStateve FDF yorum değişimi ile birleştirin
Version 3.110.0
Eklendi
- Tüm yedi PDF gölgelendirme türünün (shading types) kapsamını tamamlayan ağ (mesh) ve işlev tabanlı gölgelendirme oluşturma eklendi: serbest biçimli Gouraud üçgen ağları (tür 4), kafes biçimli Gouraud ağları (tür 5), Coons yama ağları (tür 6) ve tensör ürün yama ağları (tür 7) bit paketli veri akışlarından çözülür — paylaşılan kenar yama bayrakları,
/Decodedeğer eşlemesi ve isteğe bağlı renk/Functionrampaları dahil — ve Cairo motorunun yerel ağ degradeleri ile boyanır; işlev tabanlı gölgelendirmeler (tür 1), gölgelendirme işlevinin alan üzerinden ince bir yama ızgarasına örneklenmesiyle yaklaşık olarak hesaplanır; desteklenen renk uzayları DeviceRGB, DeviceGray, DeviceCMYK ve ICCBased alternatiflerini kapsar (GDI+ motorunun ağ degrade temel öğesi (primitive) yoktur ve ağ gölgeli alanları boyanmamış bırakır)
Version 3.109.0
Eklendi
- İçerik düzenleme çerçevesini (aşama 4) metin düzeyinde düzenleme ile tamamlandı:
TPDFContentProgram.GetTextRuns, bir sayfanın metin gösterme talimatlarını, her birinde etkin olan yazı tipi kaynağı ve boyutuyla numaralandırır (kaydetme/geri yükleme yerleştirmesi yoluyla yazı tipi durumunu izler), veReplaceTextRungösterilen metni yerinde değiştirir — eski metni maskeleyen ve üstüne yeniden çizen kaplama (overlay) tabanlı yaklaşımların aksine, orijinal konumu, yazı tipini ve rengi koruyan gerçek bir içerik-akışı (content-stream) değişimi
Version 3.108.0
Eklendi
- İçerik düzenleme çerçevesine (aşama 3) sayfa geometrisi için bir nesne modeli eklendi:
TPDFContentProgram.LiftPath, bir yol (path) nesnesini (taşı/çizgi/eğri/dikdörtgen yapılandırma işleçleri artı onu sonlandıran kırpma ve boyama işleçleri) alt yollar ve parçalardan oluşan düzenlenebilir birTPDFPath'e yükseltir;TPDFPath.Transformher noktaya (mevcut çizimleri taşıma, ölçekleme, döndürme veya eğme) bir afin (affine) matrisi uygular;LowerPath, değiştirilen geometriyi orijinal talimatların üzerine geri yazar,WritePageContentLayeriçin hazır hale getirir
Version 3.107.0
Eklendi
- İçerik düzenleme çerçevesi (aşama 2),
TPDFContentProgramüzerindeki talimat düzeyinde kolaylıklarla genişletildi:InsertFromSourcebir içerik parçacığını ayrıştırır ve talimatlarını herhangi bir konumda birleştirir (splice);SetOperandtek bir işleneni kaynak sözdiziminden (source syntax) yeniden yazar (bir koordinatı yeniden numaralandırır, bir dolguyu yeniden renklendirir);OperandTextbir işleneni geri okur;InstructionGroup,FindNextOpveFindNextGroup, operatöre veya ISO 32000-1 operatör kategorisine göre talimat listesinde gezinir
Version 3.106.0
Eklendi
- Yapılandırılmış içerik düzenleme çerçevesinin ilk aşaması eklendi:
ParsePageContentLayer, bir sayfa içerik katmanının kodunu, düzenlenebilir birTPDFContentProgram'a (kodu çözülmüş işlenen nesneleriyle birlikte her bir PDF içerik operatörü (ISO 32000-1 Tablo 51'deki 73 operatörün tümü) olan bir talimat listesine) çözer, veWritePageContentLayerprogramı tekrar sayfaya serileştirir, böylece arayanlar çizim talimatlarını ayrıştırabilir, inceleyebilir, silebilir veya yeniden sıralayabilir ve sayfayı yeniden yazabilir;GetPageContentLayerCount, bağımsız olarak düzenlenen içerik katmanlarının sayısını bildirir; yayıcı davranışı koruyan yapıdadır (değiştirilmemiş bir gidiş-dönüş piksel olarak aynı oluşturur), bilinmeyen operatörler değişmeden hayatta kalır ve satır içi (inline) görüntüler aynen (verbatim) taşınır
Version 3.105.0
Eklendi
- Okuma sırası metin çıkarma modu eklendi:
GetPageTextseçenek 9, özyinelemeli (recursive) boşluk analizini (XY-cut) kullanarak sayfa metnini görsel okuma sırasına göre döndürür, böylece çok sütunlu düzenler sütun sütun çıkar — önce tam genişlikte bir başlık, sonra tüm sol sütun, sonra sağ sütun — geometrik üst-sonra-sol sıralamalarının yaptığı gibi sütunları satır satır birbirine örmek yerine
Version 3.104.0
Eklendi
- İmza doğrulayıcıya (signature verifier) imzalayan-sertifikası iç gözlemi eklendi:
GetSignerCertificate, ilk imza alanının PKCS#7 yükünü çözer ve gömülü imzalayan sertifikasının türüne göre yazılmış (typed) bir özetini döndürür — konu ve yayınlayan görünen adları, geleneksel onaltılık (hex) formdaki seri numarası, UTC geçerlilik penceresi (NotBefore/NotAfter) ve sertifikanın şu anda o pencere içinde olup olmadığını bildiren bir kolaylık bayrağı; imzalayan, gömülü sertifikalar arasında yayınlayan ve seri numarasına göre eşleştirilir
Version 3.103.0
Eklendi
NewRGBRadialShadereklendi,NewRGBAxialShader'in radyal karşılığı: iki RGB rengi arasında harmanlanan (blending), dairelerin ötesine isteğe bağlı renk uzantısı olan, adlandırılmış iki daireli radyal degrade (ShadingType 3, ISO 32000-1 §8.7.4.5.3) kaydeder; dairesel "parlama" dolguları, vuruşları (strokes) ve metni boyamak için mevcutSetFillShader,SetLineShaderveyaSetTextShaderile seçin
Version 3.102.0
Eklendi
- Radyal (ShadingType 3) degrade (gradient) oluşturma eklendi (ISO 32000-1 §8.7.4.5.4): sayfa oluşturucu artık, daha önce desteklenen eksenel (ShadingType 2) degradelere (gradients) ek olarak,
shoperatörleri ve gölgelendirme-desen dolguları tarafından kullanılan iki daireli radyal gölgelendirmeleri boyamaktadır; çok duraklı (multi-stop) renk işlevleriyle GDI+ ve Cairo raster (tarama) motorlarının her ikisi aracılığıyla da desteklenir, DeviceRGB/DeviceCMYK/DeviceN/Separation/ICCBased renk alanları ve/Extendkullanımı desteklenir
Version 3.101.0
Eklendi
- Bulutlu (cloudy) kenarlık efektleri eklendi (ISO 32000-1 §12.5.4):
SetAnnotCloudyEffect, yoğunluğu (intensity) Acrobat'ın Bulutlu stilleriyle eşleşen 1 veya 2 olacak ve 0 efekti tekrar kaldıracak şekilde/BEkenarlık efekti sözlüğünü yazarak Kare, Daire, Çokgen (Polygon) veya Serbest Metin (FreeText) ek açıklamasının kenarlığını bağlı yarım dairelerden oluşan bir "revizyon bulutuna" dönüştürür;GetAnnotCloudyEffectayarı geri okur (0 = bulut yok, aksi takdirde 1..2 yoğunluk)
Version 3.100.0
Eklendi
- Ek açıklama (annotation) inceleme durumları eklendi (ISO 32000-1 §12.5.6.3):
AddAnnotationState, hedefi işaret eden/IRTve durumu taşıyan/State+/StateModelile gizli bir Metin ek açıklaması ekleyerek, Acrobat'ın yorum-inceleme iş akışı (comment-review workflow) tarafından kullanılanReviewmodelini (Yok (None) / Kabul Edildi (Accepted) / Reddedildi (Rejected) / İptal Edildi (Cancelled) / Tamamlandı (Completed)) veMarkedmodelini (İşaretsiz (Unmarked) / İşaretli (Marked)) destekleyerek mevcut bir ek açıklama için bir inceleme durumu değişikliğini kaydeder;GetAnnotStateveGetAnnotStateModelkaydedilen dizeleri herhangi bir ek açıklamadan geri okur (yoksa boştur)
Düzeltildi
- Son geliştirme sürümleriyle oluşturulmuş uygulamaların başlamasını engelleyen bir yükleme zamanı arızası düzeltildi (bir Windows sertifika-adı araması var olmayan bir DLL giriş noktasına (entry point) bağlanmıştı) ve FDF yorum içe aktarımı, sayfa aralığı döndürme (page-range rotation) ve imza-bayrağı yollarındaki derleme gerilemeleri (regressions) onarıldı
Version 3.99.0
Eklendi
- Belge parmak izi ve geçiş okuma API'leri eklendi:
GetDocumentFileIDtreyler/IDdizisinden (onaltılık kodlanmış ilk öğe) kalıcı belge tanımlayıcısını döndürür, kararlı bir önbellek anahtarı veya belge parmak izi olarak kullanışlıdır;GetPageTransition,SetPageTransition'ın okuma tarafı karşılığıdır, geçiş stilini türlendirilmiş birTPDFlibPageTransitiondeğeri artı görüntüleme süresi ve geçiş süresi olarak, depolanan/Trans/S,/Dmve/Mgirdilerini ters eşleyerek döndürür
Version 3.98.0
Eklendi
- Sayfa aralığı döndürme ve küçük resim iç gözlemi eklendi:
RotatePageRangebir aralıktaki her sayfaya 0/90/180/270 döndürme uygular (çağıranların artık sayfa başına bir döngüye ihtiyaç duymaması için mevcut tek sayfalıkRotatePageişlevini sarar);HasPageThumbnailbir sayfanın/Thumbgirdisi taşıyıp taşımadığını bildirir;GetPageThumbnailInfoküçük resim XObject’inin genişliğini, yüksekliğini ve bileşen başına bit sayısını okur
Version 3.97.0
Eklendi
- Genişletilmiş ek açıklama özelliği okuyucuları eklendi:
GetAnnotColor/Crenk dizisini okur (0..1 RGB, HasColor bayrağı “açık bir renk yok” durumunu “açık siyah” durumundan ayırır);GetAnnotBorderWidth/BS /Wokur ve eski/Borderdizisine geri döner;GetAnnotOpacity/CAvuruş alfasını okur (varsayılan 1.0);GetAnnotCreationDate/CreationDatezaman damgasını okur;GetAnnotFlags/Fgörünürlük/yazdırma bayrakları baytını okur
Version 3.96.0
Eklendi
- Okuma tarafı güvenlik iç gözlem API'leri eklendi:
IsEncryptedyüklenen belgenin bir/Encryptsözlüğü taşıyıp taşımadığını bildirir;GetEncryptionLevelyazma tarafı şifreleme seçenekleriyle eşleşen türlendirilmiş bir güç (0=none, 1=RC4-40, 2=RC4-128, 3=AES-128, 4=AES-256, 5=AES-256 Acrobat X) döndürür;GetUserPermissionsdoğrudan bit testi için ham/Pizin sözcüğünü döndürür;IsOwnerPasswordbelgenin sahip kimlik bilgisiyle açılıp açılmadığını bildirir
Version 3.95.0
Eklendi
- Gelişmiş yazdırma ve metin değiştirme eklendi:
PrintDocumentAdvancedkopyalar/harmanlama üzerine türlendirilmiş birTPDFlibPrintSettingskaydı aracılığıyla tam yazıcı DEVMODE (çift yönlü, yönlendirme, renk, baskı kalitesi, kağıt boyutu, kağıt tepsisi) değerlerini yönlendirir, mevcut özel yazıcı profil mekanizması aracılığıyla her varsayılan olmayan alanı uygular;SearchAndReplaceTextbir sayfa aralığında bir arama yürütür ve her eşleşme için, orijinal metin bloğunu opak beyaz bir dikdörtgenle maskeler ve PDFtoolkit SearchAndReplace'in kaplama-değiştirme davranışını yansıtarak, çağıranın seçtiği yazı tipinde blok başlangıcında yedek metni yeniden çizer
Version 3.94.0
Eklendi
- Ek açıklama FDF değişimi eklendi (Acrobat “Yorumları Dışa Aktar/İçe Aktar”):
ExportAnnotationsToFDFStringveExportAnnotationsToFDFher sayfanın/Annotsdizisini dolaşır ve her ek açıklamayı,/Subtype,/Contents,/Rect,/Tyazar etiketi,/Subjve 0 tabanlı/Pagedizinini taşıyan bir FDF/Annotsdizisi içinde bir/Type /Annotgirdisi olarak serileştirir;ImportAnnotationsFromFDFStringveImportAnnotationsFromFDFböyle bir FDF'yi küçük bir durum makinesi ile ayrıştırır ve her girdiyi, yapışkan nota indirgemek yerine tam ek açıklama sözlüğünü koruyarak, eşleşen sayfada yeni bir ek açıklama olarak yeniden oluşturur
Version 3.93.0
Eklendi
- İmza sertifikası ve form alanı özelliği API'leri eklendi:
SetSignProcessDocMDP, 1/2/3 seviyesinde (değişiklik yok / form doldurma / ek açıklamalar) bir DocMDP/Referencedönüşümü ekleyerek ve AcroForm/SigFlagsAppendOnly bitini ayarlayarak, bir imza süreci tarafından üretilen sonraki imzayı sertifikalandırıcı (yazar) bir imzaya dönüştürür;GetSigFlags/SetSigFlagsham AcroForm/SigFlagsbaytını doğrudan okur ve yazar;GetFormFieldIsComb,GetFormFieldIsMultiLine,GetFormFieldJustificationveGetFormFieldAllowedValues, alan başına/Ffstil bitlerini,/Qmetin hizalamasını ve/Optseçim dizisini türlendirilmiş değerler olarak ortaya çıkarır
Version 3.92.0
Eklendi
- Ek dışa aktarma ve form alanı kolaylık API'leri eklendi:
SaveAllAttachmentsbirleşik ek listesini (belge düzeyinde/EmbeddedFilesartı sayfa başına/FileAttachmentek açıklamaları) dolaşır ve her akışı dosya belirtim adı altında bir dizine yazar, çakışmaları sayısal bir son ek ile giderir;RemoveFormFieldByNametam nitelikli bir alan adını dizinine çözümler ve onu siler;RenameFormFieldayrı bir dizin araması olmadan bir alanı ismine göre yeniden adlandırır
Version 3.91.0
Eklendi
- Belge çapında numaralandırma API'leri eklendi:
EnumDocumentFontsher Font sözlüğünü dolaşır (gerekirse önceFindFonts'u çağırarak) ve yazı tipi başına nesne numarası,/BaseFontadı, türü, kodlaması ve gömme/alt küme durumuyla birlikte birTPDFlibDocumentFontdöndürür, bu da her girdiyiSelectFontile seçme ve skaler alıcıları sorgulama ihtiyacını ortadan kaldırır;EnumAttachmentsbelge düzeyindeki/EmbeddedFilesad ağacını, her girdinin kaynağını, 1 tabanlı kaynak dizinini, dosya adını, MIME alt türünü, açıklamasını ve bayt boyutunu kaydederek sayfa başına/FileAttachmentek açıklamalarıyla tek birTPDFlibAttachmentlistesinde birleştirir
Version 3.90.0
Eklendi
- Ek açıklamalar, yer imleri ve belge sürümü için salt okunur iç gözlem API'leri eklendi:
GetPDFVersionetkili PDF sürüm dizesini döndürür (örn.1.7);GetAnnotType,GetAnnotTitle,GetAnnotSubject,GetAnnotContentsEx,GetAnnotModifiedDate,GetAnnotNameveGetAnnotRectEx, mevcutAnalyseAnnotönbelleği üzerinden ek açıklama başına alanları adlandırılmış sarmalayıcılar olarak ortaya çıkarır (böylece çağıranların artık sihirli özellik Tag numaralarına ihtiyacı kalmaz);GetOutlineLevelbir yer iminin anahat köküne göre derinliğini döndürür veGetOutlineIsOpenbir görüntüleyicide genişletilip genişletilmediğini bildirir (negatif/Countdaraltılmış anlamına gelir), bir yer imi panelinin işleyeceği düzen durumunu yansıtır
Version 3.89.0
Eklendi
- Added a JBIG2 image encoder unit
PDFlibJBIG2Enc(TPLJBIG2Encoder.EncodeToByteArray), ported from the HotPDF sibling product, with two backends: on Win64 the C++jbig2encarithmetic coder (ITU-T T.88) is linked statically viaPDFlibJBIG2EncC+HPDFCLibs(228 leptonica/jbig2enc objects underthirdparty/Win64x/) and registered as the default backend, matching HotPDF's production path; on other targets, or whenUseExternalEncoderis False, a pure-Pascal MMR fallback compresses bi-level scanlines with the CCITT G4 encoder and wraps them in JBIG2 segment headers (page-info type 48 + immediate generic-region type 38) - Added an LZW encoder unit
PDFlibLZWEnc(TPLLZWEncoder.Compress), the encoder counterpart to the existingPDFlibLZWdecoder: produces a PDF-spec/LZWDecodestream with 9..12-bit variable-width codes, ClearCode/EOI and PDF-default EarlyChange semantics, plus optional TIFF Predictor 2 (horizontal differencing) so a round-trip through the decoder reproduces the original bytes
Version 3.88.0
Eklendi
- Added a CCITT Group 3 / Group 4 (T.6) bi-level image encoder unit
PDFlibCCITTEnc(TPLCCITTEncoder), the encoder counterpart to the existingPDFlibCCITTdecoder: it encodes apf1bitbitmap to a CCITT G3 1D / G3 2D / G4 (T.6) byte stream viaCompressImage/Execute, ported from the HotPDF sibling product (both share the losLab license); this supplies the missing encoder so monochrome image data can be produced forCCITTFaxDecodeoutput, with full image-pipeline andRenderPageToMonochromeFileG4-output integration to follow
Version 3.87.0
Eklendi
- Implemented cryptographic signature verification for detached PKCS#7 signatures:
TPDFlibSignatureVerifier.VerifySignature(previously a stub returningvsUnknown) now recomputes the document digest over the two/ByteRangesegments and validates it against the signedmessageDigestattribute and the signer's public key via the Windows CryptoAPI (CryptVerifyDetachedMessageSignature), returningvsValid/vsInvalidforadbe.pkcs7.detachedandETSI.CAdES.detachedsubfilters; this is the first verification layer and covers digest+signature integrity only (certificate chain, CRL/OCSP revocation and RFC 3161 timestamp-token validation remain out of scope and will be added in later layers)
Version 3.86.0
Eklendi
- Added a merge-time per-bookmark callback: the
OnMergeOutlineevent fires for each top-level source outline whileMergeFileList/MergeFileListFast/MergeFileListStrictlinks the merged outline tree, letting the caller rename (Title) or drop (Skip=True) an incoming bookmark before it lands in the target document; the callback receives the 0-based source document index so callers can apply per-document policies
Version 3.85.0
Eklendi
- Added signing from the Windows system certificate store:
SetSignProcessCertFromStoreresolves the signing certificate from a named store ("MY"/"Root"/...) by Subject simple-display name (typically the CN, matched case-insensitively; an empty name picks the first certificate that has a private key) and reuses the existing PKCS#7 sign pipeline, so a document can be signed without supplying a.pfx/.p12file; pair it withSetSignProcessKeysetto chooseCURRENT_USER(1) vsLOCAL_MACHINE(2)
Version 3.84.0
Eklendi
- Added font program embedding for already-loaded documents:
EmbedMissingFontswalks every Font dictionary, reads the matching installed system font program by BaseFont name and writesFontFile2orFontFile3back, returning the number of fonts that gained a program;EmbedFontProgramembeds a single font by name using the installed system font;EmbedFontProgramFromFileembeds a single font using a caller-supplied.ttfor.otffile for fonts not installed on the system - Added
SetEmbedAllFonts, a writer-side guard that promotesAddTrueTypeFontEmbed=0toEmbed=1so newly created documents cannot accidentally reference non-embedded system fonts outside PDF/A mode as well
Version 3.83.0
Eklendi
- Yeni işleme kolaylık API'leri:
RenderPageToMonochromeFilesayfayı 1 bit tek renkli bitmap olarak işler (faks/arşiv/OCR senaryoları), işleme çekirdeğini değiştirmeden GDI yarım ton titreşimi yoluyla 24 bit'ten düşürür;RenderPageRegionToFileyalnızca belirtilen alt dikdörtgeni (“Left,Top,Width,Height”) bitmap olarak işler, önceden kopuk olanRenderPageToDCClipClip ardışık düzenini bağlar
Version 3.82.0
Eklendi
- FDF form veri dışa aktarımı eklendi:
ExportFormDataToFDFgeçerli belgenin tüm form alanı adlarını ve değerlerini bağımsız bir FDF dosyasına yazar (%FDF-1.2ile sarılmış/Fieldsdizisi),ExportFormDataToFDFStringaynı yapıda bir dize döndürür, böylece form verilerinin PDF'den ayrı olarak depolanması veya daha sonra birleştirilmesi kolaylaşır; ASCII olmayan baytlar ISO 32000-1 üç basamaklı sekizli sistemine göre kaçış dizisine dönüştürülür
Version 3.81.0
Eklendi
- Yeni sayfa ve yapı kolaylık API'leri:
SetPageTransitionbelirtilen sayfaya sunum geçiş efektleri (/Transsözlüğünün Split/Blinds/Wipe/Dissolve/Glitter vb. dâhil 17 standart geçişi) ve sayfa görüntüleme süresi yazar;GetPageFontCount,GetPageFontIDbelirtilen sayfanın başvurduğu yazı tiplerini numaralandırır;SetMeasurementUnittürü belirlenmiş birim numaralandırmasını kabul eder (orijinal piksel/milimetre/inç'e ek olarak twips ve points ekler), eşlik edenConvertToPoints,ConvertFromPointsbirim dönüştürme yardımcılarıyla;SaveToFileOptionssıkıştırma, doğrusallaştırma ve değişiklik tarihini koruma gibi kaydetme seçeneklerini tek bir kayıtta toplar
Version 3.80.0
Eklendi
- Yeni güvenlik ve imza kolaylık API'leri:
EncryptFileExham izin biti tam sayısı yerine türü belirlenmiş adlandırılmış izin kümelerini (TPDFlibUserPermissions, düşük çözünürlüklü yazdırma ile yüksek çözünürlüklü yazdırma vb. arasında ayrım yapan 8 adlandırılmış izin biti) kabul eder;TPDFlibSignatureVerifier.GetSignatureMetadataalan adını, Filter, SubFilter, imzalama zamanını, nedenini, konumunu, iletişim bilgilerini, imzalayanı ve ByteRange yapı doğrulamasını PKCS#7 kod çözmesine gerek kalmadan doğrudan imza sözlüğünden okur;PrintDocumentExtek bir çağrıda yazdırma kopyalarını ve harmanlama modunu belirtir
Version 3.79.0
Eklendi
- Yeni düzenleme kolaylık API'leri:
MaskRectbelirtilen sayfada alanı kaplayan (maskeleme/redaksiyon) opak dolu bir dikdörtgen çizer;SetPageThumbnailFromFileiçerik akışı çizim durumunu kirletmeden doğrudan bir görüntü dosyasından sayfa/Thumbsözlüğünü bağlar;FlattenFormFieldsOnPageRangesayfa aralığına göre tüm form alanlarını düzleştirir (görünüm statik içeriğe dönüştürülür ve etkin alanlar kaldırılır);InsertAnnotationzaten oluşturulmuş açıklama sözlüğünü belirtilen konuma ekler;NewMarkupAnnotationquad noktaları, renk ve saydamlık yazarak tek bir adımda vurgulama/üstü çizili/altı çizili/dalgalı işaretleme açıklaması oluşturur;StampText,StampImagesayfa aralığına göre filigran basar, saydamlığı, döndürme açısını ve yığın konumunu destekler
Version 3.78.0
Eklendi
- Yeni metin sorgusu ve sayfa öğesi numaralandırma API'leri:
SearchTextsorgu terimine göre belirtilen sayfa aralığında arama yapar, her isabet için sayfa numarasını ve sınırlayıcı dikdörtgeni döndürür, büyük/küçük harf duyarlılığı ve tam sözcük eşleşmesi seçeneklerini destekler;EnumPageElementsbelirtilen sayfadaki tüm metin bloklarını ve gömülü görüntü öğelerini numaralandırır, öğe türünü, dikdörtgeni, metni, yazı tipi adını ve görüntü kimliğini birleşik bir şekilde döndürür;GetTextInAreaEx,GetTextInAreaişlevinin alan içindeki her metin bloğunu ve sınırlayıcı dikdörtgenini döndüren dikdörtgen içeren sürümüdür
Version 3.77.0
Eklendi
- "Yazılabilir ama okunamaz" olan önceki asimetriyi tamamlayan yeni salt okunur içgörü API'leri eklendi:
FindOutlineByTitlebaşlığa göre yer imi arar (yalnızca kardeş/yalnızca alt öğe/tüm alt ağaç derinlikleri desteklenir),GetOutlineActionInfoveGetAnnotActionInfoyer iminin veya açıklamanın eylem türünü (GoTo/GoToR/URI/Launch/Named/JavaScript) ve URI, JavaScript, dosya adı yükünü türü belirlenmiş yapı olarak döndürür,GetOutlineDestinationInfohedef sayfayı ve Fit türünü (XYZ/Fit/FitH/FitV/FitR/FitB/FitBH/FitBV) ve koordinatları döndürür,EnumSignatures,GetSignatureFieldCount,GetSignatureFieldInfoimza alanlarını numaralandırır ve imzalanıp imzalanmadığını bildirir
Version 3.76.3
Değiştirildi
- E-Invoice demosundaki Factur-X EXTENDED profili artık standart conformance değerini ve standart guideline kimliğini kullanıyor ve ZUGFeRD 1.0 faturası
ChargeTotalAmountileAllowanceTotalAmounttoplam öğelerini ekliyor; 6 profilın tümü artık hem veraPDF (PDF/A uyumluluğu) hem de Mustang (elektronik fatura iş kuralları) doğrulamasından geçen PDF/A-3b ve PDF/A-3u çıktısı üretiyor
Version 3.76.2
Düzeltildi
- Factur-X/ZUGFeRD hibris faturalarının XMP meta verileri artık
fx:fatura özelliklerini açıklamak için PDF/A uzantı şemasını (pdfaExtension:schemas) bildiriyor; bu bildirimin önceki eksikliği, üretilen PDF/A-3’ün veraPDF gibi doğrulayıcılar tarafından uyumlu değil olarak değerlendirilmesine neden oluyordu
Değiştirildi
- E-Invoice demosunun fatura XML’ine artık satıcı ve alıcının elektronik adresleri ile satıcının telefon numarası dahil, böylece daha fazla profil ZUGFeRD/Factur-X iş kuralı doğrulamasından geçiyor
- E-Invoice demosunun profil kataloğu, XML inşası ve PDF/A-3 üretim akışı, hem GUI hem de yeni harici doğrulayıcı test aracının yeniden kullandığı paylaşılan bir unit içine çıkarıldı
Version 3.76.1
Düzeltildi
- E-Invoice demosunda Oluştur’a tıklarken oluşan çökme düzeltildi: PDF/A modunda gömülü standart fontlar kullanılamaz, bu yüzden demo artık fatura sayfasını çizmek için bir TrueType font gömüyor
Değiştirildi
- E-Invoice demosu PDF/A-3a seçeneğini kaldırıyor (elektronik faturalandırmada nadiren kullanılır) ve XRechnung profili artık varsayılan olarak PDF/A-3u kullanıyor
Version 3.76.0
Değiştirildi
- E-Invoice GUI demosu artık veri güdümlü: fatura numarası, düzenleme tarihi, alıcı ve satıcı, net tutar, vergi oranı ve para birimi düzenlenebilir ve fatura XML’i sabit yer tutucu içerik yerine sayfadaki görünen tutarlarla tam olarak eşleşiyor
- Demo her profil için yapısal olarak doğru fatura XML’i üretiyor: Factur-X, XRechnung ve ZUGFeRD 2.0
CrossIndustryInvoiceyapısını kullanırken ZUGFeRD 1.0 COMFORT satır öğeleri, vergi toplamları ve ödeme koşullarıyla kendiCrossIndustryDocumentyapısını kullanıyor - Tutarlar XML’e sabit İngilizce ondalık nokta biçimiyle yazılıyor ki yerelleştirilmiş binlik ayraçlar veya virgüller şemayı bozmasın ve kullanıcı girdisi yazılmadan önce escape ediliyor
- Demo canlı XML önizlemesi, profil düzeyinde içerik kendi kendine denetimleri, aynı adlı harici
.validation.jsondoğrulama raporunun ayrıştırılmasını ekliyor ve üretim sırasında deponun sRGB ICC çıktı intentini açıkça yüklüyor
Version 3.75.6
Eklendi
SetPDFAModemod7ekler; bu mod PDF/A-3u meta verilerini üretirken PDF/A-3 ilişkili dosyalarına izin vermeyi sürdürür. E-Invoice GUI demosu da PDF/A-3u seçeneği sunar ve ZUGFeRD 2.0 BASIC profili artık varsayılan olarak PDF/A-3u kullanır
Version 3.75.5
Eklendi
- Factur-X, ZUGFeRD ve XRechnung profillerini seçebilen, PDF/A-3 hibrit faturaları oluşturabilen, eşleşen XML dosya adını ve guideline ID değerini gömebilen, arayüzde container doğrulaması çalıştırabilen ve XMP fatura bilgilerini, doğrulama sorunlarını ve çıkarılan XML'i gösterebilen bir Delphi E-Invoice GUI demosu ekler
Version 3.75.4
Eklendi
- PDF/A-3 ilişkili dosya ve e-fatura XML desteği ekler:
AddPDFA3AssociatedFileFromStringbellek içi baytlardan doğrudan Catalog/AFilişkili dosyaları oluşturabilir,AddFacturXAssociatedFileFromStringFactur-X, ZUGFeRD ve XRechnung XML yazabilir, XMP meta verilerini eşitleyebilir ve dosya adı, profil, XMP ad alanı ve XML guideline ID birleşimini doğrulayabilir; okuma tarafı da algılama, doğrulama, sorun listesi ve XML çıkarma API'leri ekler
Version 3.75.3
Düzeltildi
- PDF birleştirme işlevi: yerel değişkenler
GlobalRootObjNum,GlobalRootGenNum,StructRootGlobalObjNumveStructRootGlobalGenNumyalnızca koşullu blokların içinde atanıyordu, bu da Delphi Win64 derleyicileri 26 ve 29'da (RAD Studio 12 ve 16) W1036 “variable might not be initialized” uyarılarına yol açıyordu; işlev girişinde sıfırla başlatma eklendi
Version 3.75.2
Düzeltildi
- Çok sürümlü derleme uyumluluğu: hex-string ayrıştırıcısındaki (
PDFlibStruct)fordöngüsü birInt64denetim değişkeni kullanıyordu; Delphi XE3/XE5 (derleyiciler 26/27) bunu ordinal olmayan tür olarak reddeder; RAD Studio 12 ve 14 ile uyumluluğu geri getirmek içinWhiledöngüsü olarak yeniden yazıldı - Başvuru XObject denetleyicisi (
PDFlibPDFUA): sözlük işaretçisiDakış olmayan/sözlük olmayan dalda başlatılmamıştı, bu da tüm hedeflerde derleyici ipucuna neden oluyordu;D'yi her zamanAssigneddenetiminden önce atayacak şekilde dal yeniden düzenlendi CreateFontPackagesarmalayıcısı (PDFlibFont): Delphi ≤ XE8 üzerinde gereksiz W1035 “return value might be undefined” uyarısı bastırıldı, daha yeni derleyicilerde tamamlayıcı H2077 ölü atama ipucundan kaçınıldı; bu,{$IF CompilerVersion}koruması ile sağlandı- BMP DPI yazıcısı ve PDF artımlı kaydetme yolu: kullanım dışı
TStream.Seek(Longint, Word)çağrılarıPosition :=atamalarıyla değiştirildi (PDFlibPDFium,PDFlibDocument)
Version 3.75.1
Düzeltildi
- TIFF çok sayfalı ayrıştırıcısı: aşırı büyük sayfa sayılarından korunmak için kullanılan döngü sonlandırma koruması etkisizdi; çünkü
FPageCountWordolarak bildirilmişti (en fazla 65 535), bu da> 65535karşılaştırmasını her zaman yanlış yapıyordu; korumanın patolojik dosyalarda artık doğru şekilde tetiklenmesi içinInteger'a değiştirildi - CFF/Type 2 karakter kümesi ayrıştırıcısı (Format 1 ve Format 2): hemen ardından gelen
Breaknedeniyle hiçbir zaman okunmayan ölüDone := Trueatamaları kaldırıldı, böylece derleyici ipuçları ortadan kalktı
Version 3.75.0
Güvenlik
- Güvenilmeyen gömülü yazı tiplerinin (TrueType, Type 1, CFF ve CMap) ayrıştırılması, hatalı yazı tipi verilerinden kaynaklanan sınır dışı yazmalara, sınırsız charstring özyinelemesine ve aşırı bellek ayırmalarına karşı sağlamlaştırıldı
- Görüntü kod çözücüler (PNG, GIF, TIFF, JBIG2 ve CCITT Group 3 ve 4), sınır dışı okuma ve yazmalara, genişlik ve yükseklik hesaplamalarındaki tamsayı taşmalarına ve kötü amaçlı görüntülerden gelen boş palet başvurularına karşı sağlamlaştırıldı
- Akış filtreleri (LZW, ASCII85 ve Flate predictors), hazırlanmış akış verilerindeki tampon taşması okumalarına, sıfıra bölmeye ve sonlanmayan döngülere karşı sağlamlaştırıldı
- Çapraz başvuru, belge yeniden oluşturma ve ad ağacı ayrıştırması, hatalı veya döngüsel çapraz başvuru verilerinin yol açtığı sınır dışı erişimlere ve sonsuz döngülere karşı sağlamlaştırıldı
- AES-CBC şifre çözme artık şifreli metin blok hizalamasını doğruluyor ve çıkış tamponunu sıfırla başlatıyor; bu, başlatılmamış yığın belleğinin çözülmüş dizgelere ve akışlara sızmasını önler
Düzeltildi
- SHA-256, SHA-384 ve SHA-512 ayrık imza özetleri artık doğru kriptografik sağlayıcıyla üretiliyor; daha önce boş bir özet döndürüyor ve geçersiz imzalar oluşturuyorlardı
- ASCII85 ve RC4 çözümleme artık eksik girişte veya boş anahtarda başlatılmamış veri döndürmüyor ya da istisna fırlatmıyor
- GIF arka plan rengi artık yeşil kanalı kopyalamak yerine doğru mavi kanal ile okunuyor
Version 3.74.1
Düzeltildi
- PAdES imza doğrulama verilerindeki (VRI) desteğe ilişkin E2010 uyumsuz türler derleme hatası düzeltildi; bu hata kitaplığın derlenmesini engelliyordu
- Son derleyici uyarısı ve kullanılmayan değişken ipuçları kaldırıldı; tüm Win32 ve Win64 deneme ve yayın kitaplık derlemeleri artık temiz derleniyor
Version 3.74.0
Eklendi
EncryptFileveDecryptFileiçin doğrudan dosya yolları artık çapraz başvuru verisi çapraz başvuru akışlarında bulunan PDF'leri, artımlı güncellenmiş zincirler ve bir/XRefStmyan bölümü içeren hibrit başvuru dosyaları dahil olmak üzere, daha yavaş tam okuyucuya geri dönmek yerine okuyabiliyor: 1.25 GB'lık bir karşılaştırma belgesinin AES-256 koruması yaklaşık 4.4 saniyeden 2.5 saniyeye düştü ve şifre çözme yaklaşık 1.7 saniyeden 1.3 saniyeye indi- Sıkıştırılmış nesne akışlarında depolanan nesneleri taşıyan yeniden yazmalar artık bir çapraz başvuru akışı sonu üretir; bu nesneleri şifrelenmiş veya şifresi çözülmüş çıktıda adreslenebilir tutar
Düzeltildi
- Artımlı güncellenmiş bir dosyada belge
/ID'si olmayan bir revizyon artık doğrudan yeniden yazma sırasında daha eski bir revizyondan devralınan tanımlayıcıyı silmez
Version 3.73.2
Değiştirildi
DASaveAsFileartık çıkış yazmalarını toplar ve her nesnenin kapanış anahtar sözcüğünü adım başına dizge ayırmaları olmadan bulur; bu da bir milyondan fazla nesne içeren 2 GB'lık bir karşılaştırma belgesinin yeniden yazılma süresini yaklaşık 57 saniyeden 11 saniyeye indirir
Version 3.73.1
Değiştirildi
EncryptFileveDecryptFileiçin doğrudan dosya yolları artık kaynağı kayan bir pencere üzerinden okuyor ve çıkış yazmalarını topluyor; böylece milyonlarca nesne içeren çok büyük PDF'lerin AES-256 korunması birkaç kat daha hızlı çalışıyor: 2 GB'lık bir karşılaştırma belgesinde şifreleme yaklaşık 123 saniyeden 32 saniyeye, şifre çözme ise yaklaşık 127 saniyeden 23 saniyeye düştü- Okuma penceresine sığan nesne gövdeleri artık doğrudan bir AES-256 yeniden yazması sırasında diskten iki kez getirilmiyor
Düzeltildi
- Hibrit başvuru PDF'lerinin (
/XRefStmsonlandırıcı girdisi taşıyan dosyalar) doğrudan AES-256 yeniden yazmaları artık sıkıştırılmış nesnelerin kaybolması riskini almak yerine tam okuyucuya geri dönüyor - Doğrudan dosya yolundaki çapraz başvuru ayrıştırması artık çapraz başvuru bölümünden dosyanın sonuna kadar her şeyi tek seferde okumuyor; bu,
/Prevzinciri dosyanın başına yakın bir noktayı gösteren çok gigabaytlık dosyalarda belleği tüketebilirdi ve bozuk bir/Prevzinciri artık eksik bir belge üretmek yerine tam okuyucuya geri dönüyor
Version 3.73.0
Eklendi
- SigningWorkbench demosu artık ayrık CMS imzalarının (
adbe.pkcs7.detachedveETSI.CAdES.detached) tam kriptografik özet doğrulamasını Windows CryptoAPI üzerinden yapıyor: imzalı bayt aralıkları yeniden özetleniyor ve CMS imzasıyla karşılaştırılıyor, değiştirilmiş bir belge yeni SG203 hata koduyla raporlanıyor ve her imza JSON, CSV ve HTML raporlarında üç durumlu birdigestValidalanı taşıyor - Yeni SigningWorkbench otomasyon anahtarları:
--quietyalnızca toplu iş özetini ve rapor yollarını yazdırır,--fail-fasttoplu işi ilk başarısız dosyada durdurur ve JSON raporu artık kitaplık sürümünü kaydeder
Version 3.72.0
Eklendi
- ComplianceWorkbench demosu profesyonel toplu iş akışları kazanıyor:
--policy-filedenetim politikasını bir JSON dosyasından yükler, böylece ekipler belge kurallarını sürümlendirebilir ve paylaşabilir;--baselineçalışmayı önceki bir compliance-report.json ile karşılaştırır ve yeni başarısızlıkları, düzelmiş dosyaları ve başarısız kalmaya devam eden dosyaları listeler;--preflight-detailsise ön kontrol sorun satırlarını JSON ve HTML raporlarına gömer - Yeni ComplianceWorkbench otomasyon anahtarları:
--quietyalnızca toplu iş özetini ve rapor yollarını yazdırır,--fail-fasttoplu işi ilk başarısız dosyada durdurur ve JSON raporu artık kitaplık sürümünü kaydeder
Version 3.71.2
Düzeltildi
AppendToFileartık artımlı güncellemeleriLoadFromFileile yüklenmiş aynı PDF dosyasına yeniden ekler; akış yükleyici artık kaynak dosyayı, güncelleme için gereken yazma tanıtıcısını engellemeden okunabilir tutar
Version 3.71.1
Eklendi
- ComplianceWorkbench ve SigningWorkbench raporları artık bulgu önem derecesi etiketlerini, dosya başına en yüksek önem alanlarını, toplu önem sıklığı özetlerini ve daha hızlı politika ayrıştırması için eşleşen JSON, CSV, HTML ve konsol çıktısını içerir
Version 3.71.0
Eklendi
- SigningWorkbench demosu denetimi artık her imzanın revizyon sırasını ve DocMDP sertifikasyon düzeyini raporlar, zayıf MD5/SHA-1 sertifika imza algoritmalarını ve eski adbe.pkcs7.sha1 SubFilter'ını
--forbid-weak-digest(SG303/SG405) ile, kendi kendine imzalanmış sertifikaları--forbid-self-signed(SG406) ile, sertifikasyon imzası olmayan belgeleri--require-certified(SG304) ile işaretler ve imzalama zamanının sertifika geçerlilik döneminin içinde olup olmadığını her zaman denetler (SG407) - SigningWorkbench imzalama modu artık yeni
--subfilter(sha1, detached veya PAdES temel imzaları için cades) ve--digest(auto ile sha512) anahtarlarıyla imzalama süreci API'sini kullanıyor ve SHA-256 ile modernadbe.pkcs7.detachedyeni varsayılan imzalamadır - Yeni
TPDFlibSignDoc.GetSignatureDocMDPLevelByNameokuma tarafı erişicisi, ISO 32000-1 §12.8.2.2 uyarınca bir imza alanının DocMDP sertifikasyon düzeyini döndürür
Version 3.70.0
Eklendi
- ComplianceWorkbench demosu artık izin, meta veri ve boyut politikalarını da uygular:
--require-print-allowedve--require-copy-allowedbelge izin bitlerini denetler (PC205/PC206),--require-authorve--require-creation-datemeta veri bütünlüğünü denetler (PC306/PC307) ve--max-pagesile--max-file-sizebelge ölçeğini sınırlar (PC308/PC309) - Arşiv profili artık bir yazar ve oluşturulma tarihi de ister, erişilebilir profil ise yardımcı teknolojinin dayandığı kopyalama iznini gerektirir
- ComplianceWorkbench raporları artık toplu iş genelinde bir hata kodu sıklık özeti biriktirir ve dosya başına metrikler yazar, oluşturulma tarihi, dosya boyutu ile yazdırma ve kopyalama izin durumlarını içerir
Version 3.69.1
Düzeltildi
DecryptFileartık AES-128 ve RC4 korumalı belgelerden, yalnızca bir sahip parolası taşıyan belgeler de dahil olmak üzere, şifrelemeyi yeniden kaldırıyor; v3.67.4'ten beri büyük dosya hızlı yolu bu belgeleri normal şifre çözme yoluna aktarmak yerine yanlış parolaya sahipmiş gibi (404 hata) bildiriyordu, AES-256 belgeleri ise etkilenmiyordu
Version 3.69.0
Eklendi
- Yeni SigningWorkbench Delphi demosu: tek bir PDF veya tüm bir dizindeki imza alanlarını inceleyen, süre dolma denetimleriyle birlikte imza sertifikasını ve
SubFilter, imzalama zamanı,ByteRangekapsaması gibi bilgileri denetleyen, PDF'leri birPKCS #12sertifikasıyla toplu olarak imzalayan vePFXdosyalarını denetleyen bir imza ve sertifika çalışma alanı konsol aracı; her ihlal sabit bir politika hata koduna (SG101–SG501) eşlenir ve sonuçlar, 18 dokümantasyon dili için yerelleştirilmiş demo kılavuzlarıyla birlikte JSON, CSV ve HTML raporları olarak yazılır TPDFlibSignDocüzerindeki yeni okuma tarafı erişicileri:GetSignatureFieldNamesbelgenin imza alanlarını listeler,GetSignatureTextValueByName/M imzalama zamanını, /Name, /Reason, /Location, /ContactInfo ve /Type girdilerini döndürür (şifreli belgelerde şifre çözme ile),GetSignatureValueByNameise alan adına göre /Filter, /SubFilter, /Contents veByteRangegirdilerini döndürür
Düzeltildi
CertCloseStoreWindows CryptoAPI içe aktarması düzeltildi; bu bildirim bayrak parametresi olmadan yapılmıştı ve bir sertifika deposu kapatıldığında Win32'de çağıranın yığınını bozabilirdi
Version 3.68.0
Eklendi
- Yeni ComplianceWorkbench Delphi demosu: PDF/A ve PDF/UA ön kontrolü, şifreleme kuralları, PDF sürüm aralığı, Tagged PDF, linearization ve belge başlığını kapsayan yapılandırılabilir bir uyumluluk politikasına karşı tek bir PDF'yi veya tüm bir dizini denetleyen, her ihlali sabit bir politika hata kodu (PC101–PC501) olarak bildiren ve otomasyon dostu çıkış kodlarıyla JSON, CSV ve HTML raporları yazan bir toplu politika denetimi konsol aracı
- Yeni demo, ortak gereksinim kümelerini paketleyen politika profilleriyle birlikte gelir—archive, accessible, secure ve web—ve açık komut satırı anahtarları profil değerlerini geçersiz kılabilir; ayrıca 18 dokümantasyon dili için yerelleştirilmiş demo kılavuzları içerir
Version 3.67.4
Değiştirildi
EncryptFileveDecryptFileartık büyük klasik-xref PDF'ler için doğrudan bir AES-256 yeniden yazma yolu kullanıyor; nesnelerin her birini yükleyip yeniden serileştirmek yerine dosyalar arasında şifreli veriyi akıtıyor; 2 GB'lık bir karşılaştırma dosyası artık sonuç kodu 1 veLastErrorCode0 ile Doğrudan Dosya API'si üzerinden dosyadan dosyaya AES-256 şifreleme ve şifre çözme işlemini tamamlıyor
Düzeltildi
- Doğrudan AES-256 dizge belirteci işleme düzeltildi; böylece sözlük ayraçları yanlışlıkla hex dizgileri sanılmıyor ve şifrelenmiş boş dizgiler doğru şekilde çözülüyor
Version 3.67.3
Değiştirildi
- DrawShapes, CreateWithImage, CreateTable, EditFormField ve EmbeddedFonts için Delphi ve C++Builder demoları genişletildi; oluşturulan PDF'ler artık en küçük tek eylemli çıktı yerine pratik çizim, görüntü yerleştirme, tablo düzeni, form alanı biçimlendirme ve yazı tipi gömme karşılaştırması iş akışlarını gösteriyor
Düzeltildi
- CreateTable demosu, tabloyu işlemeden önce açık bir A4 sayfa boyutu ayarlayacak şekilde düzeltildi ve Delphi örneğindeki önceki başlatılmamış sayfa boyutu değişkeni önlendi
Version 3.67.2
Düzeltildi
- v3.67.0 içinde eklenen tembel yükleyici tarafı algılamadan kaynaklanan bir regresyon düzeltildi: içerik özellik algılaması kaydetme sırasında çalışıp açıkça istenen kaydetme sürümünü (SetInformation 0) veya kilitli sürümü (LockSaveVersion) üzerine yazabiliyordu; bu nedenle daha düşük bir sürüme sıkı kaydetme artık daha yüksek sürüm gerektiren içeriği reddetmiyor ve kilitli sürüm yukarı kayabiliyordu. Algılama artık açıkça ayarlanan herhangi bir sürümden önce çalışır ve yüklenmek yerine oluşturulan belgelerde hiç çalışmaz; böylece tembel yükleme süresi kazançları korunurken v3.67.0 öncesi sürüm denetimi davranışı geri yüklenir
Version 3.67.1
Değiştirildi
- Özellik algılama artık akış nesnelerini yalnızca nesne sözlüğünü inceleyen ve akış gövdesini atlayan sığ bir ayrıştırma ile okur; tarama akış içeriklerini hiç incelemediği için büyük görüntü akışlarına sahip belgelerde algılama sırasında gövde baytlarının okunmasını önler, bir algılama geçişindeki nesne okuma süresini yaklaşık %40 azaltır (2 GB, 1,6 milyon nesneli bir dosyada yaklaşık 20 s yerine 13 s), algılanan özellik listesi ve etkin PDF sürümü ise aynı kalır
Version 3.67.0
Değiştirildi
- Yükleyici tarafındaki içerik özelliği algılama artık ertelemeli (lazy) çalışır – yükleme sırasında tüm belgeyi taramak yerine, ilk kullanımda, etkin PDF sürümü veya algılanan özellik listesi sorgulandığında ya da belge kaydedildiğinde çalışır; sayfa sayımı, metin veya görüntü çıkarma ve işleme gibi sürümü hiç sorgulamayan ve yeniden kaydetmeyen salt okunur işlemler taramayı tamamen atlar, böylece çok büyük belgelerin yükleme süresini yaklaşık %80 azaltır (2 GB boyutunda ve 1,6 milyon nesneli bir dosyada 56 saniye yerine yaklaşık 10 saniye), algılanan özellik kümesi ve etkin PDF sürümü ise algılama çalıştıktan sonra aynı kalır
Version 3.66.1
Değiştirildi
- Çok büyük, çok sayfalı belgelerin yüklenmesi artık önemli ölçüde daha hızlı: yükleyici tarafındaki içerik özelliği algılama, sonucu değiştiremeyecek kural denetimlerini – hem önceden eşleşmiş kuralları hem de belirli bir nesneye uygulanamayan kuralları – atlayarak devasa dosyalarda yükleme süresini yaklaşık yarıya indirir, böylece algılanan özellikler ve geçerli PDF sürümü aynı kalır
Version 3.66.0
Değiştirildi
- Çok büyük çok sayfalı belgelerin yüklenmesi artık zirve bellek kullanımında ciddi ölçüde daha az bellek gerektiriyor. Yükleyici tarafındaki içerik özelliği algılama, artık nesne modelinin tamamını bir kerede somutlaştırmıyor – bunun yerine rastgele erişim okuyucu üzerinden nesneleri tek tek akışla okuyor – büyük dosyalarda working set zirvesini yaklaşık %90 oranında düşürürken algılanan özellikleri ve etkin PDF sürümünü değiştirmiyor.
Version 3.65.0
Eklendi
- 2 GB'tan büyük belgeler artık açılabiliyor. Belge boyutunu yaklaşık 2 GB ile sınırlayan önceki bellek içi arabellek kaldırıldı.
Değiştirildi
- Bir PDF dosyadan yüklenirken nesne verileri artık tüm belgeyi bellekte arabelleğe almak yerine kaynaktan istek üzerine okunuyor; bu da büyük dosyalarda en yüksek bellek kullanımını belirgin şekilde azaltıyor.
- Dosyadan yüklenen bir belge, belge kapatılana veya temizlenene kadar bu dosyayı paylaşımlı okuma erişimiyle açık tutar.
Düzeltildi
- %PDF- üst bilgisinden önce baştaki baytları içeren belgeleri yüklerken ve hatalı biçimlendirilmiş cross-reference verilerini işlerken sağlamlık iyileştirildi.
Version 3.64.0
Değiştirildi
- Çok büyük veya çok sayıda nesne içeren PDF'lerde Direct API işlemleri – EncryptFile, DecryptFile ve DASaveAsFile – artık çok daha hızlı ve takılmıyor. Daha önce tamamlanamayan, yaklaşık 1,6 milyon nesneli 2 GB boyutundaki bir belge artık yaklaşık bir dakikada şifreleniyor ve işlem süresi, nesne sayısı arttıkça çökmek yerine belgeyle yaklaşık doğrusal olarak ölçekleniyor.
- Büyük belgelerin şifrelenmesi önemli ölçüde daha hızlı – daha önce birçok dakika süren bir işlem artık saniyeler ile yaklaşık bir dakika içinde tamamlanıyor – şifreleme gücü, şifreli metin uyumluluğu veya çıktıda değişiklik olmadan.
Version 3.63.0
Düzeltildi
- İç bayt uzaklıkları 32 bit sınırını (yaklaşık 2 GB) aşan büyük PDF dosyaları yüklenirken oluşan işlem çökmesi düzeltildi; yükleyici artık her yerde 64 bit uzaklıklar kullanıyor, böylece 2 GB'a yakın dosyalar güvenilir şekilde yükleniyor ve 2 GB veya daha büyük dosyalar çökmek yerine düzgün bir yükleme hatası bildiriyor.
Version 3.62.0
Değiştirildi
- AES-256-CBC şifreleme ve şifre çözme işlemleri artık yalnızca 64 bit değil, 32 bit Windows'ta da donanım hızlandırmalı AES-NI yolunu kullanıyor; AES-NI bulunmayan işlemcilerde taşınabilir C uygulamasına otomatik geri dönüş korunur. Şifreli metin her platformda değişmeden kalır.
Version 3.61.0
Değiştirildi
- AES-256-CBC şifreleme ve şifre çözme işlemleri artık 64 bit Windows'ta donanım hızlandırmalı bir AES-NI arka ucu kullanıyor; AES-NI bulunmayan işlemcilerde otomatik olarak taşınabilir yazılım uygulamasına geri dönülüyor. Şifreli metin her platformda aynıdır; yalnızca parola tabanlı AES-256 PDF şifrelemesinin hızı değişir.
Version 3.60.0
Eklendi
MergeFileListartık giriş belgelerinin mantıksal yapı (Tagged PDF) ağaçlarını, yalnızca ilk belgenin ağacını koruyup diğerlerini erişilemez nesneler olarak bırakmak yerine, tek bir erişilebilir yapı ağacında birleştiriyor. Üst düzey yapı öğeleri, parent tree (yeniden eşlenen sayfa/StructParentsve açıklama/StructParentanahtarlarıyla),/RoleMap,/ClassMapve/IDTreebirleştirilir ve birleştirilen katalog Tagged olarak işaretlenir (/MarkInfo /Marked true).
Değiştirildi
- Çakışan
/RoleMap,/ClassMapveya/IDTreeanahtarlarına sahip belgeler birleştirilirken ilk oluşum korunur. Hızlı yol (MergeFileListFast) yapı bilgilerini atmaya devam eder.
Version 3.59.0
Değiştirildi
MergeFileListartık belgeleri tek geçişte birleştirir (O(N²) yerine O(N)), bu da çok sayıda dosyanın birleştirilmesini önemli ölçüde hızlandırır; ayrıca hızlı yola eklenen çok belgeli yer imi birleştirme özelliğini de kazanır.- Varsayılan olarak
MergeFileListartık okunamayan veya şifrelenmiş girdi dosyalarını atlar ve ilk bozuk dosyada tüm işlemi iptal etmek yerine kalanları birleştirmeye devam eder. Önceki ilk hatada durdurma davranışını geri yüklemek için yeniMergeFileListStrictişlevini kullanın. - Girdilerdeki mantıksal yapı (Tagged PDF) nesneleri artık
MergeFileListtarafından korunur (hızlı yol bunları atmaya devam eder).
Eklendi
MergeFileListStrictbir dosya listesini birleştirir ancak ilk okunamayan veya şifrelenmiş dosyada durur ve önceki sürümlerin katı hatada durdurma semantiğini korur.
Version 3.58.0
Eklendi
MergeFileListFastartık tüm giriş dosyalarındaki belge ana hatlarını (yer imleri) birleştirir; böylece hızlı birleştirme yolu, AcroForm form alanlarına ek olarak yer imlerini de korur.- Birleştirilen yer imleri hiyerarşilerini ve sayfa hedeflerini korur; birleştirilmiş çıktıdaki üst düzey yer imi sayısı, girdilerin toplamına eşittir.
Version 3.57.1
Değiştirildi
- Direct File API ile kaydetme (
DASaveAsFile,DASaveToStream,DASaveCopyToStream) çok büyük belgelerde artık çok daha hızlı: değişmemiş nesneler yeniden ayrıştırılıp serileştirilmek yerine doğrudan kaynak baytlarından kopyalanır. 60.000 sayfalık / 883 MB bir belgeyi yeniden kaydetme süresi yaklaşık 33 saniyeden yaklaşık 23 saniyeye düştü.
Version 3.57.0
Değiştirildi
TPDFlib.MergeFileListFast'ın çoklu belge birleştirme performansı daha da iyileştirildi: eklenen belgelerdeki değiştirilmemiş akışsız nesneler artık doğrudan orijinal kaynak baytlarından bayt düzeyinde dolaylı referans kaydırmasıyla yeniden kullanılarak ayrıştırma ve yeniden serileştirme döngüsü atlanmakta ve çok sayfalı belgelerde aktarım hızı artırılmaktadır. Birleştirme çıktısı değişmez, sayfa sayıları özdeştir.- Akış içeren veya yapı ağacına ait nesneler mevcut kod çözme yolunu kullanmaya devam eder; daha hızlı bayt yolu yalnızca kanıtlanabilir şekilde güvenli olduğu durumlarda uygulanır.
Version 3.56.44
Değiştirildi
TPDFlib.MergeFileListFast, birleştirme meta verilerini önceden ayırarak ve ilk belgedeki değişmemiş nesneleri özgün kaynak verilerinden yazarak optimize edildi; bu, hızlı çok dosyalı birleştirmelerde bellek hareketlerini ve kaçınılabilir nesne kod çözme/çıktı işini azaltır.- Delphi
MergePDFGUI artık hızlı mod sonuç günlüğünü toplu yazar ve memo metninin tamamını tekrar tekrar taramaktan kaçınır; böylece büyük giriş listeleri birleştirme tamamlandıktan sonra daha yanıt verir kalır.
Version 3.56.43
Değiştirildi
- Olağan
TPDFlib.MergeFileListbirleştirme yolu, her ek girdiden önce büyüyen birleştirilmiş PDF'yi kopyalamak yerine ara geçici dosyaları dönüşümlü kullanacak şekilde iyileştirildi. Bu, çok dosyalı iş akışlarında disk G/Ç yükünü azaltırken mevcut döndürülen sayı sözleşmesini korur.
Version 3.56.42
Eklendi
- 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.
Değiştirildi
- 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.
Düzeltildi
- 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.
Version 3.56.41
Eklendi
- 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. - Delphi
HugeFileBenchmarkdemo artık odaklı büyük dosya çalıştırmaları için birdirect-copysatırı ile--opsve--skipfiltrelerini içerir.
Değiştirildi
- 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ı.
Version 3.56.40
Değiştirildi
- 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.
Version 3.56.39
Değiştirildi
- 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.
Version 3.56.38
Değiştirildi
- 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.
Düzeltildi
- 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.
Version 3.56.37
Eklendi
- 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.
Version 3.56.36
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.56.35
Eklendi
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.
Version 3.56.34
Eklendi
- 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.
Version 3.56.33
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.56.32
Eklendi
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.
Değiştirildi
- 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.
Version 3.56.31
Değiştirildi
GetCustomKeys(2)artık/OutputIntents,/Extensions,/Requirements,/Collectionve/NeedsRenderingdahil olmak üzere kitaplık tarafından yönetilen Catalog sistem girdilerini tutarlı biçimde gizler.
Düzeltildi
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.
Version 3.56.25
Değiştirildi
- 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.
Version 3.56.24
Değiştirildi
- 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.
Version 3.56.23
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.56.22
Değiştirildi
- 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.
Version 3.56.21
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.56.20
Eklendi
- 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").
Değiştirildi
- 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.
Version 3.56.19
Eklendi
- 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. - 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.
Değiştirildi
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.- 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.
Version 3.56.18
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.56.17
Eklendi
- 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.
Değiştirildi
- 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. 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.
Version 3.56.16
Eklendi
- 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).
Değiştirildi
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.
Version 3.56.15
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.56.14
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.56.8
Değiştirildi
- 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.
Version 3.56.13
Değiştirildi
- 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.
Version 3.56.12
Değiştirildi
- 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.
Version 3.56.11
Değiştirildi
- 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.
Version 3.56.10
Değiştirildi
- 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.
Version 3.56.9
Değiştirildi
- 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.
Version 3.56.7
Değiştirildi
- 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.
Version 3.56.6
Değiştirildi
- 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.
Version 3.56.5
Değiştirildi
- 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.
Version 3.56.4
Değiştirildi
- 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.
Version 3.56.3
Değiştirildi
- 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ı.
Version 3.56.2
Değiştirildi
- 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.
Version 3.56.1
Değiştirildi
- 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.
Version 3.56.0
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.55.6
Değiştirildi
- 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.
Version 3.55.5
Değiştirildi
- 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.
Version 3.55.4
Değiştirildi
- 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.
Version 3.55.3
Değiştirildi
- 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.
Version 3.55.2
Değiştirildi
- 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.
Version 3.55.1
Değiştirildi
- 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.
Version 3.55.0
Değiştirildi
- 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.
Version 3.54.0
Değiştirildi
- 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.
Version 3.53.0
Değiştirildi
- 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.
Version 3.52.0
Değiştirildi
- 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.
Version 3.51.0
Değiştirildi
- 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.
Version 3.50.0
Değiştirildi
- 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.
- 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.
Düzeltildi
- 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.
Version 3.49.0
Değiştirildi
- 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.
Version 3.48.0
Değiştirildi
- 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.
Version 3.47.0
Değiştirildi
- 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.
Version 3.46.1
Değiştirildi
- 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.
Version 3.46.0
Değiştirildi
- 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.
Version 3.45.0
Değiştirildi
- 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.
Version 3.44.1
Değiştirildi
- 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.
Version 3.44.0
Değiştirildi
- 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.
Version 3.43.0
Değiştirildi
- 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.
Düzeltildi
- 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.
Version 3.42.0
Değiştirildi
- Üç 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.
Düzeltildi
- 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.
Version 3.41.0
Değiştirildi
- 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.
Version 3.40.0
Eklendi
- 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.
Değiştirildi
- 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.
Düzeltildi
- 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.
Version 3.39.0
Değiştirildi
- 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.
Version 3.38.0
Değiştirildi
- 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.
Version 3.37.2
Değiştirildi
- 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.
Version 3.37.1
Değiştirildi
- 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.
Version 3.37.0
Değiştirildi
- 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.
Version 3.36.1
Değiştirildi
- 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.
Version 3.36.0
Değiştirildi
- 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.
Version 3.35.1
Değiştirildi
- 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.
Version 3.35.0
Değiştirildi
- 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.
Version 3.34.0
Değiştirildi
- 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.
Version 3.33.1
Eklendi
- 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.
Version 3.33.0
Değiştirildi
- 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.
Version 3.32.0
Değiştirildi
- 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.
Version 3.31.1
Değiştirildi
- 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.
Version 3.31.0
Düzeltildi
- 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.
Version 3.30.1
Eklendi
- 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.
Version 3.30.0
Değiştirildi
- 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.
Version 3.29.1
Eklendi
- 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.
Version 3.29.0
Değiştirildi
- 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.
Version 3.28.5
Değiştirildi
- 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.
Version 3.28.4
Değiştirildi
- 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.
Version 3.28.3
Değiştirildi
- 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.
Version 3.28.2
Değiştirildi
- 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.
Version 3.28.1
Değiştirildi
- 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.
Version 3.28.0
Değiştirildi
- 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.
Version 3.27.2
Düzeltildi
- 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.
Version 3.27.1
Değiştirildi
- 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.
Version 3.27.0
Değiştirildi
- 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.
Version 3.26.0
Değiştirildi
- 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.
Version 3.25.1
Değiştirildi
- 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.
Version 3.25.0
Değiştirildi
- 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.
Version 3.24.0
Değiştirildi
- 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.
Version 3.23.1
Değiştirildi
- 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(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.
Düzeltildi
- 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ı).
Version 3.23.0
Değiştirildi
- 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.
Version 3.22.0
Değiştirildi
- 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.
Version 3.21.0
Değiştirildi
- 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.
Düzeltildi
- 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.
Version 3.20.3
Değiştirildi
- 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.
Version 3.20.2
Değiştirildi
- 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.
Version 3.20.1
Değiştirildi
- 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.
Version 3.20.0
Değiştirildi
- 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.
Version 3.19.0
Değiştirildi
- 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).
Version 3.18.6
Değiştirildi
- 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).
Version 3.18.5
Eklendi
- Yeni kural: AcroForm /NeedAppearances, PDF 1.5 Table 218 uyarınca bir PDF 1.5 özelliği olarak tanınır.
Değiştirildi
- PDFFeatureRules tablosu artık 96 kural içeriyor (95 + 1 yeni).
Düzeltildi
- 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.
Version 3.18.4
Eklendi
- 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.
Değiştirildi
- 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.
- 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.
Version 3.18.3
Değiştirildi
- 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.
Version 3.18.2
Değiştirildi
- 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.
Version 3.18.1
Değiştirildi
- 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.
Version 3.18.0
Değiştirildi
- 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.
Version 3.17.0
Değiştirildi
- 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.
Version 3.16.3
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.16.2
Değiştirildi
- 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.
Version 3.16.1
Eklendi
- 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.
Değiştirildi
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 179/179 geçti ve C++Builder Win64x GoogleTest 57/57 geçti.
Version 3.16.0
Eklendi
- 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.
Değiştirildi
- 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.
- 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.
Version 3.15.0
Değiştirildi
- 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.
Version 3.14.3
Değiştirildi
- 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.
Version 3.14.2
Değiştirildi
- 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.
Version 3.14.1
Değiştirildi
- 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.
Version 3.14.0
Değiştirildi
- 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.
Version 3.13.0
Değiştirildi
- 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.
Version 3.12.7
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.12.6
Değiştirildi
- 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.
Version 3.12.5
Eklendi
- Bilinmeyen literal-string kaçışları ve karışık sekizlik/sekizlik olmayan kaçış dizileri için regresyon kapsamı eklendi.
Değiştirildi
- 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.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 141/141 geçti.
Version 3.12.4
Eklendi
- 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.
Değiştirildi
- PDF 1.7 sözcüksel ayrıştırması iyileştirildi; name nesneleri artık sağ küme ayracında doğru şekilde duruyor.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 139/139 geçti.
Düzeltildi
- 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.
Version 3.12.3
Eklendi
- 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.
Değiştirildi
- 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.
- 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.
Version 3.12.2
Değiştirildi
- 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.
- Doğrulama: Delphi Win32 ve Win64 DUnitX paketlerinin her biri 134/134 geçti.
Düzeltildi
- 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.
Version 3.12.1
Değiştirildi
- 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.
Version 3.12.0
Eklendi
- 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ı.
Değiştirildi
- 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.
Version 3.11.0
Eklendi
- 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.
Değiştirildi
- 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.
- 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.
Düzeltildi
- 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.
Version 3.10.3
Eklendi
- 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.
Version 3.10.2
Eklendi
- 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.
Version 3.10.1
Eklendi
- 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.
Version 3.10.0
Eklendi
- 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 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.
Değiştirildi
- 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 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.
Düzeltildi
- ImportEMF demosundaki bellek sızıntısı düzeltildi (TPDFlib örneği oluşturuluyor ancak hiç serbest bırakılmıyordu).
Version 3.9.14
Değiştirildi
- 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ı.
Düzeltildi
- Sayfa aralığı kopyalama demosu, her zaman hata bildirmek yerine gerçekten sayfaları kopyalayacak şekilde düzeltildi.
Version 3.9.13
Eklendi
- 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.
Düzeltildi
- 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.
Version 3.9.12
Değiştirildi
- 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.
Version 3.9.11
Düzeltildi
- 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.
Version 3.9.10
Düzeltildi
- 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.
Version 3.9.9
Eklendi
- 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ı.
Değiştirildi
- 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.
Version 3.9.8
Düzeltildi
- 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.
Version 3.9.7
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.9.6
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.9.5
Düzeltildi
- 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.
Version 3.9.4
Düzeltildi
- 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.
Version 3.9.3
Değiştirildi
- 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.
Güvenlik
- Üçü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.
Version 3.9.2
Düzeltildi
- 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.
Version 3.9.1
Düzeltildi
- 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.
Version 3.9.0
Değiştirildi
- 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.
Düzeltildi
- 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.
Version 3.8.1
Düzeltildi
- 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ı.
Version 3.8.0
Güvenlik
- 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.
Version 3.7.0
Güvenlik
- 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.
Version 3.6.0
Değiştirildi
- 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.
Güvenlik
- 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.
Version 3.5.0
Eklendi
- 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.
Değiştirildi
- 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.
Version 3.4.0
Güvenlik
- Ş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.
Version 3.3.1
Eklendi
- İ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.
Düzeltildi
- 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.
Version 3.3.0
Düzeltildi
- 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.