PDFium Delphi Component release-notities
Versiegeschiedenis voor gebruikerszichtbare functies, fixes, viewerverbeteringen, documentgeneratie, PDF/A-uitvoer, rendering en documentatie-updates van PDFium Delphi Component
Laatste release
- Laatste versie: 3.137.1; Releasedatum:
Version 3.137.1
Opgelost (Fixed)
- OpenSSL-online-intrekkingscontroles behouden de eerdere CRL-status, reden, native fout en het betrokken certificaat wanneer geen OCSP-bewijs of responder beschikbaar is, zodat de diagnostiek voor verlopen CRL's nauwkeurig blijft
Version 3.137.0
Toegevoegd (Added)
- Native Free Pascal/LCL-builds ondersteunen Linux Qt6 en macOS Cocoa, met platformfontresolutie, private tijdelijke opslag, documenten laden, bewerken, formulieren, opslaan en rendering
- Ondertekenen via macOS Keychain ondersteunt een Keychain-pad dat lokaal bij de query hoort en begrensde offline-export van certificaatketens, met native Free Pascal- en Delphi-ondertekening en timestamptransporten
- Parallel rendering rapporteert het feitelijke modulepad, het initialisatieadres en het unload-resultaat van elke worker en wijst native loaders af die een bestaande PDFium-image hergebruiken
Opgelost (Fixed)
- Unix-PDFium-bindingen behouden LP64 unsigned-long-breedtes voor callbacks en buffers, inclusief custom stream reads voorbij 4 GiB
- Native LCL-rendering respecteert bitmapbytevolgorde en kanaallay-out, zodat kleuren behouden blijven in Cocoa-uitvoer en rendering via device contexts
- Bitmap-, tegel- en progressieve rendering behouden de transparante achtergrond-alpha voor clNone en clDefault, onafhankelijk van de native query naar paginatransparantie
- Ondertekening herkent de public-key-algoritmen van certificaten correct, inclusief EC-sleutels; macOS CMS-verificatie houdt de resultaten van buitenste handtekening en timestamp apart en meldt niet-ondersteunde RSA-PSS-verificatie expliciet
- PAdES-timestampvalidatie vereist een kritieke, exclusieve id-kp-timeStamping-EKU; OpenSSL beoordeelt eenvoudige TSA-ketens zonder ten onrechte een S/MIME-certificaatdoel toe te passen
- Atomische bestandscommits op Unix houden de nieuwe incrementele baseline aan wanneer een directory-flush na vervanging faalt, waarbij de exception van de vastgelegde uitvoer en het onvolledige duurzaamheidsresultaat zichtbaar blijven
Gewijzigd (Changed)
- Delphi POSIX-futures accepteren de standaardthreadprioriteit en wijzen niet-ondersteunde prioriteitsverzoeken af voordat een worker start
Version 3.136.0
Toegevoegd (Added)
- Optionele LittleCMS-ICC-transformaties en documentkleurconversie gebruiken originele tekst-, vector- en 8-bit of 16-bit afbeeldingscomponenten, behouden geselecteerde spotkleuren en melden niet-ondersteunde inhoud expliciet
- Complexe redaction behoudt ondersteunde inhoud in geneste Form XObjects, gevulde gebogen paden en gedraaide, gespiegelde of gescheerde afbeeldingen, met eindige geometriebudgetten en gedetailleerde verwijderrapporten
- Het lezen van actieve objecten legt onafhankelijke budgetten voor objectinstanties en gecomprimeerde objectstreams bloot vóór materialisatie en decoding
Beveiliging (Security)
- Redaction weigert Tagged-vervangingstekst, XFA, optional-content-lagen, tekstclipping en onverifieerbare verftoestanden, inclusief operatoren die over contentstreams zijn verdeeld, zodat semantiek van gevoelige inhoud die niet wordt ondersteund niet kan worden geëxporteerd
Version 3.135.0
Toegevoegd (Added)
- Vergelijking van annotaties en AcroForm-widgets rapporteert eigenschapswijzigingen onafhankelijk van paginapixels, met stabiele namen, expliciete paginamappings, rapportage van dubbelzinnigheden en before/after-overlaybegrenzingen
- Tabelcellen ondersteunen gemengde tekststijlen en afbeeldingen met alternatieve tekst, optionele voortzetting van samengevoegde cellen over pagina's heen, subtotalerijen en voortzettingslabels, met behoud van Tagged PDF-relaties
Opgelost (Fixed)
- Generatie van Tagged-layout initialiseert de native bibliotheek vóór het controleren van mogelijkheden, zodat dit de eerste operatie op een nieuw documentcomponent kan zijn
- Meervoudige vervangingen in één tekstobject worden één keer tegen de oorspronkelijke begrenzing ingepast, waarbij de algehele minimale horizontale schaal wordt afgedwongen en overbodige tussentijdse bewerkingen worden vermeden
Version 3.134.0
Toegevoegd (Added)
- Navigatiesamenvoeging behoudt named destinations en interne paginalinks over geselecteerde, herordende en herhaalde pagina's heen, met expliciete collision-policies en transactionele verificatie
- Vervanging van opgemaakte tekst voegt geverifieerde bronplannen, onafhankelijke previews, hergebruik van native fonts, expliciete fallback, begrensd horizontaal inpassen en rollback na mislukte of geannuleerde bewerkingen toe
- OpenSSL-ondertekening accepteert expliciet geconfigureerde privésleutels en certificaatketens voor RSA-PSS, RSA PKCS#1 v1.5 en ECDSA, inclusief standaardondertekenaarsresolutie buiten Windows
- OpenSSL-verificatie voegt geauthenticeerd offline en begrensd online OCSP-bewijs, afgekeurde certificaatidentiteiten en optionele diagnostiek per CMS-ondertekenaar toe
- De FPC macOS Security.framework-verifier rapporteert onafhankelijke uitkomsten voor cryptografie, ketenvertrouwen en intrekking, met expliciete vertrouwensankers en aangeleverd OCSP-bewijs
Opgelost (Fixed)
- URI-extractie van linkannotaties levert de volledige native buffer aan, inclusief de terminator, zodat geldige doelen correct worden teruggegeven
Version 3.133.0
Toegevoegd (Added)
- Transactionele AcroForm-samenvoeging ondersteunt geselecteerde pagina's, afwijzing van velden, hernoeming, namespaces en compatibele gedeelde tekst-/keuzevelden, met geïsoleerde resources, appearances en rekenvolgorde
- De optionele barcodeprovider genereert Code128, QR, DataMatrix en PDF417 en herkent grijswaardeafbeeldingen, met expliciete native afhankelijkheden en eindige verwerkingsbudgetten
Opgelost (Fixed)
- FormField leest overgeërfde oudervariabelen en commit tekstbewerkingen consequent over gedeelde widgets heen, met blijvende save/reopen-waarden en alleen-lezencontroles
- Regeneratie van appearances voor overgeërfde tekstwidgets herstelt hun oudervariabelen zonder een schaduwwidgetwaarde achter te laten, en een geslaagde veldtoewijzing maakt gedeelde paginacaches ongeldig
Version 3.132.0
Toegevoegd (Added)
- Optionele pagina-uitlijning herkent ingevoegde, verwijderde en verplaatste pagina's, met begrensde Unicode-tekstwijzigingen, verbonden visuele regio's en exporteerbare vergelijkingsoverlays
- Transactionele navigatiesamenvoeging behoudt outline-hiërarchie, stijlen, URI-acties en opnieuw toegewezen bestemmingen over geselecteerde, herhaalde en herordende pagina-imports heen
- De optionele Tesseract-OCR-provider ondersteunt expliciete afhankelijkheidsdiagnostiek, Unicode-woordgeometrie, annulering en herkenningsbudgetten, met opslaan en heropenen van de doorzoekbare laag ter verificatie
Beveiliging (Security)
- Het RSA-PSS-beleid beoordeelt volledige handtekening- en beperkte public-key-parameters en wijst misvormde DER en incompatibele hash-, masker-, salt- of trailerbeperkingen af
Opgelost (Fixed)
- Opslaan-verificatie van outlines verwerpt leaf-bookmarks niet langer vanwege een verschil in uitgeklapte status dat alleen een tak betreft
Version 3.131.0
Toegevoegd (Added)
- WatermarkStamp accepteert nu doel- en stempel-PDF's, een doelpagina-interval en uitsluitend paginanummers als uitvoer, met proportionele plaatsing bij gemengde paginaformaten
- MergePDF toont nu vooraf de geselecteerde pagina's en het doelinterval van elke invoer vóór het samenvoegen, en ondersteunt één invoer voor pagina-extractie
Opgelost (Fixed)
- MergePDF valideert elke bron vóór het importeren en stopt bij onleesbare invoer, ongeldige bereiken, mislukte imports of annulering, in plaats van een onvolledige samenvoeging op te slaan
- WatermarkStamp behoudt zijn bron- en sjabloonbestanden en slaat paginanummers betrouwbaar op, ook wanneer beide stempeloverlays zijn uitgeschakeld
Gewijzigd (Changed)
- Elke native demo-map is gericht op 22 volledige werkstromen en SecurityAudit en XfdfLab zijn naar Miscellaneous verplaatst, met gecorrigeerde projectpaden en navigatie
Verwijderd (Removed)
- De vaste AnnotationsLab-rondleiding is verwijderd; het maken, inspecteren en uitwisselen van annotaties blijft gedekt door de XFDF- en contentextractievoorbeelden en API-tests
Version 3.130.0
Gewijzigd (Changed)
- Elke native demomap is opnieuw ingericht rond 24 complete workflows, met negen gerichte API-onderwerpen onder Miscellaneous en aparte begeleiding bij het kiezen van een eerste demo
- De gerichte voorbeelden voor annotaties, toegankelijkheid, fonts, navigatie, tekstexport, paginabeeld-rendering, printvoorkeuren, interactie en XFA blijven beschikbaar, met hun eigen broncode en gebundelde invoer
Verwijderd (Removed)
- De minimale projecten CJKTextLab en RTLTextLab zijn verwijderd; Unicode-tekst aanmaken blijft beschikbaar in CreatePDF en de shaped-text-API's blijven gedocumenteerd in de API-referentie
Opgelost (Fixed)
- De C++Builder-accessibility-API-rondleiding faalt niet meer bij het exporteren van zijn speech-script
- Het C++Builder-annotatievoorbeeld gebruikt niet langer onjuiste array-offsets voor zijn highlight-coördinaten
Version 3.129.0
Gewijzigd (Changed)
- Elke native demo is nu zelfstandig: de voorbeeldlogica is verplaatst naar de projecten die hem gebruiken, de showcase-PDF's zijn gebundeld met de betreffende weergave- en extractieprojecten, en de map Demo/Shared is verwijderd
- Offline featuretours, live voorvertoningen, bewerkbare formulieren, gevulde rapporten, bijlagen, navigatie, printvoorkeuren en statische XFA-inspectie blijven beschikbaar wanneer projecten afzonderlijk worden gekopieerd
- FontProperties opent nu met echte font- en karaktermetrics al in beeld en analyseert direct het eerste tekstobject na het openen van een ander document
Opgelost (Fixed)
- De plaatsing en achtergrond van de experience-bar van PDFViewer zijn gelijkgetrokken tussen de native varianten, en FontProperties geeft zijn viewer-associatie vrij vóór het afsluiten
Version 3.128.0
Toegevoegd (Added)
- Er is een offline demoshowcase van zes pagina's toegevoegd met live tekst, vectorgrafieken, ingebedde afbeeldingen, een tabel, AcroForm-velden, bladwijzers, links, annotaties en bijlagen
- Alle native PDFViewer-varianten hebben één-klik-ervaringen gekregen voor tekst zoeken, tweepagina-indelingen, nachtlezen, documentinspectie en formulierverkenning
Gewijzigd (Changed)
- CreatePDF opent nu een live voorvertoning van twee pagina's met bewerkbare metadata- en contentopties, echte afbeeldings- en annotatieobjecten en een optionele Unicode-pagina vóór het opslaan
- De gerichte voorbeelden voor weergave, zoeken, extractie, formulieren en navigatie openen nu voorgevulde workflows; de voorbeelden voor bijlagen, printvoorkeuren en statische XFA bevatten echte, featurespecifieke gegevens
Opgelost (Fixed)
- De levenscyclus en focusafhandeling van de viewer zijn gerepareerd tijdens opstarten, documentvervanging, het opnieuw genereren van voorvertoningen en afsluiten
- De waarde-editor van FormFill onder Lazarus blijft niet langer uitgeschakeld nadat bij het opstarten het eerste veld is geselecteerd
- De documentbinding van SearchAndSelect en de extractierapporten zijn gerepareerd: formuliervelden op latere pagina's werden weggelaten en voor gegenereerde samples in het geheugen werden niet-beschikbare bestandsheaders opgevraagd
Version 3.127.0
Gewijzigd (Changed)
- De MultiPageViewer-demos gebruiken de ingebouwde tekstselectie- en klembord-API's van de viewer, zodat selectie consistent blijft tussen paginalayouts; de aparte selectiemodus via dubbelklikken is vervallen
- De voorbeeldenhandleiding brengt alle 35 demo-onderwerpen in kaart met hun eigen workflows, en de consolevoorbeelden voor toegankelijkheid, intake en preflight in Delphi en Lazarus delen hun Pascal-implementaties
Toegevoegd (Added)
- XfdfLab kan de PDF opslaan na het importeren van XFDF: de Delphi-GUI biedt Save PDF aan en de consolevarianten accepteren een expliciet tweede uitvoerpad
Opgelost (Fixed)
- De MultiPageViewer-demos van C++Builder en Lazarus openen zonder niet-ondersteunde formuliereigenschappen, en alle MultiPageViewer-demos koppelen hun document los voordat ze afsluiten
- De Lazarus-accessibility-workbench genereert JPEG-paginaminiaturen voor zijn HTML-reviewrapport
- De ExtractImages-demos maken een voorbeeld van twee pagina's met echte ingebedde afbeeldingsobjecten, waardoor de standaardextractieworkflow vier afbeeldingen oplevert
- Het consolevoorbeeld voor de XFDF-round-trip bewaart annotatie-inhoud en auteursgegevens en wijst conflicterende of reeds bestaande PDF-uitvoerpaden af voordat er uitvoer wordt geschreven
Version 3.126.2
Opgelost (Fixed)
- Full XFA-weergave werkt met de standaardinstellingen voor tekstselectie, vervangt geselecteerde tekst tijdens tekstinvoer, respecteert read-only-velden en uitgeschakelde formulierevents, en ververst de weergegeven page-handles na dynamische layoutwijzigingen
- De Windows V8-bibliotheken wijzen misvormde XDP-attributen, dubbele attributen, ongeldig namespace-gebruik en niet bij elkaar horende XML-declaraties af voordat de opgeslagen XFA-stream wordt gewijzigd
Beveiliging (Security)
- De analyse van signatuurrevisies behoudt het eigendom van pagina-inhoud wanneer widgets en appearance-objecten naar dezelfde objectgraaf verwijzen, zodat latere paginawijzigingen niet als toegestane form- of annotatiewijzigingen onder DocMDP doorgaan
- FieldMDP-vergrendelingen blijven werken wanneer een vergrendeld veld en een annotatie een indirect value-object delen
Version 3.126.1
Opgelost (Fixed)
- Dynamische XFA-herpaginering werkt
TPdf.PageCountenOnXfaPageCountChangednu bij met het werkelijke totaal aantal pagina's nadat pagina's zijn toegevoegd of verwijderd, zodat de navigatie van de host synchroon blijft met de formulierlayout - De bijgewerkte Windows V8-bibliotheken verversen de geometrie van input-widgets na dynamische XFA-layoutwijzigingen, zodat tekst en hit-gebieden voor invoer uitgelijnd blijven wanneer velden naar een andere pagina verhuizen
Version 3.126.0
Toegevoegd (Added)
- De bijgewerkte Win32- en Win64-V8-bibliotheken behouden XML-comments en processing instructions buiten live datasets en form packets bij het opslaan van ondersteunde single-stream XFA-documenten, inclusief UTF-8- en UTF-16-invoer
Opgelost (Fixed)
- Single-stream XFA-opslag wijst ongeldige UTF-8- of UTF-16-encoding, incomplete tags, ongeldige entity-referenties en misvormde processing instructions af in plaats van die invoer stilletjes te herschrijven; niet-ondersteunde constructies in live data packets, DTD-declaraties en XMLDSig blijven expliciet tot een mislukte opslag leiden
- Kopiëren, knippen en form-paste in de viewer proberen het kort opnieuw wanneer een andere thread of applicatie het Windows-klembord vasthoudt, zodat tijdelijke contentie kan optrechten; een mislukte knipbewerking laat de oorspronkelijke veldtekst ongewijzigd
Version 3.125.3
Opgelost (Fixed)
- De bijgewerkte gewone Win32- en Win64-
pdfium.dll-bibliotheken rapporteren nu een fout wanneer de laatste gebufferde PDF-schrijfactie mislukt, in lijn met de reparatie die eerder in de V8-bibliotheken werd geleverd
Version 3.125.2
Opgelost (Fixed)
- De bijgewerkte Windows V8-bibliotheken behouden bewerkte XFA-tekst bij opslaan en heropenen, inclusief lege waarden, oorspronkelijke whitespace, regeleinden en supplementary Unicode-tekens, voor packet arrays en ondersteunde single-stream XDP-documenten
- XFA-packet-exportfouten en mislukte laatste gebufferde writers rapporteren in de bijgewerkte V8-bibliotheken nu een mislukte opslag, zonder de wijzigingsstatus van het document te wissen; single-stream-documenten met niet-ondersteunde XML-constructies of XML-signaturen worden afgewezen
- De bijgewerkte V8-bibliotheken behouden een expliciet door de hostapplicatie meegegeven V8-platform en isolate gedurende de initialisatie en vernietiging van PDFium
- Een expliciet pad in
LibraryNamekiest nu precies die runtime in beide engine-modi, inclusiefEnableV8Engine=True; een ontbrekend expliciet pad leidt tot een fout in plaats van het laden van een andere meegeleverde bibliotheek
Version 3.125.1
Opgelost (Fixed)
ValidatePdfFilesParallelbeschadigt de gedeelde PDFium-engine niet langer: worker-threads openden en inspecteerden documenten gelijktijdig, waardoor sommige documenten faalden met load-fouten of access violations en het proces kon crashen of latere PDF-bewerkingen stuk maakten; het PDFium-gedeelte van elk document wordt nu één voor één verwerkt terwijl de regelevaluatie nog steeds parallel loopt- Een document dat tijdens batchvalidatie niet geopend kan worden, rapporteert nu de werkelijke load-fout in plaats van het opvolgende bericht "geen actief PDF-document"
Version 3.125.0
Toegevoegd (Added)
PdfLibraryConfigurationSupportErrormeldt of eenTPdfLibraryConfigurationgebruikt kan worden met een PDFium-build met de opgegeven Skia- en Fontations-mogelijkheden
Opgelost (Fixed)
prpSkiavragen op een PDFium-build zonder Skia, ofpfbpFontationsop een build zonder Fontations, laat het laden van de bibliotheek nuEPdfErrorverhogen in plaats van een native check te raken die het proces stopte of PDFium half-geïnitialiseerd achterliet; de configuratie blijft onverzegeld, zodat de applicatie andere instellingen kan kiezen en opnieuw kan laden
Version 3.124.0
Gewijzigd (Changed)
- PAdES-validatie past nu de ETSI TS 119 312 signature suites toe op RSA-signaturen in plaats van elk RSA-algoritme te accepteren:
AlgorithmPolicyStatusispcsInvalidvoor MD2-, MD4- en MD5-digests enpcsIndeterminatevoor SHA-1 en 112-bit digests zoals SHA-224, die voor huidige validatie niet meer zijn overeengekomen; SHA-1-signaturen behouden hun integriteitsresultaat als geheel en worden gemarkeerd voor review in plaats van afgewezen - Een RSA-signatuur waarvan de
digestAlgorithmafwijkt van de digest die door het signature-algoritme is vastgelegd (bijvoorbeeld sha256WithRSAEncryption over een SHA-1-digest) wordt nu gerapporteerd alsppeiSignatureAlgorithmMismatchen faalt op integriteit, net als RSA-signature-algoritmen op een niet-RSA signer-key - RSA-signaturen waarvan het signercertificaat niet gevonden kan worden, rapporteren nu
pcsIndeterminate, in lijn met het bestaande ECDSA-gedrag; onbekende digests en niet-signature RSA-OID's rapporterenpcsUnsupported - RSA PKCS #1 v1.5-signaturen met SHA3-digests en de verouderde OIW sha1WithRSASignature-identifier worden nu als RSA herkend
Version 3.123.0
Toegevoegd (Added)
PdfNativeRendererTypemeldt welke renderer eenTPdfRendererPreferencekiest voor een bepaalde PDFium-build, waarbijprpDefaultnaar Skia verwijst voor Skia-enabled runtimes en anders naar AGG
Opgelost (Fixed)
- Het inschakelen van
BrotliEnabledofIsolatePerDocumentinConfigurePdfLibraryschakelt rendering niet meer van Skia naar AGG wanneer de renderer-voorkeur opprpDefaultblijft staan; de meegeleverde Skia-enabled runtimes behouden nu hun standaardrenderer, zodat de pagina-uitvoer niet meer verandert met deze ongerelateerde opties
Version 3.122.2
Opgelost (Fixed)
- Free Pascal- en Lazarus-builds geven bestandsnamen en wachtwoorden nu in elk load-pad (bestand, geheugen, custom stream en progressief laden) als UTF-8 aan PDFium door, zodat documenten in mappen met Chinese, Japanse of andere niet-ASCII-namen, en versleutelde documenten met niet-ASCII-wachtwoorden, ook openen wanneer het programma de Lazarus UTF-8 string-modus niet gebruikt
Version 3.122.1
Opgelost (Fixed)
LastLoadReportwordt nu bij elke mislukte load vervangen: een mislukteActive:= True, die de component zonder exception inactief laat, en mislukte gewoneLoadDocument- ofLoadCustomDocument-aanroepen rapporterenplsFailedmet de fouttekst, zodat batchcode die éénTPdfhergebruikt niet langer het vorige bestand als geladen te zien krijgt- De help-pagina van
Activebeschrijft nu het werkelijke foutgedrag (geen exception, component blijft inactief, details inLastLoadReport) en datFileNamealleen gewijzigd kan worden zolang de component inactief is
Version 3.122.0
Toegevoegd (Added)
EPdfAssocFilesErrorinFPdfAssocFilesmeldt waaromInjectAssociateFilesniet kon injecteren: geen leesbare trailer of catalog in de bron, of eenTargetPagedie negatief is of een niet-bestaande pagina aanwijst; de doelstream blijft ongewijzigd
Gewijzigd (Changed)
SaveAsWithAssociateFilesenSaveAsWithAssociateFilesToStreamverhogen nuEPdfErrorwanneerTAssocFilesOptions.TargetPagebuiten0..PageCountvalt; zulke waarden werden eerder juist aan de documentcatalog gehangen, in strijd met het gedocumenteerde gedrag
Opgelost (Fixed)
SaveAsWithAssociateFilesenSaveAsWithAssociateFilesToStreamgeven nuFalseterug wanneer het opgeslagen document niet geparseerd kan worden voor injectie, in plaats van het ongewijzigd weg te schrijven enTrueterug te geven zonder de gevraagde bestandenSaveAsWithAssociateFileskapt een bestaand doelbestand niet meer af voordat de uitvoer is geproduceerd; een afgewezen of mislukte opslag laat het bestand onaangeroerd
Version 3.121.4
Opgelost (Fixed)
- Paginaniveau associated files (
TAssocFilesOptions.TargetPage) worden nu gekoppeld aan de pagina op die positie in de documentpaginavolgorde; eerder konden bestanden op een andere pagina terechtkomen wanneer paginaobjecten in het bestand in een andere volgorde stonden dan ze worden weergegeven, bijvoorbeeld nadat pagina's waren herordend of ingevoegd
Version 3.121.3
Opgelost (Fixed)
- Associated files die met
SaveAsWithAssociateFilesworden opgeslagen, behouden nu Chinese, Japanse en andere niet-ASCII-bestandsnamen en -beschrijvingen intact:/UFen/Descworden als Unicode PDF-text strings geschreven in plaats van via de ANSI-codepagina van het systeem te worden omgezet (Delphi) of als rauwe UTF-8-bytes te worden uitgeschreven (Free Pascal) - De verouderde
/F-bestandsnaam is nu altijd portable printable ASCII, met niet-ASCII-tekens vervangen door_, zodat readers die/Fmet hun eigen codepagina decoderen niet langer mojibake tonen
Version 3.121.2
Opgelost (Fixed)
- Associated files coderen MIME-types nu als geldige PDF-namen, waardoor waarden zoals
text/plainniet langer misvormde embedded-file-dictionaries opleveren of PDF/A-3-validatie blokkeren
Version 3.121.1
Opgelost (Fixed)
- Het lezen van een annotatie en het terugschrijven van wijzigingen maakt geen lege rollover- en down-appearance-streams meer aan wanneer die streams ontbreken, zodat de PDF/A-appearance-vereisten voor annotaties behouden blijven
Version 3.121.0
Toegevoegd (Added)
- OpenSSL CMS-verificatie kan HTTP(S)-AIA-intermediatecertificaten en CRL's ophalen wanneer
OnlineRetrievalis ingeschakeld, met een gedeelde timeout plus limieten voor het aantal requests en de responsgrootte; opgehaalde certificaten blijven onvertrouwd totdat de geconfigureerde vertrouwensketen ze valideert - Online ophalen gebruikt WinHTTP op Windows en waar beschikbaar libcurl op FPC Unix, behoudt HTTPS-certificaatvalidatie en maakt niet-ondersteunde transportconfiguraties zichtbaar via de bestaande capability-diagnostiek
Opgelost (Fixed)
- Het herbouwen van klassieke cross-references wijst de uitvoertabel één keer toe en vult objectsleuven direct, waardoor kwadratisch werk bij grote, schaarse objectnummers vermeden wordt terwijl de resource-limieten van de parser en de nieuwste objectgeneraties behouden blijven
- PDF/X-1a-output vereist een structureel geldig ICC v2 CMYK-printerprofiel in plaats van stilletjes het standaard-RGB-profiel in te sluiten; ongeldige profielen falen voordat een bestaand doelbestand ter vervanging wordt geopend
- PDF/X-1a-validatie controleert het ingesloten profiel en de vier-componenten-verklaring ervan, en preflight-rapports identificeren ongeldige output-profielen; standaard output-condition-labels volgen het aangeleverde profiel, terwijl expliciete labels van de aanroeper behouden blijven
Version 3.120.4
Opgelost (Fixed)
- De batchmodus van de table extraction demo verwerkt weer elke PDF in de map: de gedeelde documentinstantie bleef over bestanden heen actief, waardoor het tweede en latere bestanden een toewijzingsfout veroorzaakten en als gefaald werden gerapporteerd; elk document krijgt nu zijn eigen instantie in de Delphi-, Lazarus- en C++Builder-edities
- Het voorbeelddocument van de watermark demo houdt zijn pagina's in aanmaakvolgorde (1, 2, 3, 4) in plaats van de eerste pagina via een insert-at-index-aanroep naar het einde te draaien
- De XFA- en XFDF-demo's melden een mislukte documentopen als bericht in plaats van als onafgevangen exception, de attachments demo kan een nieuw document starten terwijl er al een geladen is, en de Lazarus-viewer geeft de bitmap die hij wegschrijft vrij
- De Delphi print demo past de instellingen voor orientatie, duplex, grijswaarden, kwaliteit en DPI nu echt toe op de print job, honoreert het in het afdrukvenster gekozen aantal exemplaren, slaat pagina's die niet renderen over en zet het voorbeeld na het printen terug
- Interactive demos waarvan de loader open-fouten inslikt tonen geen misleidende geladen-toestand meer, extractie-outputbestanden krijgen een UTF-8 BOM, de CJK- en RTL-consoledemo's zetten de console op UTF-8 voordat ze geëxtraheerde tekst printen, en de confidence-invoer parst decimalen onafhankelijk van de systeemlocale
- De PAdES timestamp test assert nu echt dat de validator na de injectie van de signature timestamp niveau B-T bereikt, met een zelfconsistent ByteRange-testdocument
- De API coverage- en PDF/A-tests behandelen een laadfout niet langer als een omgevingsskip zolang pdfium.dll geladen is, en een nieuwe regressietest dekt het ontsleutelen van documenten waarvan writers van derden de string-waarden als literal strings serialiseren
Version 3.120.3
Opgelost (Fixed)
EncryptDocumentBytesverliest geen enkel base-revisieobject meer wanneer de bron-PDF incrementeel is opgeslagen: de klassieke cross-reference-keten wordt nu via/Prevdoorlopen van nieuw naar oud, waarbij nieuwere invoeren winnen, de bron wordt geweigerd als hij al versleuteld is, eenstream-keyword moet eerst een dictionary afsluiten voordat het als streamdata telt, en de omvang van het laatste object wordt begrensd door de bron-xref in plaats van door de eersteendobjin zijn bytes- Versleutelde documenten waarvan de string-waarden als literal strings zijn geserialiseerd, zoals writers van derden die maken, worden nu ontsleuteld in plaats van met een authenticatiefout te mislukken
- PDF/E marker-injectie nummert het gesynthetiseerde Info-dictionary niet langer identiek aan de ingesloten ICC-profielstream wanneer de trailer van de bron geen
/Infoheeft, waardoor de incrementele xref/DestOutputProfilenaar het verkeerde object liet wijzen - PDF/X-validatie vergelijkt de XMP-waarde
pdfxid:GTS_PDFXVersionna het afknippen van witruimte eromheen, zodat terecht opgevulde element-form XMP geen vals Info-verschil meer meldt - PDF/UA-validatie herkent attribute-form
pdfuaid:part-XMP, ontvouwt object streams vóór zijn bytescans net als de andere standards-validators, controleert de encryptie-/P-bit ook voor cross-reference-stream-documenten en eist een niet-legedc:title-waarde; marker-injectie schrijft geen lege title-entry meer weg - PDF/VT marker-injectie verzamelt en herschrijft elk paginaobject niet langer tweemaal wanneer de bron een kapotte DPart-hiërarchie heeft die de validatie niet overleefde nadat de paginalijst al gevuld was
- Ondertekenen op PAdES-niveau B-T of hoger zonder
TsaUrlverhoogt nu een exceptie in plaats van stilletjes een B-B-handtekening op te leveren, en de B-LTA document time-stamp genereert zijn eigen nonce in plaats van de nonce van de aanroeper opnieuw te versturen - CMS signature-time-stamp-injectie wijst multi-signer-invoer af in plaats van na de eerste stilletjes elke SignerInfo te laten vallen, de SignedData-versie wordt 3 bij een subjectKeyIdentifier-sid,
certReq FALSEwordt volgens DER weggelaten uit timestamp-requests, en een WinHTTP-transportstoring midden in de body wordt als transportfout gemeld in plaats van als afgekapte DER-body - Het insluiten van systeemfonts zoekt de werkelijke TrueType Collection-face op die bij de gevraagde familie hoort en extraheert die als op zichzelf staand font, zodat het vragen om een niet-eerste face van een
.ttc(bijvoorbeeld NSimSun) niet langer face 0 insluit en rendert BuildToUnicodeCMapkoppelt glyphs op de juiste manier aan surrogate-pair-tekens en schrijft supplementary mappings als bfchar-invoeren weg, in plaats van elke invoer na het eerste astrale teken te verschuiven- Het invoegen van shaped text, CID-tekst en OCR controleert het resultaat van de page-insert voordat het object voor de rollback wordt geregistreerd, zodat een mislukte insert geen loshangende handle kan achterlaten die tweemaal wordt opgeruimd
- De stream-keyword-detectie in de compressor en de ToUnicode-reparatie accepteert het losse CR-regelinde dat ISO 32000-1 7.3.8.1 toestaat
Gewijzigd (Changed)
- De trial-Win64x-C++Builder-packagebuild ruimt een achtergebleven COFF-
PDFiumPas.libvan een eerdere volledige build op zodat de twee import-library-varianten niet samen kunnen meereizen, de FULL-installer sluit lokaal ontwikkelmateriaal (packagefiles.xml, statusdocumenten) buiten zijn catch-all, en de demo-builds na installatie pinnen de IDE-root via de variabelePDFiumPas_BDS_ROOTdie de buildscripts echt lezen
Version 3.120.2
Opgelost (Fixed)
- Tekst die met
AddText,SetText, layoutgeneratie of de OCR-zoeklaag is geplaatst, extraheert nu met exact zijn code points, zowel uit het live document als na een save: spaties komen onder de huidige PDFium-build niet langer terug als U+00A0 en koppeltekens niet langer als U+00AD - Systeemfonts worden ingesloten als CID-fonts gekeyd op code point, met één CID per Unicode-teken en een expliciete
CIDToGIDMap, zodat een glyph die meerdere tekens delen (spatie en no-break space, koppelteken en zacht koppelteken, Omega en Ohm-teken) er in elke viewer elk van die tekens trouw doorloopt; fonts zonder Unicode-cmap-subtabel houden het oude insluitpad
Version 3.120.1
Opgelost (Fixed)
- Documenten die met subsetfonts zijn opgeslagen corrumpen hun geëxtraheerde tekst niet langer bij het herladen: de ToUnicode CMap die pdfium serialiseert kon één CID aan twee verschillende code points toewijzen (spaties als U+00A0, koppeltekens als U+00AD), en elke volledige save repareert die tegenstrijdige mappings nu ter plekke terwijl de CMap-structuur byte-identiek blijft, zodat de PDFium-reader, MuPDF en qpdf allemaal de originele tekens extraheren
- Incrementele saves, sparse updates en cross-reference-stream-documenten worden door de reparatie nooit herschreven en gaan onveranderd door; bestanden zonder tegenstrijdige mapping worden byte voor byte gekopieerd
- Het ingeleverde testfixture
sample.pdfis opnieuw gegenereerd via het gerepareerde save-pad, en de load-policy-tests zoeken xref-invoeren nu dynamisch op in plaats van fixture-offsets vast te coderen
Version 3.120.0
Toegevoegd (Added)
- Bookmarks rapporteren hun outline-tekststijl:
TBookmark.Styledraagt de italic- en bold-vlaggen die via de nieuweFPDFBookmark_GetStyle-binding worden gelezen, enBookmarkStyleFeaturesAvailablevertelt of de geladen pdfium.dll die exporteert - Bijlagen tonen hun associated-file-relatie uit PDF 2.0:
AttachmentRelationship[], het veldRelationshipvanTPdfAttachmentMetadataen vanTPdfAnnotationAttachmentlezen de/AFRelationship-naam via de nieuweFPDFAttachment_GetAFRelationship-binding, bewaakt doorAttachmentRelationshipFeaturesAvailable GetObjectRenderedStrokePatternrasteriseert het tiling pattern waarmee een padobject zijn omtrek tekent naar een bitmap voor de aanroeper, via de nieuweFPDFPageObj_GetRenderedStrokePattern-binding;StrokePatternRenderingFeaturesAvailablemeldt of de export er isTPdfLibraryConfiguration.IsolatePerDocumentmapt op de vlagm_IsolatePerDocumentuitFPDF_LIBRARY_CONFIGversie 7, zodat V8-builds elk document een eigen isolate kunnen geven;ConfigurePdfLibrarywijst de vlag samen met een explicieteV8Isolateaf
Gewijzigd (Changed)
- Alle 476 publieke exports van de huidige PDFium-headers zijn gebonden; de drie nieuwe entry points laden tolerant, zodat uitrols met een oudere pdfium.dll gewoon blijven werken en de bijbehorende functies een lege of
nil-uitkomst rapporteren
Version 3.119.1
Opgelost (Fixed)
- Windows offline trustvalidatie beperkt nu ook de revocatie-opvraag tot gecachte data, zodat er geen impliciete CRL- of OCSP-netwerkrequests meer worden gedaan wanneer online opvraag uit staat
- Windows-revocatiefouten houden de onafhankelijke chain-trust-fout in stand en stellen revocatieredenen en native diagnostiek beschikbaar aan PAdES-resultaten en evidencerapporten
Version 3.119.0
Toegevoegd (Added)
- PAdES-trustvalidatie en evidencerapporten tonen aparte revocatieredenen en native fouten voor documentsignaturen en timestamps, inclusief JSON-velden en achteraan toegevoegde CSV-kolommen
Version 3.118.0
Toegevoegd (Added)
- CMS-verificatieresultaten tonen
RevocationReasonenRevocationError, met OpenSSL-diagnostiek voor verlopen, onbereikbare en ongeldige lokale CRL's
Opgelost (Fixed)
- OpenSSL meldt expliciet ingetrokken certificaten als ongeldig wanneer ketrust slaagt en lokale CRL-verificatie de intrekking bevestigt, met handtekening- en trustresultaten gewoon apart
Version 3.117.1
Opgelost (Fixed)
- Saves met expliciete versie accepteren geldige meerpagina-formulieren met predictorgecomprimeerde cross-reference streams in plaats van ten onrechte een misvormde cross-reference-sectie te melden
Version 3.117.0
Toegevoegd (Added)
- Tabelherkenning leest randen en arcering die als gevulde rechthoeken zijn getekend: een gevulde rechthoek die niet dikker is dan de nieuwe
MaxRulingThicknessgeldt als rasterlijn en een grotere gevulde rechthoek levert zijn randen af aan het raster, zodat tabellen die uit Word, Google Docs en browsers worden geëxporteerd nu als rasters met lijnen en samengevoegde bijschriftrijen worden gevonden in plaats van als losse witruimte-fragmenten.DetectFilledRulingszet dat gedrag uit - Rasterlijncoördinaten worden binnen
RulingSnapToleranceop hun plek gesnapt voordat rasters worden samengesteld, waardoor randstukjes per cel, dubbele randen en gearceerde cellen met een kleine goot ertussen samenvallen tot één tabel - Rasterlijnen binnen form-XObjects doen via de gecombineerde objectmatrices mee aan de herkenning, te regelen met
IncludeFormXObjects ExtractDocumentTableskoppelt vervolgfragmenten die eindigen waar de pagina-inhoud eindigt en verdergaan waar de inhoud van de volgende pagina begint, niet alleen fragmenten die de paginaranden raken, en houdt één doorgeslagen rij als onderdeel van zijn keten- TableExtractionLab toont
DetectFilledRulingsin zijn optiespaneel, in de Delphi-, Lazarus- en C++Builder-varianten
Gewijzigd (Changed)
- Witruimteherkenning negeert woorden die al tot een lijnenraster behoren en eist dat elke kolomgrens een tekstvrije corridor is over alle rijen die hij scheidt, zodat uitgevulde alinea's en lijsten met opsommingstekens niet langer als tabel worden gerapporteerd
- Een vervolgekandidaat waarvan de eerste rij één cel over de volledige breedte beslaat, wordt behandeld als een nieuwe tabel met bijschrift in plaats van als het vervolg van de vorige
MinRowsaccepteert 1 voor lijnenrasters; witruimteherkenning houdt zijn ondergrens van twee rijen, en het standaardbudget vanMaxRulingSegmentsstijgt naar 16384, want randrechthoeken per cel komen in veel grotere aantallen binnen dan getekende rasterlijnen- Celtekst wordt regel voor regel opgebouwd uit overlappende woordboxen, zodat woorden waarvan de glyph-boxen van hoogte verschillen hun volgorde van links naar rechts houden
TPdf.AboutInfo, Lazarus-packagemetadata en installatie-versiemetadata melden 3.117.0
Version 3.116.4
Toegevoegd (Added)
- TableExtractionLab krijgt batchverwerking voor mappen:
Batch folderdraaitExtractDocumentTablesover elke PDF in een gekozen map, zet per document het aantal tabellen op een rij, markeert documenten zonder tekstlaag voor OCR en zorgt dat beschadigde of vergrendelde bestanden de run niet afbreken Export all CSVschrijft elke gevonden tabel als<document>-<n>-page<p>-t<i>.csvin een submaptablesvoor batchruns, of naast het geladen document bij één bestand- Een kiezer voor detectiepresets stelt afgestelde
TPdfTableExtractionOptionsbeschikbaar: Default, Compact columns (MinColumnGap4 metAlignmentTolerance5 voor krappe exports uit tekstverwerkers) en Compact + wide rows (MaxRowGapFactor6 voor 1.5-2x regelaafstand) - Documenten die onder de Default-preset geen tabel opleveren, worden bij zowel losse documenten als batchextractie één keer opnieuw geprobeerd met Compact columns, en batchrijen melden welke preset het resultaat opleverde
Opgelost (Fixed)
- Batchextractie opent elk document in zijn eigen
TPdf-instantie in plaats van één gedeelde component telkens opnieuw te laden, wat stille laadfouten wegneemt die zich eerder aandienden als fouten met inactieve componenten halverwege een maprun
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-packagemetadata en installatie-versiemetadata melden 3.116.4
Version 3.116.3
Gewijzigd (Changed)
- Het TableExtractionLab-voorbeeld in alle drie de toolchains schrijft zijn gegenereerde voorbeelddocument nu weg als
TableExtractionSample.pdfnaast de demo-executable in plaats van het alleen in het geheugen te houden; is de map niet beschrijfbaar, dan valt de lab terug op het oude in-memory gedrag en meldt dat in de statusregel TPdf.AboutInfo, Lazarus-packagemetadata en installatie-metadata melden 3.116.3
Version 3.116.2
Opgelost (Fixed)
- De library stopte met compileren op oudere Delphi-releases. De 64-bits tick-helper en de XML-codecs voor trusted list en productie haalden
GetTickCount64enCP_UTF8uit RTL-units die die pas in nieuwere compilers aanvoeren, de reflow-HTML-schrijver embedde een CSS-stringliteral voorbij de grens van 255 elementen die die compilers aan één literal stellen, en de XFA-datasets-merge wees toe tussenTBytesen een veld van een gewoon dynamisch array, wat pre-XE7-compilers weigeren. Oudere compilers bindenGetTickCount64nu uit kernel32 en declarerenCP_UTF8lokaal wanneer de RTL die niet biedt, de stylesheet wordt aangeleverd als aan elkaar geplakte korte literals en de packet-payload wordt element voor element gekopieerd
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-packagemetadata en installatie-metadata melden 3.116.2
Version 3.116.1
Toegevoegd (Added)
Demo\Delphi\TableExtractionLab,Demo\CBuilder\TableExtractionLabenDemo\Lazarus\TableExtractionLabmaken van tabelherkenning één werkflow. De lab bouwt een voorbeelddocument met een lijnentabel met samengevoegde kopcellen, een tabel op witruimte-uitlijning zonder lijnen en een lange tabel die over een paginagrens heen loopt, draait vervolgensExtractTablesofExtractDocumentTablesen zet rijen, kolommen, spans, kopvlaggen, detectiemodus, betrouwbaarheid en vervolggroepen op een rij- De lab exporteert de gekozen tabel via
TPdfTable.ToCsvenTPdfTable.ToJson, steltDetectRuledTables,DetectWhitespaceTables,DetectContinuationsenMinConfidencein vanuit het optiespaneel en kopieert het volledige rapport naar het klembord TPdf.AboutInfo, Lazarus-packagemetadata en installatie-versiemetadata melden 3.116.1
Version 3.114.21
Opgelost (Fixed)
- PDF/A-validatie meldde een externe bestandsverwijzing bij elk document met een annotatie. ISO 19005-1 §6.1.7 verbiedt
/F,/FFilteren/FDecodeParmsin het dictionary van een streamobject, maar de controle doorzocht het hele bestand op die namen, en/Fis tegelijk de annotatievlaggen-sleutel die §6.5.3 bij elke annotatie vereist. De controle kijkt nu alleen binnen streamobject-dictionaries
Version 3.114.20
Opgelost (Fixed)
- RSASSA-PSS-handtekeningen droegen op alle drie de ondertekeningsbackends onjuiste algoritmeparameters mee. RFC 4055 tagt alle vier de velden van RSASSA-PSS-params; de salt-lengte werd weggeschreven als kaal integer, wat een parser leest als het begin van een ander veld, en het trailer-veld werd meegeschreven hoewel zijn waarde gelijk is aan de default die DER verplicht weg te laten. Een verifieerder kon de parameters daardoor ofwel niet parsen, ofwel uitkomen op de default van 20 byte salt terwijl de handtekening 32 gebruikte, dus PSS-handtekeningen werden geweigerd. PKCS#1 v1.5- en ECDSA-handtekeningen waren niet getroffen
Version 3.114.19
Opgelost (Fixed)
- Een timestamp aanvragen onder een andere digest dan SHA-256 bouwde een request dat dat algoritme opgaf terwijl er een SHA-256-digest in zat, wat een timestamp-autoriteit ofwel weigert ofwel, erger, timestamp zoals aangeleverd. Er wordt alleen SHA-256 berekend, dus elke andere identifier wordt nu ronduit geweigerd; een lege identifier kiest nog steeds de SHA-256-default. Het PDF Viewer-voorbeeld voor Lazarus en C++Builder bond bovendien een handler voor het uitklappen van bookmarks die zijn formuliervriend noemt maar zijn code niet definieert, wat faalt zodra het formulier wordt geladen; de handler is overgezet uit het Delphi-voorbeeld
Version 3.114.18
Opgelost (Fixed)
- De XFA Lab- en XFDF Lab-voorbeelden voor Delphi en het XFA Lab-voorbeeld voor Lazarus faalden bij het opstarten. Elk bouwt zijn controls vanuit de create-handler van zijn formulier, maar de formulierbron was niet aanwezig en niet gelinkt, dus het aanmaken van het hoofdformulier liep vast op een resource-not-found-fout en de handler draaide nooit. Alle drie dragen nu het formulierbestand en de directive die het insluit
Version 3.114.17
Opgelost (Fixed)
- Twee native resources werden verkeerd behandeld wanneer een operatie halverwege faalde. Een mislukte thumbnail-render gaf de doelbitmap vrij vóórdat de native render werd gesloten, en wanneer de render rechtstreeks in de pixels van die bitmap aan het tekenen was, las de afbraak daarna geheugen dat al was vrijgegeven. Een mislukte bitmaptoewijzing in
AddBitmapliet het zojuist gemaakte image-object achter zonder owner en zonder manier om het nog terug te vinden
Version 3.114.16
Opgelost (Fixed)
- FDF-tekst lezen gaf verkeerde tekens boven
0x7E. De PDFDocEncoding-tabel in ISO 32000-1 Bijlage D.2 begint op0x80met de bullet, maar de toewijzing begon die op0x7F, dus het hele blok tot en met0x9Fwas één plaats opgeschoven: een dagger werd gelezen als bullet, een em dash als ellipsis, en zo verder tot zcaron, dat helemaal van het eind afviel. De Euro op0xA0ontbrak bovendien en kwam terug als no-break space. Veldnamen en -waarden in geïmporteerde FDF worden nu correct gedecodeerd
Version 3.114.15
Opgelost (Fixed)
- Vertrouwen valideren op een document waarvan de trailer of de catalog niet leesbaar is, schreef voorbij het eind van een array. De compliancetest geeft het dan op zonder ook maar één handtekening te registreren, terwijl de collector die daarna draait rechtstreeks op de bytestream werkt en nog steeds handtekening-dictionaries kan vinden, zodat er per gevonden dictionary één entry in een lege array werd weggeschreven. Het aantal wordt nu begrensd op wat de compliancetest opleverde
Version 3.114.14
Opgelost (Fixed)
- Het uitvoeren van een PDF/A-herstelplan voerde stappen uit die de planner had geblokkeerd. Een stap is geblokkeerd wanneer het document handtekeningen draagt, de stap die ongeldig zou maken en de aanroeper dat niet toestaat; de executor testte alleen het veiligheidsniveau van de stap, wat die voorwaarde niet uitdrukt, dus een ondertekend document kon door een automatische reparatie die het plan al had geweigerd zijn handtekeningen ongeldig krijgen. Geblokkeerde stappen worden nu overgeslagen en geteld als overgeslagen
Version 3.114.13
Opgelost (Fixed)
- Een signature-timestamp toevoegen aan een CMS-waarde waarvan de certificaatverzameling groter was dan 127 byte — dus elke echte certificaat — corrumpeerde het resultaat. De helper die het begin van een geneste structuur opzoekt, liep achterwaarts over de length-octets en hield de laatste voor de eerste aan, dus de slice die hij sneed begon ver vóór de gevraagde structuur. De header-lengte wordt nu afgeleid uit de content-lengte, wat DER ondubbelzinnig voorschrijft. Zelftests zagen dit over het hoofd omdat hun testcertificaten klein genoeg waren voor de korte vorm
Version 3.114.12
Opgelost (Fixed)
- Signed attributes werden uitgezonden in de volgorde waarin ze waren opgebouwd in plaats van gesorteerd op hun encodings, wat X.690 §11.6 eist van een DER SET OF. Een verifieerder die de attributeset opnieuw encodeert vóór het digesten — zoals OpenSSL en BouncyCastle allebei doen — berekende daardoor een andere digest en meldde een gezonde PAdES-handtekening als ongeldig. Handtekeningen die deze library produceert verifiëren nu wél in die stacks; validatie via de Windows-laag was niet getroffen, omdat die de bytes digest zoals ze binnenkomen
Version 3.114.11
Opgelost (Fixed)
- Een negatieve DER INTEGER breder dan twee content-bytes werd met de verkeerde waarde geëncodeerd. De schrijver emuleert een arithmetic shift door na een logical shift het teken opnieuw in te spuiten, maar het masker dat hij gebruikte zette elke bit boven de laagste byte in plaats van alleen de byte die de shift had verlaten, dus de magnituud die nog in de overgebleven bytes zat werd overschreven. De waarde -100000 werd bijvoorbeeld geëncodeerd als -34464. Timestamp-request-nonces en elke andere signed integer van die grootte worden nu correct geëncodeerd
Version 3.114.10
Opgelost (Fixed)
- PDF/A-validatie meldde nooit het constante-alpha-deel van de transparantieregel uit ISO 19005-1 §6.4. De helper bouwt zijn zoeksleutel door een solidus vooraf toe te voegen, en de aanroeper gaf er zelf ook een mee, dus hij zocht naar
//CAen vond niets. Beide alpha-controles accepteerden bovendien alleen de exacte teksten1en1.0, waardoor een volledig dekkende/CA 1.00als overtreding gold; een waarde van één wordt nu herkend ongeacht hoe hij is geschreven
Version 3.114.9
Opgelost (Fixed)
- De URI-actie op paginaniveau gaf verminkte tekst terug. Het pad komt uit de native laag als UTF-8-bytes en werd rechtstreeks in een wide string weggeschreven, wat de bytes tot 16-bits code-eenheden paart en de rest van de buffer achterlaat met wat er toevallig in het geheugen stond.
GetPageActionURIdecodeert de bytes nu op dezelfde manier als het pad van de actie op documentniveau al deed
Version 3.114.8
Beveiliging (Security)
- Op doelen anders dan Windows kwamen de willekeurige bytes achter elke versleutelingssleutel, salt en initialisatievector uit de runtime-PRNG, waarvan de seed een constante is tenzij het programma
Randomizeaanroept. Elk proces produceerde daardoor dezelfde bestandsversleutelingssleutel, dezelfde/UE- en/OE-salts, dezelfde/Perms-bytes en dezelfde AES-GCM-nonces, waardoor versleutelde uitvoer van een Free Pascal-build op Linux of macOS triviaal terug te winnen is en er een GCM-nonce onder een vaste sleutel wordt herhaald. De bytes komen nu uit/dev/urandom, en een onbeschikbare kernel pool geeft een exception in plaats van terug te vallen, zoals een onbeschikbareCryptGenRandomop Windows al deed
Version 3.114.7
Opgelost (Fixed)
- Een misvormde object stream kon de compressie- en reparatie-ingangspunten voorbij het eind van de gedecodeerde buffer laten lezen. De member-offsets die een stream opgeeft worden nu op bereik en oplopende volgorde gecontroleerd zodra de header is geparsed, een opgegeven aantal members dat groter is dan de header kan bevatten wordt geweigerd voordat er ook maar geheugen is gereserveerd, en de byte range van elke member wordt gevalideerd vóórdat zijn afsluitende witruimte wordt afgehaald in plaats van erna
Version 3.114.6
Opgelost (Fixed)
- Inline afbeeldingen extern onderbrengen leverde een onbruikbaar image-XObject op. Het dictionary werd weggeschreven met een losse solidus vóór zijn eerste sleutel, wat een lege naam opende en elke sleutel op de waarde van de vorige sleutel schoof, en de afkortingstabel voor inline-afbeeldingen mapte Decode op
Gin plaats vanD, waardoor een/D-array viel weg en de waardeafkorting van DeviceGray voor een sleutel werd aangezien. Afbeeldingen die uit een content stream worden gelicht, dragen nu een goed gevormd dictionary en behouden hun Decode-array
Version 3.114.5
Opgelost (Fixed)
- De HarfBuzz-shaper wees clusterlengtes toe aan de verkeerde glyphs in runs van rechts naar links en gaf glyphs die één cluster delen — zoals diakritische tekens en onderdelen van ligaturen — een lengte van één. De
ClusterLengthvan elke glyph loopt nu vanaf het begin van zijn cluster tot de volgende cluster in logische volgorde, in beide richtingen, zodat de toewijzing van tekens naar glyphs voor Arabische en Hebreeuwse tekst overeenkomt met wat de Uniscribe-backend meldt
Version 3.114.4
Opgelost (Fixed)
- Het libcurl-timestamptransport gaf zijn numerieke opties door en las de HTTP-statuscode als 32-bits waarden, terwijl libcurl een C
longneemt en teruggeeft, die op Linux en macOS 64 bit breed is. De statusquery kon daardoor de vier bytes naast zijn doel op de stack overschrijven, en optiewaarden waren afhankelijk van wat de bovenste helft van het register toevallig bevatte. Beide gebruiken nu de platformbreedte vanlong, dusFPdfTsaFpcis gezond op LP64-doelen
Version 3.114.3
Opgelost (Fixed)
- De PKCS#11-backend kopieerde de ruwe bytes van het label van een token-object rechtstreeks in een string, wat op Delphi neerkomt op UTF-8-bytes op UTF-16-code-eenheden. Een certificaat dat via
TPdfPkcs11Options.CertificateLabelwerd gekozen, kon daardoor nooit matchen, enEnumerateCertificatesmeldde warrigeLabelText. Labels worden nu gedecodeerd als de UTF-8 die de standaard voorschrijft, en de PIN die aanC_Loginwordt doorgegeven wordt geëncodeerd als UTF-8 in plaats van vernauwd via de hostcodepage, dus een niet-ASCII-PIN komt intact op het token aan
Version 3.114.2
Opgelost (Fixed)
- De macOS-Keychain-ondertekenaar vroeg
SecKeyIsAlgorithmSupportednaar de verkeerde operatie bij het bepalen of een sleutel RSASSA-PSS accepteert: de query noemde de decrypt-operatie in plaats van sign, dus het antwoord was altijd nee en elke RSA-handtekening viel stilletjes terug op PKCS#1 v1.5. Een sleutel die PSS ondersteunt, ondertekent nu met PSS zoalsTPadesSignerOptions.PaddingSchemevraagt, en het operatie-argument wordt doorgegeven met de breedte die het framework aangeeft
Version 3.114.1
Opgelost (Fixed)
- Geneste haakjesparen in tekst van rechts naar links losten op naar de verkeerde richting. UAX #9-regel BD16 verwerkt paren in de volgorde waarin hun openingshaakjes verschijnen, en een paar dat door N0 is opgelost, wordt de voorafgaande sterke context voor een paar dat erna opent; de paren werden echter verwerkt in de volgorde waarin hun sluitende haakjes ze afrondden, dus een binnenste paar kon de letter volgen die het omsluit in plaats van de context die het buitenste paar had vastgelegd. Tekst zoals een Arabische of Hebreeuwse zin met een haakjesconstructie met een genest haakje erin, wordt nu neergezet zoals een lezer verwacht
Version 3.114.0
Toegevoegd (Added)
FPdfCryptoSslverifieert PDF-handtekeningen en timestamp-tokens via OpenSSL, waarmee de laatste platformkloof in handtekeningvalidatie dicht is: Linux had helemaal geen CMS-verificatiebackend.ConfigureSslCmsVerifierinstalleert hem, libcrypto wordt tijdens runtime op naam opgelost zodat er niets tegen wordt gelinkt, en zowel de 1.1- als de 3.x-serie binden- De handtekening en de certificaatketen worden in aparte passes beoordeeld, zodat een gezonde handtekening onder een keten die geen vertrouwensanker bereikt, wordt gemeld als een geldige handtekening met ongeldige vertrouwen in plaats van als gebroken handtekening
ConfigureSslTrustAnchorsvoegt DER-vertrouwensankers toe aan de systeemstore, enConfigureSslCrlslevert de CRL's die een intrekkingscontrole mag raadplegen. Intrekking telt alleen als gecontroleerd wanneer er ook daadwerkelijk een CRL is, omdat OpenSSL zelf geen ophaalt; zonder aangeleverde CRL's zegt het resultaat unsupported in plaats van een ongecontroleerde keten te laten passerenSslAvailable,SslMissingSymbols,SslLibraryPath,SslLibraryVersionenSslAbiLayoutmelden wat er wel en niet bond, enConfigureSslLibraryPathwijst de backend op een specifieke library wanneer de platformdefaults er geen vinden
Version 3.113.0
Toegevoegd (Added)
TPdfKeychainCmsVerifierverifieert PDF-handtekeningen en timestamp-tokens op macOS viaCMSDecoderen SecTrust, waardoor handtekeningvalidatie niet langer alleen op Windows draait.ConfigureKeychainCmsVerifierinstalleert hem, en dezelfde unit dekt nu beide helften van de macOS-ondersteuning, net zoalsFPdfCryptoWindat voor Windows doet- Intrekkingscontrole wordt nu daadwerkelijk toegepast: op verzoek voegt een intrekkingsbeleid zich bij het standaard X.509-beleid, en zet je online opvraging uit, dan beperkt de evaluatie zich tot gecachte antwoorden. Voortgangscontrolepunten komen voorbij voor de fasen handtekening, keten, online opvraging en intrekking, precies zoals de Windows-backend ze meldt
KeychainVerificationAvailablemeldt verificatieondersteuning apart van ondertekenen, want beide vereisen andere framework-symbolen en de een kan aanwezig zijn zonder de ander
Version 3.112.0
Toegevoegd (Added)
FPdfCryptoMacondertekent PAdES met een macOS-Keychain-identiteit, de tegenhanger van de Windows-certificaatstore: het certificaat en zijn privésleutel komen uit de Keychain en de handtekening wordt geproduceerd doorSecKeyCreateSignature, waardoor de sleutel de systeemkeystore nooit verlaat.ConfigureKeychainSignerProviderinstalleert hem, en er hoeft geen module naast de applicatie te worden uitgerold, zoals een PKCS#11-token-backend die wel nodig zou hebben- De ondertekenaar volgt het certificaat: een EC-sleutel ondertekent ECDSA, een RSA-sleutel ondertekent RSASSA-PSS, en waar PSS niet beschikbaar is - een oudere macOS of een sleutel die hem niet accepteert - valt de padding terug op PKCS#1 v1.5 en vermeldt de gegenereerde AlgorithmIdentifier dat expliciet in plaats van PSS te claimen
KeychainMissingSymbolssomt elk frameworksymbool op dat niet kon worden opgelost, zodat een uitrol die de backend als onbeschikbaar meldt een ontbrekend framework kan onderscheiden van een naam die deze binding verkeerd heeft
Version 3.111.0
Toegevoegd (Added)
ConfigurePadesCmsVerifierinstalleert de CMS-verificatiebackend die de PAdES-validator gebruikt, waardoor handtekening- en timestampverificatie niet langer aan Windows vastzit.IPdfCmsVerifierdeclareert de twee bewerkingen die een backend beantwoordt - detached voor een PDF-handtekening, attached voor een timestamp-token - enPadesCmsVerificationAvailablemeldt of er überhaupt een backend aanwezig is
Gewijzigd (Changed)
- De verificatie-resultaat- en optierecords zijn verhuisd naar
FPdfCryptoalsTPdfCmsVerify*. DeTWinCmsVerify*-namen blijven als aliassen bestaan, dus bestaande code blijft werken en een ingeplugde backend spreekt dezelfde types als de Windows-variant - Het gedrag op Windows is ongewijzigd: zonder geïnstalleerde verifier wordt nog steeds CryptoAPI gebruikt, en de voortgangscontrolepunten, intrekkingsopties en native foutcodes zijn hetzelfde. Waar geen backend antwoordt, rapporteert elke uitspraak unsupported in plaats van ongecontroleerd te blijven
Version 3.110.0
Toegevoegd (Added)
FPdfPkcs11ondertekent PAdES met een sleutel die binnen een PKCS#11-token blijft.ConfigurePkcs11SignerProviderinstalleert hem als ondertekeningsbackend, de module wordt tijdens runtime op pad geladen zodat er niets gelinkt wordt, en dezelfde code bedient Windows, Linux en macOS. De token-enumeratie die het interfaceIPdfPkcs11SignerProviderdeclareert is mee geïmplementeerd: slots, tokens en de certificaten die elk ervan bevat- Ondertekenen buiten Windows heeft voor het gebruikelijke geval geen door de host geleverde provider meer nodig: een tokenmodule plus
TPdfPkcs11Optionsis genoeg. RSA PKCS#1 v1.5, RSASSA-PSS en ECDSA worden allemaal via het token geproduceerd FPdfSha1voegt SHA-1 toe voor één doel: een certificaat matchen op de thumbprint dieTPadesSignerOptionsmeedraagt. Windows loste dat op binnen de certificaatstore; een token geeft certificaatbytes terug en laat het matchen aan de aanroeper over. Het is geen ondertekenings-digest en de PAdES-stack blijft overal SHA-256 ondertekenen
Gewijzigd (Changed)
- De DER-helpers voor certificaten die een public-key-algoritme-OID lezen, issuer en serienummer extraheren en een ruwe ECDSA-handtekening herverpakken, zijn van de Windows-backend naar
FPdfCmsverhuisd, waar elke ondertekeningsbackend ze kan bereiken
Version 3.109.0
Gewijzigd (Changed)
- De native libraryloader is niet langer Windows-only.
LibraryNameheeft per target als standaardwaardepdfium.dll,libpdfium.sooflibpdfium.dylib, de V8-build wordt onder de bijpassende naam gezocht, en laden en symbolbinding verlopen op Free Pascal via de draagbare loader. Het gedrag op Windows is ongewijzigd, inclusief de Win32- en Win64-implementatielayout en de architectuur-mismatch-diagnose - Implementatiemappen op andere targets volgen de
<cpu>-<os>-spelling die de gecompileerde units al gebruiken, dusDLLs/x86_64-linux/libpdfium.sostaat naastLib/FPC/x86_64-linux. De systeemmap-fallback blijft Windows-only; elders dekt het zoekpad van de loader dat
Version 3.108.0
Toegevoegd (Added)
TPdfHarfBuzzTextShapershape bidirectionele tekst en tekst in complexe scripts op Free Pascal-targets zonder Uniscribe. Hij bepaalt de embedding-niveaus metFPdfBidi, splitst runs per script, shapet elke run met libharfbuzz en zet de runs in visuele volgorde neer. Installeer hem metConfigureTextShaper; libharfbuzz wordt tijdens runtime opgelost enHarfBuzzAvailablemeldt eerlijk wanneer hij ontbreekt- De shaper somt geen lettertypen op. Uniscribe leest de lettertype-binary uit een device context, wat geen draagbaar equivalent heeft, dus de host geeft een
TPdfFontDataResolvermee die een lettertypenaam aan de bytes van het lettertypebestand koppelt en dat beleid waar het thuishoort houdt
Version 3.107.0
Toegevoegd (Added)
FPdfBidiimplementeert het Unicode Bidirectional Algorithm (UAX #9) in pure Pascal:PdfResolveBidiLevelsgeeft één embedding-niveau per UTF-16-code-eenheid terug,PdfBidiVisualOrderpast de L2-herordening toe enPdfBidiClassOfontsluit de Bidi_Class van een codepunt. De regels P2-P3, X1-X10, W1-W7, N0-N2, I1-I2 en L1-L2 worden gedekt, inclusief isolate-initiators en BD16-haakjesparen- De unit is compiler- en platformneutraal, en juist daardoor kan bidirectionele tekst worden gezet waar Uniscribe niet beschikbaar is. Een shaping-engine zoekt glyphs voor een run waarvan de richting al bekend is, dus dit is het onderdeel dat als eerste de richting moet bepalen
Version 3.106.0
Toegevoegd (Added)
ConfigureTextShaperinstalleert de text shaping-backend waar de hele library doorheen routeert, metActiveTextShaper,ActiveTextShaperNameenClearTextShapereromheen. ZowelShapePdfTextalsTPdf.AddShapedTextgebruikt nu de geïnstalleerde shaper in plaats van direct een Uniscribe-shaper aan te maken, zodat een host zijn eigen engine kan meegeven en een test een deterministische
Gewijzigd (Changed)
FPdfTextShapingcompileert op andere targets dan Windows: de Uniscribe-backend is nu de platformstandaard in plaats van de enige implementatie, en zit ingeperkt tot de Windows-build. Waar geen backend beschikbaar is, melden de shaping-entrypoints dat in plaats van te weigeren te compileren
Version 3.105.1
Beveiliging (Security)
- Een timestamp-antwoord is nu op beide transports begrensd op 4 MB. Een TSA die bleef versturen kon de receive-buffer eerder onbeperkt laten groeien, waardoor een ondertekenaanroep in onbegrensd geheugengebruik veranderde
Version 3.105.0
Toegevoegd (Added)
- RFC 3161-timestamping werkt op Free Pascal-targets anders dan Windows: de nieuwe libcurl-backend verstuurt de TimeStampReq en leest de TimeStampResp, zodat
PadesTsaAvailableTrue meldt en PAdES B-T, B-LT en B-LTA daar tokens kunnen ophalen. libcurl wordt tijdens runtime opgelost en is geen build-time-afhankelijkheid; wanneer hij ontbreekt meldt de backend onbeschikbaar, precies zoals de WinHttp-variant dat doet. Windows blijft WinHttp gebruiken en is niet getroffen - Ondertekenen op die targets heeft nog steeds sleutelmateriaal nodig dat de library niet bezit: lever het aan via
ConfigurePadesSignerProvidermet eenIPadesSignerProvider(ofIPdfPkcs11SignerProvidervoor tokengebaseerde sleutels), wantFPdfCryptoWinis Windows-only
Version 3.104.1
Toegevoegd (Added)
- Het XFA-inspectielab-voorbeeld is nu ook voor Lazarus beschikbaar, zodat de XFA-capaciteitsprobes, de pakkettellijst, pakketexport en de
OnXfaRuntimeMissing-fallback vanuit de LCL-build kunnen worden uitgeprobeerd
Version 3.104.0
Gewijzigd (Changed)
- De library compileert op Free Pascal 3.2 schoon van vermijdbare diagnostiek: interne timing leest de milliseconde-tick uit
GetTickCount64in plaats van de verouderde 32-bit-aanroep, de verouderde SSE-control-word-accessors zijn vervangen doorGetMXCSRenSetMXCSR, de offset-basis van de content fingerprint is expliciet getypeerd zodat een compile-time range check niet meer afgaat, en scanline-adressen worden als unsigned pointers vergeleken wanneer een bitmap op top-down-layout wordt gecontroleerd
Version 3.103.1
Opgelost (Fixed)
- Documentmetadata die naar XMP gaat behoudt zijn niet-ASCII-tekens op Free Pascal: titels, auteurs, onderwerpen, trefwoorden en scheppernamen die
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRenSaveAsPdfVTbereiken, worden nu via de string-codepage geconverteerd in plaats van byte voor byte gekopieerd, zodat het metadatapakket geldige UTF-8 blijft, zoals ISO 19005-1 6.7.2 vereist, zelfs wanneer het hostprogramma niet op een UTF-8-codepage draait - XFDF-export, round-trips van productiemetadata en het parseren van trusted-list-XML gebruiken dezelfde codepage-correcte conversie, zodat tekst die tussen
TBytesenstringreist niet langer van de hostcodepage afhangt
Version 3.103.0
Toegevoegd (Added)
TPdfEuropeanTrustedListparseert geauthenticeerde Europese trusted lists, herlaadt caches met checksum via dezelfde authenticator, accepteert updatebronnen van de aanroeper, ontsluit huidige trust anchors en evalueert gekwalificeerde handtekeningservices op een gevraagd validatietijdstipTPadesTrustValidationOptions.QualifiedTrustEvaluatorpast een offline qualified-trust-beleid toe op elke gevalideerde ondertekenaar zonder netwerktoegang aan de PAdES-validator toe te voegen
Version 3.102.0
Toegevoegd (Added)
BeginIncrementalSaveenCommitIncrementalSavevoegen nu geauthenticeerde revisies toe aan AES-256-versleutelde documenten, met behoud van de originele/Encrypt-referentie, de beveiligingsparameters, exacte objectgeneraties en eerdere bytes
Gewijzigd (Changed)
- De file-commit-overload spoelt nu duurzaam en heropent strikt een sidefile in dezelfde map, verifieert de revisiegrens en vervangt het doel atomair, waarbij de sessie bij elke fout wordt teruggedraaid
Version 3.101.0
Gewijzigd (Changed)
SaveAsRedactedbehoudt nu de veilige delen van deels overlappende tekst, rechthoekige paden en uitgelijnde afbeeldingen, en verwijdert vervolgens resourcenamen waarnaar geen pagina, Form XObject, pattern, appearance of geneste resourcescope meer verwijst
Version 3.100.0
Gewijzigd (Changed)
OptimizeImageskiest nu box-, bilineaire, bicubische, Lanczos- of bilevel-resampling op basis van schaal, inhoudsklasse, gemeten detailgehalte en de door de aanroeper gevraagde kwaliteit, met alpha-bewust filteren en een streng werkgeheugenbudget
Version 3.99.0
Toegevoegd (Added)
GraftPdfAcroFormimporteert hiërarchische AcroForm-velden, widgets, appearances, berekeningsvolgordes, standaardresources, acties en waarden via expliciete paginamappings en collision-beleidsregelsTPdfCrossDocumentGraftMaphergebruikt geïmporteerde indirecte objecten op basis van bronidentiteit, met behoud van cycli, gedeelde referenties, exacte bronngeneraties en transactioneel faalgedrag
Version 3.98.0
Toegevoegd (Added)
TPdfOutlineEditormaakt outline-items aan, verplaatst, verwijdert en style ze, vouwt ze uit en verlegt hun doel, herplant expliciete bestemmingen via pagina-planresultaten en voegt een onafhankelijk geverifieerde incrementele revisie toe
Version 3.97.0
Toegevoegd (Added)
TPdfTreeEditorleest, valideert, werkt bij, balanceert, splitst en voegt willekeurige PDF-NameTree- en NumberTree-structuren samen, serialiseert ze en slaat ze incrementeel op, met behoud van herbruikbare indirecte referenties en ruwe entrywaarden
Version 3.96.0
Toegevoegd (Added)
TPdfParserResourceBudgetbiedt één thread-safe procesbeleid voor recursie, tokens, objecten, gedecodeerde bytes, expansieratio, allocatie en deadlines voor aangepaste PDF-parsers, met onveranderlijke snapshots per operatie en configureerbare standaardwaarden
Version 3.95.0
Gewijzigd (Changed)
ValidatePdfXvalideert nu actieve PDF/X-dictionaries, metadata, output intents, lettertypen, verboden features, transparantie, kleurruimten en paginaboxen via begrensde sparse reads op niet-versleutelde documenten met geldige xref
Version 3.94.0
Gewijzigd (Changed)
ValidatePdfRvalideert nu actieve PDF/R-dictionaries, pagina's, beeldfilters, metadata en footmarkers via begrensde sparse en windowed reads op niet-versleutelde documenten met geldige xref
Version 3.93.0
Gewijzigd (Changed)
ValidatePdfEvalideert nu actieve PDF/E-dictionaries, metadata, output intents, formulieren en verboden features via begrensde sparse reads op documenten met geldige xref
Version 3.92.0
Gewijzigd (Changed)
ValidatePdfVTvoert nu geavanceerde analyse van recurring-XObject-scope, zichtbaarheid, encapsulatie en genest formuliergebruik uit via begrensde sparse reads op documenten met geldige xref
Version 3.91.0
Toegevoegd (Added)
TPdfSparseDictionaryReaderkan de actieve generatie van een object oplossen en een directe stream decoderen onder een door de aanroeper opgegeven bytelimiet
Gewijzigd (Changed)
ValidatePdfVTgebruikt nu begrensde sparse reads voor de controles op PDF/VT-metadata, DPart, OutputIntent, Info, pagina's en gewone dictionaries op het normale valid-xref-pad
Version 3.90.0
Toegevoegd (Added)
TPdfSparseDictionaryReaderhoudt één sparse xref- en object-stream-index open voor herhaalde begrensde reads van indirecte objectdictionaries
Gewijzigd (Changed)
InjectPdfVTMarkersvalideert en behoudt nu een bestaande PDF/VT-DPart-hiërarchie met begrensde bronreads, terwijl misvormde hiërarchieën via de herbouwfallback doorgaan
Version 3.89.0
Toegevoegd (Added)
ReadPdfSparsePageDictionariesgeeft pagina-object-identiteiten en begrensde dictionary-bytes terug in paginaboomvolgorde via de sparse objectindex
Gewijzigd (Changed)
InjectPdfVTMarkerssynthetiseert nu de PDF/VT-DPart-hiërarchie en voegt markerobjecten toe met begrensde bronreads wanneer de opgeslagen PDF nog geen DPart-hiërarchie bevat
Version 3.88.0
Toegevoegd (Added)
ReadPdfSparseCatalogSubDictleest een directe of indirecte catalog-subdictionary via de sparse objectindex, gebruikt door PDF/UA-markerinjectie voorMarkInfoenViewerPreferences
Gewijzigd (Changed)
InjectPdfUaMarkerslost catalog-MarkInfoenViewerPreferencesnu op via sparse lookup en voegt de PDF/UA-revisie toe met begrensde bronreads op het normale xref-pad
Version 3.87.0
Toegevoegd (Added)
AppendPdfSparseUpdatestreamt één sparse revisie naar een opgeslagen PDF: bronbytes letterlijk, objectlichamen van de aanroeper op geregistreerde offsets en één incrementeel xref/trailer-blok dat via/PrevketentNormalizePageViewRectnormaliseert twee gemapte hoekpunten in pagina-ruimte naar de op de pagina geklemde zichtbare rechthoek, of meldt dat er niets van de pagina zichtbaar is- PDF/E-markerinjectie synthetiseert een vers Info-object met
/ISO_PDFEVersionwanneer het brondocument geen Info-dictionary heeft
Gewijzigd (Changed)
- PDF/E-, PDF/X- en PDF/R-markerinjectie lossen catalog, Info en trailer nu op via sparse lookup en voegen revisies toe via
AppendPdfSparseUpdatemet begrensde bronreads op het normale xref-pad - De form-fill-callback
FFI_GetPageViewRectmeldt nu het deel van de pagina dat daadwerkelijk zichtbaar is in de gekoppeldeTPdfViewin plaats van altijd de hele paginabox, met terugval op de pagina-afmetingen voor headless documenten TPdf.AboutInfo, Lazarus-packagemetadata en installatie-metadata melden nu consistent Version 3.87.0
Opgelost (Fixed)
- Padsegment-controlepunten die sinds de
FPDFPath_GetBezierControlPoints-binding werden ontsloten, zijn nooit gevuld geweest: de native export antwoordt alleen voor de endpoint-index van elke kubus met drie entries, dus de query gebeurt nu één keer per curve en alle drie de entries dragen de controlepunten van de curve
Version 3.86.0
Toegevoegd (Added)
ReadPdfSparseRevisionInfoontsluit begrensde feiten over de nieuwste revisie, catalog, versleuteling, document-ID en getagde structuur voor stream-postprocessorsComposePdfSparseUpdateIdbehoudt of leidt document-ID's voor incrementele updates af zonder de volledige bron-PDF te materialiseren
Gewijzigd (Changed)
InjectPdfAMarkerslost catalog en trailer nu op via sparse lookup, kopieert grote invoer in begrensde chunks en voegt de PDF/A-revisie toe zonder een byte-array van brongrootte toe te wijzen op het normale xref-pad- PDF/A-markerinjectie behoudt de klassieke of xref-stream-outputstijl, catalog- en Info-generaties, trailer-identificatoren, het weigeringsgedrag bij versleuteling en de Level A-downgraderegels
Version 3.85.0
Toegevoegd (Added)
SanitiseActiveContentPdfStreamaccepteert een prune-werkruimte van de aanroeper voor aangepaste begrensde of op schijf ondergebrachte opslag
Gewijzigd (Changed)
- Sanitisering van actieve inhoud werkt catalog en trailer nu bij via sparse lookup, begrensde parserwindows en het kopiëren van vaste bereikblokken in plaats van de volledige PDF in één byte-array te lezen op het normale xref-pad
TPdf.SaveAsSanitisedpastSaveMemoryLimitenSaveTemporaryDirectorytoe op zijn prune-werkruimte en meldt de bijbehorende spill-diagnostiek
Opgelost (Fixed)
StripMetadata=Trueverwijdert nu een trailer-/Info-referentie ook wanneer de catalog geen/Metadata-entry heeft
Version 3.84.0
Gewijzigd (Changed)
TPdf.PdfVersionhergebruikt nu de PDFium-parserstatus viaFPDF_GetFileVersionin plaats van de volledige bron-PDF opnieuw te parsen- Versiequery's lezen hooguit de acht-byte PDF-header, zodat een misvormde catalog-aanduiding de effectieve versie niet kan verlagen
Version 3.83.0
Gewijzigd (Changed)
PageLabelledPdfStreamlost de catalog nu op en werkt die bij via begrensde streamwindows en de sparse lazy objectindex- Paginalabel-output kopieert grote bron-PDF's in vaste bereikblokken in plaats van een complete document-byte-array toe te wijzen op het normale xref-pad
Version 3.82.0
Gewijzigd (Changed)
ApplyDefaultOpenActionleest klassieke, xref-stream-, hybride en object-stream-revisies nu via een sparse lazy objectindex, inclusief documenten met zeer hoge objectnummers- Standaard-openaction-verwerking gebruikt windows van vaste grootte en begrensd bereikkopiëren in plaats van de volledige PDF in één byte-array te laden
Version 3.81.0
Toegevoegd (Added)
PostProcessSavedPdfaccepteert drie seekable werkruimtes van de aanroeper voor aangepaste geheugenplafonds en verwerking met schijf als underbouw
Gewijzigd (Changed)
TPdf.SaveAspastSaveMemoryLimitenSaveTemporaryDirectorytoe op elke post-processing-werkruimte van de opgeslagen PDF en neemt hun spills op in de diagnostiek- Native incrementele xref-stream-reparatie gebruikt tail- en dictionary-windows van vaste grootte met begrensd bereikkopiëren in plaats van byte-arrays over het hele bestand en herhaalde reallocaties van het volledige bestand
Version 3.80.0
Toegevoegd (Added)
ReadAttachmentMetadatavat attachment-namen, omschrijvingen, MIME-subtypes, gedecodeerde groottes en leesbaarheid samen in één begrensde native enumeratieExtractAttachmentsToStreamsschrijft een batch weg naar streams van de aanroeper, met bytelimieten per bestand en in totaal, configureerbare write-chunks, annulering en resultaten per item
Gewijzigd (Changed)
- Batchextractie houdt hooguit één gedecodeerde attachment in het geheugen van PDFium Delphi Component in plaats van elke payload uit de batch te materialiseren
Version 3.79.0
Toegevoegd (Added)
TPdfCacheGovernor,TPdf.CacheBudgetBytes, verbruiksquery's per soort en telemetrie coördineren het vastgehouden cachegeheugen via één thread-safe globaal LRU-bytebudgetTPdfTileCacheen de procesbrede systeemlettertypecache kunnen zich aansluiten bij een door de aanroeper gekozen governor, met exacte verantwoording van bitmap- en fontbytes
Gewijzigd (Changed)
- Geparste paginascenes, thumbnails, structuurdata, tekstsnapshots en pagina-object-snapshots concurreren nu binnen een standaardbudget van 256 MiB per
TPdf, met behoud van hun bestaande entry-count-limieten - Actieve paginascenes blijven vastgepind tot de rendering klaar is, en ondoorzichtige native paginascenes gebruiken een expliciete geraamde last, omdat PDFium geen configureerbare total-cache-byte-API biedt
Version 3.78.0
Toegevoegd (Added)
TPdfLayoutPagedPlan,TPdfLayoutDocument.BuildPagedPlanenTPdf.GeneratePagedLayoutstreamen layout-commando's naar door de aanroeper gekozen seekable opslag en materialiseren één pagina per keer
Gewijzigd (Changed)
- Grote gegenereerde layouts kunnen commando's naar tijdelijke opslag overlopen, een configureerbare LRU-paginacache vasthouden, niet-aaneengesloten kop- en voettekstsegmenten herstellen en omwikkelde tekst na elk flowitem vrijgeven
Version 3.77.0
Toegevoegd (Added)
TPdfLayoutTable, rijen, cellen en tabelopties voegen tabellen over paginagrenzen toe met opgeloste grid-tracks, bijschriften, herhaalde koprijen, splitsbare body-rijen, links en configureerbare randen
Gewijzigd (Changed)
- Gegenereerde getagde tabellen behouden één doorlopende Table / TR / TH / TD-structuur over pagina's heen, houden rijoverschrijdende groepen atomair en koppelen datacellen automatisch aan header-ID's
Version 3.76.0
Toegevoegd (Added)
TPdfLayoutConstraintsenSetLastItemConstraintsvoegen keep-together, keep-with-next, fysieke page-break-before / after en configureerbare weduwe-/weesregelbeheersing toe aan gegenereerde layouts
Gewijzigd (Changed)
BuildPlanhergebruikt elk omwikkeld tekstresultaat voor pagineringsvoorspelling en het uitzenden van commando's, zodat keep-with-next de tekstmeting niet herhaalt
Version 3.75.0
Toegevoegd (Added)
TPdf.InspectPdfUaUnicodeCoveragerapporteert begrensd bewijs op objectniveau voor directe Unicode-mappings,ActualText-vervangingen, mappingfouten, ontbrekende Unicode-waarden en onopgeloste bronobjecten
Gewijzigd (Changed)
TPdf.ValidatePdfUahergebruikt nu één objectgerichte characterscan die Artifact- en gegenereerde tekens uitsluit en voorkomt dat deActualTextvan één tekstobject aangrenzende inhoud maskeert
Version 3.74.0
Gewijzigd (Changed)
ValidatePdfUaPageContentTaggingenTPdf.ValidatePdfUarapporteren nupvuaiArtifactInStructureTreewanneer een Artifact-paginaobject wordt geclaimd door een structure-tree-MCID, inclusief padgebaseerde pagineringsartefacten- Het scannen van PDF/UA-pagina-inhoud kortsluit nu pas nadat zowel ongetagde echte inhoud als ongeldige Artifact-insluiting is gedetecteerd, zodat de dekking over pagina's heen behouden blijft zonder voltooide controles te herhalen
Version 3.73.0
Toegevoegd (Added)
TPdf.InspectPdfUaLanguageCoveragerapporteert begrensd bewijs uit paginaobjecten en structuurstrings voor natural-language-fragmenten, inclusief effectieve taal, bron van de declaratie, MCID, structuurindex en tekstfragmentenResolvePdfUaEffectiveLanguagelost marked-content-, dichtstbijzijnde structuurvoorouder- en catalog-taaldeclaraties op met expliciet geldigheidsbewijs
Gewijzigd (Changed)
TPdf.ValidatePdfUarapporteert nupvuaiNaturalLanguageUncoveredwanneer niet-artifact-tekst of toegankelijkheidsstrings geen geldige effectieve/Lang-declaratie hebben
Version 3.72.0
Toegevoegd (Added)
TPdf.InspectPdfAMetadatarapporteert getypeerd equivalentiebewijs per veld voor alle acht ISO 19005-1 Info-naar-XMP-mappings, inclusief expliciete lege waarden en mislukte datumparseringTPdf.NormalizePdfAMetadataherstelt alleen niet-overeenkomende gemapte XMP-eigenschappen en behoudt ongerelateerde namespaces en niet-standaard taalalternatieven
Gewijzigd (Changed)
TPdf.ValidatePdfArapporteert nupvaiInfoXmpValueMismatchwanneer met PDFium gedecodeerde Info-waarden na Unicode- of timezone-bewuste datumvergelijking verschillen van correct getypeerde XMP-waarden
Version 3.71.0
Toegevoegd (Added)
InspectPdfVT2sStreamgeeft drukconditiebewijs terug voor elk PDF/VT-MIME-onderdeel, inclusief OutputIntent-identiteit, herkomst van het ingebedde of MIME-profiel, ICC-hashes en headerfeiten, en DPart-pagina- en recordaantallenFPdfIccProfilebiedt begrensde inspectie van ICC-headers en tagtabellen met ondersteuning voor MD5, SHA-256, kleurruimte, versie, device class, profile-ID en meertalige profielbeschrijvingen
Gewijzigd (Changed)
- PDF/VT-2s-validatie lost eerdere ICC-MIME-attachments nu op via
DestOutputProfileRef-URL-filespecificaties en valideertCheckSum,ICCVersion,ProfileCS,ProfileName, device class en toegestane proceskleurruimten - Alle PDF/VT-onderdelen vereisen nu één gezaghebbende
GTS_PDFX-OutputIntent, passende ingebedde of externe profielverpakking voor de PDF/X-base en dezelfde gekarakteriseerde drukconditie, terwijl PDF/X-only-attachments buiten PDF/VT-vergelijkingen blijven - Validatie van single-file PDF/VT-2 herkent
DestOutputProfileRefnu als een extern bestemmingsprofiel in plaats van het als ontbrekend te melden
Version 3.70.0
Gewijzigd (Changed)
- PDF/VT-validatie controleert
GTS_Scope,GTS_XID,GTS_EnvenGTS_Encapsulatednu rechtstreeks op elke XObject in plaats van naburige of geneste dictionaries aan de hintvereisten te laten voldoen Record-scope lostRecordLevelnu op uit de indirecteDPartRoot-dictionary, terwijlStream-scope in PDF/VT-1-bestanden wordt geweigerd- Gedecodeerde content streams van pagina's en Form XObjects valideren nu
Do-resourcezichtbaarheid,SingleUse-voorkomstaantallen en eigendom van recordontvangers via effectieve overgeërfde resources en de DPart-hiërarchie - Encapsulated XObjects valideren nu booleaanse shape, aanbevolen scope, Image-
Intent, geïsoleerde transparency groups, blendingkleurruimten en directe of geneste optional-content-afhankelijkheden
Version 3.69.0
Gewijzigd (Changed)
- PAdES-validatie wijst nu dubbele
Contents-,ByteRange-,SubFilter-,Filter- enType-entries af in plaats van de door de parser gekozen waarde te accepteren - Handtekeningdetectie gebruikt nu een streambewuste lineaire dictionaryscan, herkent geëscapete PDF-nametokens en kan niet worden omgebogen door een gesloten geneste dictionary vóór de echte
ByteRange - Validatie van handtekening-
ByteRangevereist nu dat de uitgesloten opening exact matcht met het directe hexadecimaleContents-token, terwijl latere incrementele revisies nog steeds zijn toegestaan - Handtekeningdictionaries vereisen nu één naamwaardig
Filteren dwingen consistente combinaties vanSig- ofDocTimeStamp-type en subfilter af
Version 3.68.0
Toegevoegd (Added)
TPdf.BuildPadesEvidenceReportcorreleert PDFium-handtekeningfeiten, CMS-beleid, vertrouwens- en timestampstatus, certificaatpad-hashes, DSS/VRI-dekking en beslissingen van latere revisies voor elke handtekeningTPadesEvidenceReportexporteert begrensd bewijs voor meerdere handtekeningen als JSON of CSV en rapporteert telemetrie over bron, handtekening, DSS, revisie en afkapping
Gewijzigd (Changed)
- PAdES-trustvalidatie legt nu SHA-256-identiteiten vast voor het ondertekenaarscertificaat en het geordende Windows-certificaatpad, terwijl validatie standaard offline blijft
- Het genereren van bewijs hergebruikt één vastgehouden vastlegging van bronbytes voor compliance-, trust-, DSS- en revisieanalyse, in plaats van de originele PDF per fase naar een nieuwe stream te kopiëren
Version 3.67.0
Toegevoegd (Added)
TPadesSignatureFieldOptionsmaakt configureerbare handtekeningveldnamen aan, plus vereiste seed values, lijsten met redenen en wettelijke attestaties, acceptabele ondertekenaarscertificaten en veldvergrendelingen- Lokaal en extern ondertekenen kan goedkeurings- of certificeringssignaturen opstellen met ISO 32000-1
FieldMDP- enDocMDP-transformaties
Gewijzigd (Changed)
- Certificeringssignaturen behouden bestaande catalog-machtigingen en registreren de nieuwe handtekening via
/Perms /DocMDP
Version 3.66.0
Toegevoegd (Added)
RenderPageBandedToStreamschrijft PNG- of TIFF-output rechtstreeks naar een stream van de aanroeper, met configureerbare bandhoogte, PNG-compressie en outputbytelimietenRenderPageBandedToEncodervoedt opeenvolgende paginabanden aan door de aanroeper gedefinieerde codecs en geeft telemetrie terug over banden, rijen, geheugen, voltooiing en output
Opgelost (Fixed)
RenderPageBandedbehoudt nu de rendergeometrie van de volledige pagina en clipst elke gevraagde band in plaats van de complete pagina in elke band opnieuw te schalen
Version 3.65.0
Toegevoegd (Added)
TPdfParallelRenderReportrapporteert nu bronformaat, piekgeheugen van de vastlegging, storage-backend en soort gedeelde backing
Gewijzigd (Changed)
RenderPagesParalleldeelt de vastgelegde bron via onveranderlijk geheugen, een alleen-lezen file mapping ofFPDF_LoadCustomDocument-random access in plaats van een tweede byte-array van het volledige document toe te wijzen- Overgelopen parallel-render-bronnen blijven onder
SaveMemoryLimiten vereisen niet langer dat de volledige PDF opnieuw in adresseerbaar procesgeheugen wordt geladen
Version 3.64.0
Toegevoegd (Added)
ImportImposedheeft nu een overload dieTPdfImpositionExecutionReportteruggeeft met aantallen voor native imports, unieke bronnen, lege slots, XObject-sjablonen, formulierobjecten, contentgeneratie en outputpagina's
Gewijzigd (Changed)
- Zero-geometry-impositie stuurt elke geordende bronpagina door één
FPDF_ImportPagesByIndex-aanroep vóór het invoegen van lege pagina's en native N-up-samenstelling - Custom-geometry-impositie hergebruikt één native XObject-sjabloon per unieke bronpagina, leest gecachte paginametrics zonder de bronpagina te wijzigen en wijst vooraf exacte planopslag toe
Version 3.63.0
Toegevoegd (Added)
BeginPageObjectEditTransaction,CommitPageObjectEditTransactionenRollbackPageObjectEditTransactiongroeperen native pagina-object-mutaties in een atomaire batch per pagina, met gevalideerde snapshot-rollbackPageObjectEditTransactionStatusrapporteert de gebonden pagina, de dirty state, het aantal geslaagde mutaties en het aantal contentgeneraties
Gewijzigd (Changed)
- Vastgelegde objectbatches roepen
FPDFPage_GenerateContentnu één keer aan in plaats van één keer per insert-, verwijder-, transformatie-, eigenschaps-, mark-, annotatieobject- of appearance-mutatie - Opslaan, paginawissels, het verwijderen van pagina's, geneste edit-transacties en mislukte native insert- of annotatie-updates worden geweigerd voordat uitgestelde content verloren kan gaan
Version 3.62.0
Toegevoegd (Added)
ReadPageObjectsSnapshotlegt pagina-object-feiten vast in eigendom van de aanroeper, met budgetten voor objecten, paden, clips, marks, tekst, strings en deadlinesPageObjectsSnapshotbiedt hergebruik via een revision-aware LRU met configureerbare capaciteit en telemetrie voor bezetting, hits en misses
Gewijzigd (Changed)
PageComplexityhergebruikt nu de onveranderlijke pagina-object-snapshot in plaats van native objectenumeratie en transparantie-, pad- en afbeeldingsquery's te herhalen
Version 3.61.0
Toegevoegd (Added)
TPdfontsluit nu één verenigde thumbnail-LRU voor ingebedde en gerenderde previews, met configureerbare entry- en byteplafonds plus telemetrie voor hits, misses, verwijdering, bezetting en revisiesRenderPageThumbnailaccepteert rotatie, renderopties, achtergrondkleur enTPdfColorSchemeen behoudt daarbij het bitmapcontract van de aanroeper
Gewijzigd (Changed)
- Herhaalde thumbnail-extractie en -rendering hergebruiken native PDFium-resultaten via keys voor revisie, pagina, bron, grootte, rotatie, flags, achtergrond en kleurenschema, inclusief gecachte afwezigheid van optionele ingebedde thumbnails
TPdfThumbnailViewsynchroniseert zijn bitmapcache van zichtbare pagina's met de thumbnail-revisies van het document, zodat bewerkingen geen verouderde previews kunnen achterlaten
Version 3.60.0
Toegevoegd (Added)
ReadTextPageSnapshotlegt Unicode, UTF-16-mappings, tekengeometrie en -stijl en genormaliseerde metadata van tekstobjecten in één keer vast, met expliciete budgetten voor tekens, objecten, fontnamen en deadlinesTextPageSnapshotbiedt diepe kopieën in eigendom van de aanroeper via een configureerbare revision-aware LRU met telemetrie voor capaciteit, aantallen, hits en misses
Gewijzigd (Changed)
GetStructuredTexten de physical-layout-variant vanGetTextInReadingOrderhergebruiken nu dezelfde tekstsnapshot en passen O(n log n)-geometriesortering toe
Opgelost (Fixed)
- Kleine tekst- en structuur-snapshotcaches verwijderen nu de oudste pagina bij het opslaan van nieuwe data onder de gevraagde pagina-index, zodat cross-page cache-aliasing wordt voorkomen
Version 3.59.0
Toegevoegd (Added)
LifecycleActionPolicykiest tussen uitgeschakeld, alleen-expliciet of compatibele automatische uitvoering van PDF-document- en paginalifecycle-actiesExecuteDocumentLifecycleActionontsluit documentacties voor JavaScript, openen, sluiten, opslaan en printen, terwijlExecutePageLifecycleActionpagina-open- en -close-acties uitvoert zonderPageNumberte wijzigen
Gewijzigd (Changed)
- Headless paginaladingen ontvangen nu dezelfde automatische pagina-open- en -close-acties als door de viewer gestuurde loads, waarbij tijdelijke pagina's onder de render lock worden hergebruikt of vrijgegeven
Version 3.58.0
Toegevoegd (Added)
ReadStructureElementsenVisitStructureElementsbieden iteratieve traversing van getagde structuren met expliciete budgetten voor diepte, elementen, attributen en tijd, plus gedetailleerde voltooiingsstatusStructureElementsForPageontsluit paginasnapshots met één-based nummering zonderPageNumberte wijzigen, ondersteund door een configureerbare revision-aware LRU-cache met hit-, miss- en count-telemetrie
Gewijzigd (Changed)
- Toegankelijkheids-, reflow-, validatie- en viewer-consumenten hergebruiken nu structuursnapshots van de aanroeper totdat een relevante document- of paginabewerking ze ongeldig maakt
Version 3.57.0
Toegevoegd (Added)
- Complete native form-host-callbacks bieden nu lifetime-safe lazy page handles, cursorrouting van de interactie-view, meldingen bij waardewijzigingen, rechthoeken van geselecteerde tekst, URI-events en GoTo-bestemmingsevents
FormHostCallbacksCompletemeldt of callbacks gereed zijn, terwijlFormSelectionRectsenClearFormSelectionRectsbegrensde selectiegeometrie in pagina-ruimte ontsluiten
Opgelost (Fixed)
- XFA-current-page-callbacks vertalen nu correct tussen de zero-based pagina-indexen van PDFium en de one-based
PageNumbervan de component - AcroForm- en XFA-URI-callbacks behouden nu ruwe URI-bytes en vereisen expliciete goedkeuring van de host voordat er iets extern wordt gestart
Version 3.56.0
Toegevoegd (Added)
- Geïndexeerde
PageMetrics-snapshots ontsluiten de afmetingen, rotatie, het label, de transparantie en de vijf standaardpaginaboxen van een pagina zonder de actieve pagina te wijzigen
Gewijzigd (Changed)
- Herhaalde paginametadata-reads hergebruiken een automatisch geïnvalideerde native snapshotcache, wat pagina-openingen vermindert in thumbnail-, preflight- en documentanalysewerkbelastingen
Version 3.55.0
Toegevoegd (Added)
- Padinspectie ontsluit exacte kubische Bézier-controlepunten wanneer de geladen PDFium-build
FPDFPath_GetBezierControlPointsbiedt, met een optionele capaciteitsprobe voor oudere DLL's FormFieldTypeAtPoint,TPdfView.FormFieldTypeAten geïndexeerdeFontFlags-properties ontsluiten native formulier- en lettertypefeiten zonder ruwe handlesTPdf.Signaturesgeeft alle native handtekening-inhouden, ByteRanges, subfilters, redenen, tijden en machtigingen terug in één snapshot van de aanroeper
Gewijzigd (Changed)
- Aanwezigheidscontroles van formuliervelden gebruiken nu directe native point hit testing in plaats van annotatiehandles te openen en te sluiten
Opgelost (Fixed)
- PDF/E-1-validatie staat nu gewone AcroForm-velden, ingebedde bestanden en FileAttachment-annotaties toe en meldt tegelijk precies top-level AcroForm
/XFAen/NeedAppearances true, inclusief indirecte en object-stream-waarden
Version 3.54.0
Toegevoegd (Added)
FPdfProductionvoegt gemeten multicodec-beeldselectie, kleur- en lettertypeverwerkingsbackends, SVG-paden, gestylede vervangingsplannen, transactionele XFA-pakketupdates, barcodevectoren, Portfolio-modellen en veilige RichMedia-extractie toeFPdfStandardsExecutionvoegt metings- en GeoPDF-conversie, transactioneel PDF/A-herstel, PDF/UA-2-plannen, externe multikleurprofielen, historisch DSS- en VRI-bewijs, DPart-query's, diepgaande PDF/E-feiten en PDF/R-strips met vast geheugen toeTPdf.ImportImposedstelt begrensde N-up- en bookletplannen samen via native N-up- of pagina-XObject-paden met exacte goot-, bleed- en creep-geometrie, terwijlTPdf.CompareWithsemantische, geometrische en tolerante pixelverschillen rapporteert- PAdES-ondertekening ondersteunt nu plugbare padvalidators en HSM-providers, aan handtekeningen gekoppelde PDF MAC,
cms-algorithm-protectionen offline handtekeningsbeleidsdocumenten
Gewijzigd (Changed)
- De layout-engine accepteert begrensde HTML en Markdown, vloeit over kolommen en lost vaste, automatische en fractionele rastertracks op
- XFDF-round-trips behouden nu meerwaardevelden en rich-text-velden, popups, acties, bestemmingen, appearance-overlays, aangepaste namespaces en expliciete aanwezigheidsstatus
Version 3.53.0
Toegevoegd (Added)
ConfigurePdfLibrarybiedt onveranderlijke native renderer-, lettertype-, V8-, Brotli-, user-font-path- en sandboxconfiguratie vóór de eerste PDFium-load- Native structuurattributen, annotatierelaties, annotatie-bestandsattachments, getypeerde woordenboekwaarden, focusbeleid, link- en formulier-z-order-query's en standaard-TTF-mappingdiagnostiek zijn beschikbaar via begrensde hoogwaardige API's
TPdfView.ReplaceFormTextAndKeepSelectionbehoudt de actieve selectie over herhaalde bewerkingen en release-events van de rechtermuisknop bereiken nu de native formulierengine
Gewijzigd (Changed)
- Deterministische documenttijd gebruikt nu een stabiele UTC-kalenderconversie naast het vaste tijdperk, waardoor dezelfde metadata in elke hosttijdzone ontstaat
- Attachment-string-schrijfacties valideren het native resultaat en coderen woordenboeksleutels als UTF-8
Version 3.52.0
Toegevoegd (Added)
TPdf.GetImageObjectRenderedBitmapgeeft het gerenderde resultaat van een afbeeldingsobject terug met de huidige matrix, kleurruimte, masks en rendertoestand toegepastTPdf.TextObjectGlyphWidth,TPdf.TextObjectFontSizeenTPdf.SetTextObjectFontSizeontsluiten native glyphmeting en exacte bewerking van de lettertypegrootte van tekstobjectenTPdf.TransformPageObjectClipPath,TPdf.DetachFormObjectChild,TPdf.SharePageObjectMarkenTPdf.IsAnnotationObjectSubtypeSupportedvoegen nauwkeurige bewerking van contentobjecten en capaciteitsinspectie toe
Version 3.51.0
Opgelost (Fixed)
- Acht
TPdf-leden die eerdere release-notities al aankondigden stonden in de private-sectie gedeclareerd en konden niet van buiten de unitPDFiumworden aangeroepen; ze zijn nu public zoals gedocumenteerd:LinkAtPoint,GetTextRenderMode,GetTextObjectRenderedBitmap,IsAnnotationSubtypeSupported,ChooseRenderFlags,AttachmentHasKey,GetAttachmentStringValueenSetAttachmentStringValue
Gewijzigd (Changed)
- De Engelse referentiedocumentatie dekt nu elk publiek lid van
TPdfenTPdfView: 88 leden zonder referentiepagina hebben er een gekregen, en de klassepagina's, de navigatie-index en de API-referentie vermelden ze allemaal - Referentiepagina's die eerder naar een gedeelde pagina wezen, linken nu naar de pagina van het lid zelf, zodat een zoekresultaat direct de beschrijving opent van de API waarop werd gezocht
- De API-referentie documenteert de enumeraties en records die vanuit publieke signatures bereikbaar zijn, waaronder load- en streamrapportage, tekst-, lettertype- en OCR-types, layout-builder-types, PAdES-validatietypes, batch- en validatietypes en parallelle rendering-types
Version 3.50.0
Toegevoegd (Added)
- Elke GUI-demo opent nu met direct bruikbare inhoud in plaats van een leeg formulier: viewer- en lab-demo's laden een gegenereerd voorbeelddocument, rapportdemo's produceren bij het opstarten een voltooid rapport en processordemo's genereren vooraf voorbeeldinvoer, zodat de hoofdactie met één klik draait
MultiPageViewer,SplitViewenFontPropertiesgenereren bij het opstarten voorbeelddocumenten in het geheugen (een showcase van zes pagina's, twee documenten ter vergelijking naast elkaar en een pagina met meerdere lettertypen voor inspectie via klikken)- Processordemo's zoals
MergePDF,BatchExport,SplitPDF,ExtractText,PDFtoJpg,PrintPDFenPrintPreferencesgenereren voorbeeld-PDF's naast het executable en vullen vooraf hun invoerbesturingselementen in, met idempotente regeneratie die bestaande bestanden nooit overschrijft FormFillenExtractImagesladen automatisch de voorbeeldbestanden die in hun demomappen worden meegeleverd,ImageToPDFgenereert twee voorbeeldbitmaps,WatermarkStampbouwt vooraf zijn stempelvoorbeelden enXfdfLabopent met een gegenereerd document met tekst- en highlight-annotaties
Gewijzigd (Changed)
CreatePDFgenereert nu bij het opstartenSample.pdfnaast het executable zonder een dialoogvenster te tonen, zodat het document bestaat zodra de demo opentTPdf.AboutInfoen installatiemetadata rapporteren nu consistent Version 3.50.0
Version 3.49.0
Toegevoegd (Added)
FORM_GetTextDirectionenFORM_SetTextDirectionuit de bijgewerkte PDFium-binaries zijn nu gebonden, waardoor de dynamische bindinglaag volledige dekking behoudt van alle 472 PDFium-exportsTPdf.FocusedFormFieldTextDirectionenTPdf.SetFocusedFormFieldTextDirectionontsluiten de tekstrichting in het geheugen van het gefocuste widget via de nieuwe enumTPdfFormTextDirection(ftdUnknown,ftdAuto,ftdLTR,ftdRTL), metTPdfView-tegenhangers die de paginascène opnieuw tekenen na een richtingswijziging
Gewijzigd (Changed)
FPDF_LIBRARY_CONFIGspiegelt nu de PDFium-layout van versie 6 met het experimentele veldm_BrotliEnabledvoor binaries gebouwd metPDF_ENABLE_BROTLITPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.49.0
Version 3.48.0
Toegevoegd (Added)
- De demo
PDFViewergenereert nu bij het opstarten een showcase-document van zes pagina's in het geheugen via de creation-API, zodat de viewer opent met gerenderde inhoud en zonder voorbeeldbestand op schijf - Een miniatuurpaneel gebouwd op
TPdfThumbnailViewbiedt paginavoorbeelden met navigatie via een klik naast de bladwijzerboom in alle drie de demo-ports - Het zoeken in de viewer markeert nu elke overeenkomst op de huidige pagina via
HighlightSearchTextin plaats van één resultaatrechthoek, met het aantal overeenkomsten gerapporteerd in de statusbalk - De werkbalkknoppen
Nighten2-Upschakelen met één klik de nachtmodus voor duotone-rendering en de weergavemodus met tweepaginaspreiding om
Gewijzigd (Changed)
- Tekstselectie in de viewer gebruikt nu de ingebouwde selectie-engine van
TPdfViewmet woordselectie via dubbelklikken, sleepselectie en klembordsneltoetsen, ter vervanging van de handgeschreven selectiecode - Pagina's renderen met een slagschaduw en vloeiend scrollen voor een moderne leeservaring
TPdf.AboutInfoen installatiemetadata rapporteren nu consistent Version 3.48.0
Version 3.47.0
Toegevoegd (Added)
FPdfBenchmarkdraait begrensde PDF-corpussets met configureerbare warm-up en gemeten runs, pagina- en pixellimieten, coöperatieve annulering en per case de status geslaagd, mislukt of overgeslagenTPdfBenchmarkReportregistreert invoer- en opgeslagen bytegroottes, laad- en eerste-paginalatentie, render-doorvoer, timing van opslaan en heropenen, bemonsterde piek-working-set, semantische en pixel-SHA-256-hashes, stabiliteit over herhaalde runs, verwachte-hash-poorten en onafhankelijke heropen-equivalentie- Benchmarkrapporten exporteren formuleveilige CSV en gestructureerde JSON voor CI, release-kwalificatie en longitudinale prestatievolging
GetSkiaRenderCapabilities,RenderPageSkiaenRenderPageSkiaByIndexontsluiten optionele native Skia-rendering van pagina's en formulieren met hergebruik van de geparste-pagina-cache en zonder harde DLL-exportvereiste- Een capability-gated print-uitvoer-ABI met versiebeheer ontsluit exacte spot-plate-enumeratie, plate-rendering, overprint-detectie en overprint-voorbeeldweergave wanneer het geladen PDFium-module deze levert
Opgelost (Fixed)
- PDFium-builds zonder
PDF_USE_SKIAladen nu normaal in plaats van te mislukken omdat experimentele Skia-exports ontbreken
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.47.0
Version 3.46.0
Toegevoegd (Added)
ValidatePdfRcontroleert nu uitsluitend-raster paginainhoud, strip-geometrie, kleurmodellen, effectieve resolutie, compressieparameters, vereiste metadata en versleutelde PDF 2.0-profielen via configureerbare validatieoptiesBuildPdfARepairPlanzet validatiebewijs om in op afhankelijkheid gesorteerde herstelstappen met veiligheidsklassen, bescherming tegen handtekeningimpact en JSON-uitvoerBuildPdfXProductionPreflightrapporteert paginaboxen, ingebedde lettertypen, output intents, colourants, transparantie, overprint, separations, beeldresolutie en productiereedheid zonder image-payloads te decoderen- PDF/UA-2-structuurvalidatie controleert nu eigendom van gekoppelde bestanden, leesvolgorde, beschrijvingen, relaties en vindbaarheid
Gewijzigd (Changed)
TAssociateFile.Description,TPdf.ImageInfoenTPdf.PageComplexityontsluiten de metadata die workflows voor gekoppelde bestanden en productie-preflight nodig hebbenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.46.0
Version 3.45.0
Toegevoegd (Added)
TPdfXmpPacketparseert, bewerkt, kloont en serialiseert namespace-bewuste XMP met onbekende namespaces, getypeerde RDF-containers, URI- en resource-waarden, qualifiers, taalalternatieven, packet-wrappers en behouden paddingTPdf.ReadXmpPacketenSaveAsWithXmpPacketontsluiten high-level metadata-lezen en atomaire uitvoer, waarbij wijzigingen aan ondertekende documenten expliciete autorisatie vereisen
Beveiliging (Security)
- De begrensde XML-reader wijst DTD's en externe entiteiten af en beperkt packet-bytes, nesting, nodes, attributen en numerieke tekenreferenties
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.45.0
Version 3.44.0
Toegevoegd (Added)
TPdfValidationRuleRegistryregistreert profielclausules met ernst, afhankelijkheden, herstelrichtlijnen, bewijs en ingebouwde of aangepaste predicatenTPdfValidationBudgetenTPdfValidationExecutionContextbegrenzen regels, fouten, objecten, recursie, UTF-8-bewijs, gereserveerd geheugen, verstreken tijd, fast-fail en coöperatieve annuleringValidatePdfFilesParallelvalideert bestanden via geïsoleerde worker-documenten met behoud van invoervolgorde en aggregeert probleemverdelingen, timings, fouten, annuleringen en laadfouten
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.44.0
Version 3.43.0
Toegevoegd (Added)
TPdfStructureElementbevat nu feiten over namespace, namespace-roltoewijzing, referenties, gekoppelde bestanden, annotaties, widgets, labels en uiterlijken voor semantische PDF/UA-2-validatieValidatePdfUa2StructureElementsen de gerichte validators controleren ISO/TS 32005-namespaces en -insluiting, begrensde tabelrasters, annotaties, formulieren, Formula/MathML-koppelingen, gekoppelde bestanden, documentwortels, FENote, lijsten, TOC-referenties, titels en bijschriften zonderpdfium.dllte ladenClassifyPdfUaNamespaceidentificeert de PDF 1.7-, PDF 2.0-, MathML-, ARIA-, DPUB-, aangepaste en ontbrekende structuurnamespacesPdfUa2StructureHasIssuebiedt een C++Builder-veilige query voor één enkel probleem zonder een Pascal-set by value terug te geven
Gewijzigd (Changed)
ValidatePdfUaStructureElementspast automatisch de nieuwe semantische regelset toe voorpuc2met behoud van het PDF/UA-1-regelpadTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.43.0
Version 3.42.0
Toegevoegd (Added)
TPdfUaSaveOptions.PdfUa2creëert PDF/UA-2-uitvoer metpdfuaid:part2,pdfuaid:rev2024 en een effectieve PDF 2.0-catalogusversieValidatePdfUadetecteertpuc2en rapporteert ontbrekende revisiemetadata, niet-PDF-2.0-bestanden, naamloze optional-content-configuraties, afgeschafte annotaties en generieke H-koppen
Gewijzigd (Changed)
- PDF/UA-validatie kiest nu profielspecifieke regels voor tabvolgorde, XFA en koppen voor PDF/UA-1 en PDF/UA-2
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.42.0
Version 3.41.0
Toegevoegd (Added)
SetPageObjectMarkParamvoegt één integer-, real-, string- of blob-parameter toe aan een bestaande marked-content-ingang of vervangt deze, zonder de mark zelf te vervangenRemovePageObjectMarkParamverwijdert één geselecteerde eigenschap met behoud van de naam van de mark en alle overige eigenschappen
Gewijzigd (Changed)
- Niet-gehele marked-content-getallen maken nu een retourtje als
pmpFloatin plaats van te worden afgekapt tot integer-snapshots - Mislukte parametervalidatie tijdens
AddPageObjectMarkverwijdert de gedeeltelijk gecreëerde native mark TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.41.0
Version 3.40.0
Toegevoegd (Added)
ConfigureSystemFontProviderinstalleert een toepassingslettertype-mapper voordat PDFium start en levert gevalideerde TrueType- of OpenType-bytes voor ontbrekende of vervangen documentlettertypenTPdfSystemFontPolicybeheerst face-substitutie, native fallback, byte-limieten per lettertype en begrensde aanvraagcachingGetSystemFontProviderStatisticsrapporteert mapping-, cache-, fallback-, afwijzings-, datatabel- en live-handle-activiteit
Gewijzigd (Changed)
- Provider-callbacks ontsluiten het door PDFium gevraagde face, gewicht, stijl, charset en pitch, terwijl callback-fouten binnen de native grens blijven
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.40.0
Version 3.39.0
Toegevoegd (Added)
AddCidType2Textembedt door de aanroeper geleverde TrueType-data met expliciete CID-naar-GID-geometrie per glyph en CID-naar-Unicode-mappingsTPdfCidFontOptionskiest volledige inbedding, voorkeurssubsetting met fallback of verplichte subsetting en configureert begrensde lettertype-, glyph- en Unicode-budgettenTPdfCidFontReportrapporteert subsetbeslissingen, bytegroottes, unieke glyphs, inbeddingsstatus, verwachte tekst, geëxtraheerde tekst en extractie-integriteit
Gewijzigd (Changed)
- TrueType-subsetting behoudt gevraagde glyph-identificaties, wijst onveilige uitvoer af en rolt elk ingevoegd pagina-object terug als mapping- of extractieverificatie mislukt
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.39.0
Version 3.38.0
Toegevoegd (Added)
BuildReflowDocumentcreëert een begrensde, herbruikbare semantische knoopboom uit Tagged PDF-structuur of inferentie van de fysieke lay-out over een geselecteerd paginabereikTPdfReflowDocument.ToHtmlgenereert geëscapete responsieve koppen, alinea's, lijsten, figuren, bijschriften, paginasecties en tabellen met kop- en span-semantiekTPdfReflowOptionsbeheerst tabeldetectie, paginasecties, geometrie, CSS, regeleinden, paginabereik, annulering en resource-budgetten
Gewijzigd (Changed)
- Tabelinhoud vervangt overlappende alineablokken tijdens reflow, en de actieve-pagina-status wordt hersteld na succes, mislukking of annulering
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.38.0
Version 3.37.0
Toegevoegd (Added)
ApplyOcrSearchLayerrendert geselecteerde pagina's via PDFium en stuurt begrensde top-down BGRA-pixels naar een door de aanroeper geleverdeIPdfOcrProviderTPdfOcrWorddraagt Unicode-tekst, confidence en vierhoeken in pixelruimte, die via native paginageometrie worden omgezet naar onzichtbare doorzoekbare tekstTPdfOcrReportregistreert per pagina voltooiing, overslaan wegens bestaande tekst, fouten, annulering, gerenderde pixels en geaccepteerde of verworpen woorden
Gewijzigd (Changed)
- OCR-invoeging behoudt originele scan-image-streams, filtert misvormde of low-confidence-resultaten, legt één keer per pagina vast en herstelt de actieve pagina
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.37.0
Version 3.36.0
Toegevoegd (Added)
ExtractTablesdetecteert tabellen met lijnen en op witruimte uitgelijnde tabellen uit native woordgeometrie en getransformeerde pad-lijnenTPdfTablerapporteert rijen, kolommen, samengevoegde spans, paginagrenzen, kopcellen, detectiemodus, confidence en directe CSV- of JSON-uitvoerExtractDocumentTablesscant elke pagina onder gedeelde budgetten en markeert overeenkomende tabellen die over paginagrenzen doorlopen
Gewijzigd (Changed)
- Tabelextractie handhaaft configureerbare limieten voor woorden, lijnen, cellen en tabellen en herstelt de actieve pagina na scans op documentniveau
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.36.0
Version 3.35.0
Toegevoegd (Added)
GenerateTaggedLayoutcreëert een nieuw semantisch lay-outdocument met native marked content, een Document-structuurboom, ParentTree- en IDTree-mappings en metadata voor de documenttaalTPdfLayoutSemanticsmodelleert koppen, secties, lijsten, figuren, bijschriften, tabellen, kopkoppelingen, spans, alternatieve tekst, actual text, talen en element-ID'sTPdfLayoutDocument.AddLinkgenereert URI-Link-annotaties en koppelt elke annotatie aan zijn Link-structuurelement via OBJR- en StructParent-mappings
Gewijzigd (Changed)
- Lay-outtekst krijgt standaard alinea-semantiek, terwijl koppen, voetteksten, lijnen, afbeeldingen en herbruikbare formulieren standaard artifacts zijn, tenzij ze expliciet worden getagd
- Semantische planvalidatie wijst dubbele ID's, ontbrekende ouders, cycli, ongeldige lijst- of tabelinsluiting, figuren zonder vervangende tekst en onopgeloste tabelkop-ID's af voordat het document wordt gegenereerd
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.35.0
Version 3.34.0
Toegevoegd (Added)
TPdf.AddShapedTextschrijft RTL-, bidi-, contextuele en ligatuur-glyph-runs via native systeemshaping en de PDFium CID Type 2-lettertype-API'sShapePdfTextenTPdfUniscribeTextShaperontsluiten gepositioneerde glyph-ID's, advances, offsets, bronclusters, visuele run-posities en bidi-niveaus zonder een document te wijzigen
Gewijzigd (Changed)
- Gegenereerde ToUnicode-maps dekken elke gevormde glyph, terwijl
ActualTextde oorspronkelijke logische Unicode-string opslaat voor conforme extractie- en toegankelijkheidsconsumers - Marked-content-strings met UTF-16 byte-order marks worden nu correct gedecodeerd via
PageObjectMarks TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.34.0
Version 3.33.0
Toegevoegd (Added)
TPdfLayoutCachedNodebouwt gesubclasseerde lay-outinhoud bij eerste gebruik en ondersteunt herhaalde geschaalde plaatsingen viaAddCachedNodeTPdfLayoutPlanrapporteert treffers en missers in de meetcache, plaatsingen van cached nodes en hergebruikte native XObjects
Gewijzigd (Changed)
BuildPlanhergebruikt overeenkomende plannen op basis van identieke volledige paginabeperkingen, inhoud, lettertype, stijl, bron en meter, zonder tekstmeting te herhalenGenerateLayoutzet elke unieke cached node om naar één op de bestemming gebonden XObject en creëert lichtgewicht Form-objecten voor elke plaatsingTPdf.AboutInfo, pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.33.0
Version 3.32.0
Toegevoegd (Added)
TPdfLayoutDocumentbouwt afgebroken tekst, spacers, lijnen, afbeeldingen, herbruikbare pagina-XObjects, expliciete pagina-einden, kop- en voetteksten tot een gemeten paginaplanGenerateLayoutpagineert de volledige lay-out voordat er atomair native pagina's en pagina-objecten worden toegevoegd, met stabiele{page}- en{pages}-referenties
Gewijzigd (Changed)
TPdf.AboutInfo, pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.32.0
Version 3.31.0
Toegevoegd (Added)
TPdfPagePlan-builders beschrijven verwijder-, verplaats-, invoeg-, splits- en samenvoegbewerkingen voor pagina's zonder ze toe te passenValidatePagePlanlevert de exacte oud-naar-nieuw-paginakaart op en inventariseert getroffen bladwijzers, benoemde bestemmingen, paginalabels, formuliervelden, getagde pagina's, geïmporteerde functies en handtekeningen
Beveiliging (Security)
- Plannen die zwevende navigatiedoelen zouden achterlaten of ondertekende inhoud zouden wijzigen zonder expliciete autorisatie worden afgewezen voordat er een native paginabewerking draait
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.31.0
Version 3.30.0
Toegevoegd (Added)
SaveRecoverySnapshotschrijft een van een controlesom voorzien, qua omvang begrensd herstelpakket met de bronvingerafdruk en het geverifieerde bewerkingsjournaal van het documentRestoreRecoverySnapshotspeelt een herstelpakket alleen opnieuw af wanneer de controlesom, journaalketen, bronvingerafdruk en herstelde vingerafdruk allemaal overeenkomenEnableRecoveryAutosavevernieuwt een expliciet herstelbestand atomair na elke gewijzigde commit, undo of redo, zonder de bron-PDF te herschrijven
Gewijzigd (Changed)
InspectRecoverySnapshotrapporteert herstelbron, vingerafdrukken, aantal ingangen, positie en begrensde opslag zonder het pakket toe te passenImportEditJournalen het herstellen vanuit een herstelpakket vereisen nu explicieteAllowSignedDocument-autorisatie voordat bewerkingen op een ondertekende PDF worden toegepast- De opslag van herstelpakketten gebruikt de geconfigureerde begrensde random-access-store en write-through-vervanging in dezelfde map voor grote journaals en crash-veilige autosave-updates
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.30.0
Version 3.29.0
Toegevoegd (Added)
BeginEditTransaction,CommitEditTransactionenRollbackEditTransactiongroeperen willekeurige native documentbewerkingen in atomaire transactiesUndoEditenRedoEditpassen met SHA-256 geverifieerde inverse en forward-delta's toe over wijzigingen aan pagina's, objecten, annotaties, bijlagen en metadataExportEditJournalenImportEditJournalbewaren begrensde draagbare delta's met validatie van bronvingerafdruk en digest-keten voor latere herhaling
Gewijzigd (Changed)
- Transactiesnapshots gebruiken reproduceerbare native uitvoer, zodat ongewijzigde commits leeg blijven, ook wanneer gewone PDFium-opslagacties niet-deterministische identifiers of tijdstempels bevatten
- Mislukte commits en ongeldige journaalherhaling herstellen het vorige laadbare document atomair, terwijl het aantal ingangen, opgeslagen bytes en snapshotgrootte onder de door de aanroeper geconfigureerde limieten blijven
- Ondertekende PDF's vereisen expliciete
AllowSignedDocument-autorisatie voordat een document-bewerkingstransactie begint TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.29.0
Version 3.28.0
Toegevoegd (Added)
TPdf.InspectOptionalContentnummert OCG-lagen, standaard- en alternatieve configuraties, View/Print/Export-gebruiksstatussen, zoom- en taalmetadata, vergrendelde lagen, volgorde-arrays, radiogroepen, OCMD-beleid, zichtbaarheidsexpressies en effectieve renderstatus opTPdf.SaveAsOptionalContentConfiguredschrijft een streng geverifieerde kopie met door de aanroeper gekozen laagstatussen voor een gekozen gebruik en configuratie
Gewijzigd (Changed)
- Laagstatus-uitvoer werkt nu zowel de configuratie-arrays
/ONen/OFFals de OCG-Usage-statuswoordenboeken bij, zodat PDFium de gevraagde zichtbaarheid toepast via zijn native rendercontext - Configuratiewrites wijzen onbekende groepen, wijzigingen aan vergrendelde lagen, radiogroepconflicten, versleutelde bestanden in staging en ondertekende bestanden zonder expliciete autorisatie af en verwijderen standaard automatische-statusregels om het gekozen resultaat deterministisch te houden
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.28.0
Version 3.27.0
Toegevoegd (Added)
TPdf.RenderPageByIndexrendert elke op één gebaseerde pagina op een exacte pixelgrootte zonder de actieve bewerkingspagina te wijzigen of paginawijzigingsgebeurtenissen te triggerenPageSceneCacheCapacity,PageSceneCacheCountenClearPageSceneCacheontsluiten begrensde scene-cache-besturing en -diagnostiek
Gewijzigd (Changed)
- Geïndexeerde paginarenderingen, gerenderde miniaturen en extractie van ingebedde miniaturen hergebruiken nu standaard geparste PDFium-paginastatus via een LRU-cache van acht ingangen
- Scene-ingangen worden ongeldig bij pagina-activatie, bewerking, wijzigingen in de paginaboom, form-status-callbacks, expliciet wissen en het afbreken van het document, waarbij renders die nog lopen veilig worden vastgehouden tot vrijgave
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.27.0
Version 3.26.0
Toegevoegd (Added)
TPadesSignatureAlgorithmInforapporteert per CMS-ondertekenaar de digest-, handtekening-, publieke-sleutel- en benoemde-curve-OID's samen met de onafhankelijk geëvalueerde algoritmebeleidstatusInspectPadesSignatureAlgorithmenEvaluatePadesSignatureAlgorithmherkennen de profielen P-256, P-384, P-521, brainpoolP256r1, brainpoolP384r1, brainpoolP512r1, Ed25519 en Ed448
Beveiliging (Security)
- PAdES-validatie wijst nu mismatches tussen elliptische curve en digest af, ECDSA-handtekening-OID's die niet overeenkomen met de CMS-digest, naamloze EC-parameters, Ed25519-parameters en Ed448-SHAKE256-uitvoerlengtes anders dan 512 bits
- Native CMS-verificatie blijft de bron van cryptografische geldigheid, terwijl onbeschikbare algoritmen en onherkende curves als
pcsUnsupportedworden gerapporteerd in plaats van als ongeldige handtekeningen te worden behandeld TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.26.0
Version 3.25.0
Toegevoegd (Added)
TPdf.ExportObjectGraphexporteert actieve klassieke, xref-stream- en object-stream-objecten als begrensde getypeerde JSON met expliciete woordenboeken, arrays, strings, namen, scalaire waarden, indirecte referenties, stream-byteaantallen en optionele SHA-256-stream-digestsTPdf.SaveAsObjectGraphPatchedzet op schema gecontroleerde woordenboekwaarden op het hoogste niveau of verwijdert ze via getypeerde null-, Boolean-, integer-, real-, naam-, tekststring- en indirecte-referentie-patchwaarden
Beveiliging (Security)
- Object-graph-export handhaaft budgetten voor objecten, recursie, strings en uitvoerbytes, terwijl patching elke bewerking valideert vóór levering en zwevende referenties, dubbele bewerkingen, versleutelde invoer, beschermde stream-filter- of lengtewijzigingen en ondertekende documenten afwijst tenzij expliciet geautoriseerd
- Object-graph-patches worden gestaged als een incrementele revisie, opnieuw gerealiseerd voor xref-verificatie, strikt geladen via PDFium en pas gekopieerd of atomair hernoemd nadat alle controles slagen
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.25.0
Version 3.24.0
Toegevoegd (Added)
TPdf.ValidatePadesTrustverifieert elke vindbare detached handtekening tegen de exacte origineleByteRange, evalueert de signing-certificate-v2-binding en het huidige Windows-systeemvertrouwen en rapporteert onafhankelijke statussen voor handtekening, keten, intrekking en tijdstempelTPdf.ValidatePadesTrustAsyncmaakt vóór verzending een snapshot van de origineel geladen bron, rapporteert gefaseerde voortgang voor parsing, cryptografie, ketenopbouw, AIA, OCSP, CRL en RFC 3161-tijdstempelwerk en ondersteunt coöperatieve annuleringTPadesTrustValidationOptionskiest offline of online vertrouwen, optionele intrekkings- en tijdstempelverificatie, een begrensde time-out voor URL-ophalen, een annuleringstoken en een voortgangscallback
Beveiliging (Security)
- Tijdstempels van handtekeningen en Document Time-stamp-tokens valideren nu hun SHA-256-message-imprint, bijgevoegde CMS-handtekening, TSA-keten en optionele intrekkingsstatus onafhankelijk van de gewone documenthandtekening
- Vertrouwensvalidatie hasht nooit een door PDFium opnieuw opgeslagen kopie, staat standaard op offline cache-only certificaatophalen en rapporteert niet-ondersteunde of onbepaalde statussen in plaats van niet-beschikbaar native vertrouwen of intrekkingsbewijs als geldig te behandelen
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.24.0
Version 3.23.0
Toegevoegd (Added)
TPdf.RenewPadesArchiveTimestampenRenewPadesArchiveTimestampToStreamvoegen een nieuwe RFC 3161 Document Time-stamp toe aan een bestaande PAdES-handtekeningenketen zonder historische bytes te wijzigenTPadesArchiveTimestampOptionsbeheerst TSA-toegang, nonce, gereserveerde tokencapaciteit en een optionele volledige DSS-verversing, terwijlTPadesArchiveTimestampReportde bron- en resulterende niveaus, ketenlengtes, bytelengtes en de identiteit van de teruggegeven tijdstempel registreert
Opgelost (Fixed)
- Nieuwe en vernieuwde PAdES B-LTA-uitvoer declareert ESIC ExtensionLevel 2, terwijl B-LT-validatie Level 2 niet langer vereist, tenzij er een Document Time-stamp aanwezig is
Beveiliging (Security)
- Vernieuwing hasht de exacte origineel geladen bytes plus eventuele gevraagde DSS-update, wijst versleutelde of onvolledige bronnen af, valideert het vindbare B-LTA-resultaat voordat uitvoer wordt geschreven en staged bestandsuitvoer vóór vervanging
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.23.0
Version 3.22.0
Toegevoegd (Added)
TPdf.AnalyzeSignatureRevisionsreconstrueert de originele incrementele revisieketen en levert per handtekening objectwijzigingen op, geclassificeerd tegen DocMDP- en FieldMDP-rechtenTPadesRevisionAnalysisReportonderscheidt toegestane updates van formulieren, annotaties, handtekeningen en validatiemateriaal van niet-toegestane pagina- of documentwijzigingen, onopgeloste gevallen en verdachte schaduwdefinities
Beveiliging (Security)
- Revisieanalyse detecteert ongereferentieerde objectdefinities, herdefinities van handtekeningobjecten, actieve inhoud, misvormde revisieketens en onopgeloste gecomprimeerde objecten, met handhaving van begrensde revisie-, object- en wijzigingsbudgetten
- Analyse gebruikt altijd het originele geladen bestand, de geheugenbuffer, de aangepaste stream of de voltooide progressieve bron in plaats van door PDFium herschreven bytes
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.22.0
Version 3.21.0
Toegevoegd (Added)
TPdf.PreparePadesRemoteSignaturecreëert een placeholder met vaste breedte voor een detached handtekening en levert een blijvend verzoek op met de SHA-256-documentdigest, de exacteByteRange, reserveringscoördinaten en de vingerafdruk van de voorbereide PDFTPdf.CompletePadesRemoteSignaturerondt HSM-, cloud- of onderbroken ondertekeningsessies af na validatie van het bewaarde verzoek en de teruggegeven CMSTPdf.SavePadesRemoteSigningRequestenTPdf.LoadPadesRemoteSigningRequestbieden een stabiel, geversioneerd binair sessieformaat voor proces- en machingrenzen
Beveiliging (Security)
- Voltooiing wijst gewijzigde voorbereide PDF's, gewijzigde
ByteRange-coördinaten, hergebruikte niet-lege placeholders, te grote CMS-waarden, niet-ondersteunde SignedData-vormen, ontbrekende signing-certificate-v2-attributen en CMS-message-digests die niet overeenkomen met het voorbereide document af TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.21.0
Version 3.20.0
Toegevoegd (Added)
TPadesDssOptions.Vrisschrijft per handtekening één indirect/Type /VRI-woordenboek, gesleuteld op de hoofdletter-SHA-1 van de volledig gedecodeerde/Contents-waarde inclusief paddingTPadesDssVriselecteert certificaat-, OCSP- en CRL-materiaal via gevalideerde indexen, terwijl PAdES B-LT- en B-LTA-ondertekening nu automatisch de VRI van de nieuwe handtekening creëert
Gewijzigd (Changed)
- DSS-certificaten, OCSP-responsen en CRL's worden op content-hash gededupliceerd met stabiele volgorde van eerste voorkomen, exacte-byte-botsingscontroles en VRI-referentie-remapping voordat enige bestemmingsbytes worden geschreven
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.20.0
Version 3.19.0
Toegevoegd (Added)
TPdf.GetStructuredTextzet de huidige pagina om in herbruikbare blok-, regel- en gestyleerde-span-records met behoud van brontekenindexen, Unicode-scalars, geometrie, lettertypenamen, groottes, diktes en teksthoeckenTPdfStructuredTextOptionskiest content-stream- of fysieke-lay-outvolgorde, optionele lettertype- en semantische verrijking en een fail-closed maximaal tekenbudget- Tagged PDF- en heuristische leesbare-inhoudsfragmenten verrijken blokken met structuursoort, kopniveau, taal, bron en identiteit van het structuurelement, terwijl niet-gekoppelde Figure-alternatieve tekst vertegenwoordigd blijft
Gewijzigd (Changed)
- Fysieke-lay-out-extractie gebruikt nu O(n log n)-tekenordening, geometrisch groeiende regel- en spanbuffers, regel- en kolomclustering, gebufferde Unicode-opbouw en caching van lettertypen van aangrenzende niet-null tekstobjecten voor voorspelbare prestaties op grote pagina's
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.19.0
Version 3.18.0
Beveiliging (Security)
TPdf.SaveAsRedactedpast elke/Redact-rechthoek toe op een geïsoleerd documentsnapshot, verwijdert elk doorsnijdend pagina-object op het hoogste niveau en tekent een dekkende vervangrechthoek zonder het geladen document te wijzigen- Gerredacteerde uitvoer verwijdert redactie-annotaties, optioneel andere doorsnijdende annotaties, wist native ingebedde bijlagen en stript catalogus-
/AF, actieve inhoud, formulieren, metadata en onbereikbare objecten uit eerdere revisies TPdfRedactionOptionsbeheerst vervangingskleur, verwijdering van overlappende annotaties en een fail-closed scanbudget voor pagina-objecten, terwijlTPdfRedactionReportelke verwijdering en uitvoermetriek registreertTPdfSanitiseOptions.StripAssociatedFilesverwijdert nu standaard verwijzingen naar gekoppelde bestanden op catalogusniveau
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.18.0
Version 3.17.0
Toegevoegd (Added)
TPdf.RenderPagesParallelrendert op één gebaseerde paginaverzoeken gelijktijdig, waarbij elke worker een onafhankelijk geladen PDFium-module, document en paginastatus bezit, afkomstig uit één vastgelegd documentsnapshotTPdfParallelRenderOptionsbeheerst DPI, aantal workers, rotatie, native render-vlaggen, achtergrondkleur, pixellimieten per pagina en geaggregeerde limieten voor vastgehouden uitvoerTPdfParallelRenderReportbehoudt verzoekvolgorde en levert buffers in eigendom van de aanroeper terug, top-down BGRA of RGBA, met per pagina succes, annulering, mislukking, afmetingen, timing en diagnostische details- Progressieve worker-rendering polt
IPdfCancellationTokentussen native chunks, terwijl ongeldige verzoeken en budgetfouten geïsoleerd blijven binnen hun bijbehorende resultaten TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.17.0
Version 3.16.0
Toegevoegd (Added)
TPdfEncryptionRevision.erR7voegt ISO/TS 32003 AES-256-GCM-uitvoer toe met/V 6,/R 7,/CFM /AESV4en de vereiste PDF 2.0-ontwikkelaarsextensie- Elke versleutelde string en stream ontvangt een unieke 96-bits IV, ciphertext van ongewijzigde lengte en een 128-bits authenticatietag, terwijl
EncryptMetadata = Falsede bytes van de metadata-stream behoudt DecryptAesGcmDocumentBytesvalideert gebruikers- of eigenaarswachtwoorden, versleutelde rechten, optionele standalone PDF MAC-data en elke GCM-tag voordat PDFium-compatibele plaintext-bytes worden teruggegeven- AESV4-uitvoer kan worden gecombineerd met
TPdfEncryptOptions.EnableIntegrityProtection, zodat GCM-authenticatie per object en ISO/TS 32004 PDF MAC-bescherming van het hele document naast elkaar bestaan - Versleuteling gebruikt nu geldige klassieke cross-referentie-ingangen in plaats van objectvormige tekst binnen streamdata als indirecte objecten te interpreteren
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.16.0
Version 3.15.0
Toegevoegd (Added)
TPdfEncryptOptions.EnableIntegrityProtectionschrijft standalone ISO/TS 32004 PDF MAC-authenticatiecodes voor documenten met AES-256 Standard Security Handler revisie 5 en 6TPdf.ValidatePdfMacverifieert de exacte originele bronbytes, de strikte EOF-dekkende/ByteRange, CMSAuthenticatedData, de van het wachtwoord afgeleide bestandssleutel, geauthenticeerde attributen, de gewrapte MAC-sleutel en de HMAC-waardeFPdfHmacvoegt HMAC-SHA256 en HKDF-SHA256 toe, terwijlFPdfAesRFC 3394 AES-256 Key Wrap en geauthenticeerde unwrap-primitieven toevoegtTPdfMacValidationResultonderscheidt geldige, afwezige, ongeldige en niet-ondersteunde authenticatiecodes met diagnostische tekstTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.15.0
Version 3.14.0
Toegevoegd (Added)
TPdf.ValidatePadesverifieert nu detached CMS-handtekeningen tegen de exacte originele/ByteRange-segmenten op Windows, inclusief ondertekende attributen en de handtekeningwaardeTPadesValidationResultontsluit geaggregeerde integriteitsstatus en per handtekening de statussen van ByteRange, CMS,signing-certificate-v2, systeemvertrouwen, intrekking en tijdstempel, zonder niet-ondersteund of niet-gecontroleerd bewijs te vermengen met een ongeldige handtekening- De certificaatbinding van de ondertekenaar wordt met SHA-256 gecontroleerd, certificaatketens gebruiken cache-only evaluatie van Windows-systeemvertrouwen en native foutcodes blijven beschikbaar voor diagnostiek
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.14.0
Version 3.13.1
Opgelost (Fixed)
TPdf.ValidatePadesinspecteert nu de originele bestands-, gebufferde geheugen- of aangepaste stream-bytes in plaats van een door PDFium opnieuw opgeslagen kopie die offsets ongeldig kon maken of handtekeningswoordenboeken kon verliezen- PAdES-
/ByteRange-controles accepteren nu handtekeningen die een eerdere volledige PDF-revisie dekken gevolgd door geldige incrementele updates, en valideren tevens Document Time-stamp-bereiken TPadesValidationResult.SourceStatusonderscheidt validatie van de originele bron van niet-beschikbare of onvolledige progressieve invoer, en compliance-predicaten wijzen resultaten zonder originele bytes afTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.13.1
Version 3.13.0
Toegevoegd (Added)
FPdfSha3levert vrijstaande SHA3-256-, SHA3-384-, SHA3-512- en SHAKE256-primitieven voor ISO/TS 32001 en verwant cryptografisch PDF 2.x-werk- Incrementele contexts absorberen willekeurig gesplitste invoer, terwijl SHAKE256 herhaalde squeeze-aanroepen en uitvoer die sponge-rate-grenzen overschrijdt ondersteunt
- One-shot byte-array- en kleine-letter-hexadecimale helpers vullen de streaming-API aan, met expliciete levenscyclus- en groottevalidatie in Delphi, C++Builder en Lazarus
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.13.0
Version 3.12.0
Toegevoegd (Added)
TPdf.ImportFDFimporteert FDF-formulierdata uit bestanden of streams en past geparste waarden toe via het bestaande widget-veldenpadFdfImportFromStreamenFdfImportFromFileparseren directe of indirecte hiërarchische velden, PDF-literal- en hexadecimale strings, PDFDocEncoding, Unicode-tekst, naamwaarden en expliciete lege waarden onder begrensde resource-budgetten- FDF-export schrijft niet-ASCII-veldnamen en -waarden nu als standaardconforme UTF-16BE-tekststrings en escapet bronbestandsnamen veilig
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.12.0
Version 3.11.0
Toegevoegd (Added)
TPdf.DetectPageSkewrendert de huidige pagina op lage DPI en detecteert de scheefhoek door donkere pixels op kandidaat-rotatiehoeken te projecteren, en levert de hoek die de rij-somvariantie (uitlijning van tekstregels) maximaliseert met ~0.1 graad nauwkeurigheidTPdfSkewReportontsluit de gedetecteerde hoek, confidence en steekproefafmetingenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.11.0
Version 3.10.0
Toegevoegd (Added)
TPdf.GetTextInReadingOrderextraheert de tekst van de huidige pagina in ruwe content-stream-volgorde of fysieke-lay-outvolgorde (boven-naar-onder, links-naar-rechts) viaFPDFText_GetCharBox+ op positie gesorteerde tekenextractie, zodat tekst in meerdere kolommen en visueel herschikte tekst natuurlijk leest- De enum
TPdfReadingOrderkiest tussenroContentOrderenroPhysicalLayout TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.10.0
Version 3.09.0
Toegevoegd (Added)
TPdfImageOptimizeOptions.PreserveBilevelslaat 1-bits bilevel-afbeeldingen (ImageMask / line-art-scans) over tijdensOptimizeImages, zodat nearest-neighbour-downsampling hun scherpe randen niet vernietigtTPdfImageOptimizeOptions.MinDimensionslaat afbeeldingen kleiner dan de drempelwaarde over (doorgaans pictogrammen of decoratieve elementen die niet gebaat zijn bij verdere verkleining)TPdfImageOptimizeOptions.Defaultbiedt het aanbevolen startpunt (150 DPI-doel, ratio 1.5, bilevel behouden, minimumafmeting 8)TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.09.0
Version 3.08.0
Toegevoegd (Added)
TPdfTileCachebiedt een begrensde LRU-cache van gerenderde pagina-tiles, gesleuteld op documentrevisie, pagina, zoom, rotatie, render-vlaggen en apparaatrechthoek, zodat ongewijzigde tiles bij hertekeningen niet opnieuw worden gerenderd en verouderde tiles uit een eerdere opslag automatisch worden verwijderdTTileKeyontsluit de samengestelde cachesleutel met een statischeCreate-factory en eenEquals-comparatorTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.08.0
Version 3.07.0
Toegevoegd (Added)
TPdf.GetAnnotationFontColorenTPdf.SetAnnotationFontColoromvatten de eerder gebonden maar ongebruikteFPDFAnnot_GetFontColorenFPDFAnnot_SetFontColor, en ontsluiten lezen en schrijven van widget-tekstkleur voor het bewerken van formuliervelden zonder het annotatiewoordenboek rechtstreeks aan te rakenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.07.0
Version 3.06.0
Toegevoegd (Added)
TPdf.RenderPageBandedrendert de huidige pagina in horizontale banden via een callback, zodat posters en tekenpagina's kunnen worden geëxporteerd zonder ooit een volledige bestemmingsbitmap toe te wijzen — elke band rendert in een vers gecreëerdeTBitmapmet de gevraagde bandhoogte en wordt vrijgegeven nadat de callback terugkeertTPdfBandCallbackontsluit het contract per band (bandindex, top-y-offset, bitmap) met een Boolean-retourwaarde waarmee aanroepers de banded render vroegtijdig kunnen annulerenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.06.0
Version 3.05.0
Toegevoegd (Added)
TPdf.RenderPageProgressiveWithColorSchemedrijft de native progressieve renderloop aan met een kleurenschema voor slechtzienden viaFPDF_RenderPageBitmapWithColorScheme_Start, zodat aanroepers pad-vul-/-lijn- en tekst-vul-/-lijnkleuren kunnen overschrijven voor toegankelijkheid, met behoud van de annuleringsbewuste Continue-lusTPdfColorSchemeontsluit de vierTColor-override-velden met eenDefaultdie delegeert naar de ingebouwde kleuren van PDFium wanneer alle veldenclDefaultzijnTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.05.0
Version 3.04.0
Toegevoegd (Added)
TPdf.ExportFDFserialiseert formulierveldwaarden als een FDF-document (ISO 32000-1 §12.7.11) naast het bestaande XFDF-pad, met hergebruik van hetzelfdeTXfdfField-datamodel, zodat aanroepers velden één keer verzamelen en elk van beide formaten kunnen genererenFdfExportToStreamenFdfExportToFileinFPdfXfdfontsluiten de low-level FDF-serialiseerder voor aanroepers die veldverzamelingen onafhankelijk van een geladenTPdfopbouwenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.04.0
Version 3.03.0
Toegevoegd (Added)
TPdf.SaveAsSanitisedschrijft een schone kopie met één revisie die actieve inhoud uit de catalogus stript (/OpenAction, catalogus-/AA,/Names,/AcroForm,/Metadata) en daarna onbereikbare objecten snoeit, zodat de verweesde JavaScript-, actie- en bijlage-bodies uit de bestandsbody verdwijnenTPdfSanitiseOptionsontsluit onafhankelijke strip-besturingselementen per vector plus een optionele bereikbaarheid-snoeipassage;TPdfSanitiseReportregistreert het aantal gestripte ingangen, gesnoeide objecten, byteaantallen en eventuele foutenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.03.0
Version 3.02.0
Toegevoegd (Added)
TPdf.SaveAsPageLabelledschrijft een volledige PDF-kopie waarvan de nummerboom in catalogus-/PageLabelswordt vervangen door de meegeleverde bereiken, met decimale, Romeinse (hoofd-/kleine letters) en letter-nummeringsstijlen (hoofd-/kleine letters) met optionele prefix-tekststrings en startnummers conform ISO 32000-1 §12.4.2TPdfPageLabelRange,TPdfPageLabelRanges,TPdfPageLabelStyleenTPdfPageLabelReportontsluiten het bereikmodel, de stijl-enum en de byte-/bereikaantallen per opslagactie- Bestaande catalogus-
/PageLabels-ingangen worden gedetecteerd en afgewezen, tenzijReplaceExisting=Truewordt meegegeven; in dat geval wordt de oude ingang gestript voordat de nieuwe bereiken worden geïnjecteerd TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.02.0
Version 3.01.0
Toegevoegd (Added)
TPdf.FlattenPageRotationbakt de huidige/Rotatevan elke pagina in in de contentstream, paginaboxen en annotatierechthoeken en zet/Rotatedaarna terug op 0 — als wrapper rondFPDFPageObj_TransformF+FPDFAnnot_GetRect/SetRect+FPDFPage_SetMediaBox/SetCropBox+FPDFPage_SetRotation, zodat de visuele lay-out behouden blijft zonder van de rotatie-weergavehint af te hangenTPdfFlattenRotationOptionsontsluit besturingselementen voor annotatietransformatie, paginabox-omzetting en automatische updates per pagina;TPdfFlattenRotationReportregistreert verwerkte, overgeslagen en mislukte pagina's plus het totaal aan getransformeerde objecten en annotatiesTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.01.0
Version 3.00.0
Toegevoegd (Added)
TPdf.StampPagesFromPdfstempelt een bronpagina als een gepositioneerde, geschaalde en optioneel geroteerde Form-XObject-overlay of -underlay over één of meer doelpagina's, als wrapper rondCreateXObjectFromPage+FPDFPageObj_SetMatrix+FPDFPageObj_SetBlendMode+FPDFPage_InsertObjectAtIndexmet expliciet beleid voor paginabox, anker, marge, schaal, rotatie, blend en z-volgordeTPdfOverlayOptionsenTPdfOverlayReportontsluiten de besturingselementen voor plaatsing, transformatie, blend en z-volgorde, plus aantallen per pagina voor gestempeld, mislukt en overgeslagenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 3.00.0
Version 2.99.0
Toegevoegd (Added)
TPdf.RefreshAppearanceregenereert selectief de appearancestream van één widget viaFPDFAnnot_SetAP, waarbij eenNeedAppearances-herbouw van de volledige pagina wordt vermedenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.99.0
Version 2.98.0
Toegevoegd (Added)
TPdfView.MouseDownrouteert rechtsklik-gebeurtenissen nu naar de native form-fill-engine viaFORM_OnRButtonDown, wat contextmenu's en widget-interacties bij rechtsklikken mogelijk maakt- Routekaartitems 78 (link-annotatie-mapping), 82 (widget-presentatie) en 83 (structuur-attributenmodel) bevestigd als al voltooid via bestaande infrastructuur
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.98.0
Version 2.97.0
Toegevoegd (Added)
TPdf.SetDeterministicTimeenTPdf.RestoreActualTimelaten tests en reproduceerbare builds een vaste aanmaak-, wijzigings- en huidige tijd injecteren via ondersteunde native callbacksTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.97.0
Version 2.96.0
Toegevoegd (Added)
TPdf.GetWidgetAdditionalActionJavaScriptleest widget-additional-action-JavaScript voor een opgegeven gebeurtenistrigger viaFPDFAnnot_GetFormAdditionalActionJavaScriptzonder enig script uit te voerenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.96.0
Version 2.95.0
Toegevoegd (Added)
TPdf.GetObjectTextextraheert de Unicode-tekst van een tekstpagina-object viaFPDFTextObj_GetTextvoor nauwkeurige inhoudsbewerking en codeerdiagnostiekTPdf.GetObjectsByTypelevert de indexen van alle pagina-objecten die aan een categorie beantwoorden (tekst, pad, afbeelding, formulier, shading) voor selectieve categorie-uitvoerTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.95.0
Version 2.94.0
Toegevoegd (Added)
TPdf.AttachmentHasKey,GetAttachmentStringValueenSetAttachmentStringValuelezen, schrijven en toetsen aangepaste file-spec-extensiewaarden op ingebedde bijlagenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.94.0
Version 2.93.0
Toegevoegd (Added)
TPdf.InsertObjectAtIndexvoegt een pagina-object in op een gevraagde stackpositie viaFPDFPage_InsertObjectAtIndexin plaats van altijd achteraan toe te voegenTPdf.UpdateAnnotationObjectlegt een bewerkte annotatie-uiterlijkobject vast viaFPDFAnnot_UpdateObject, zodat wijzigingen aan pagina-objecten die aan een annotatie toebehouden betrouwbaar bewaard blijvenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.93.0
Version 2.92.0
Toegevoegd (Added)
TPdf.InsertClipPathcreëert een rechthoekig clippad en voegt het in in de huidige pagina via de native padenFPDF_CreateClipPathenFPDFPage_InsertClipPath, als aanvulling op de bestaandePageObjectClipPath-inspecteurTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.92.0
Version 2.91.0
Toegevoegd (Added)
TPdf.GetPageComplexityscant de huidige pagina en rapporteert aantallen afbeeldings-, pad- en tekstobjecten, plus totale padsegmenten, totale afbeeldingspixels en de aanwezigheid van transparantie voor renderplanningTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.91.0
Version 2.90.0
Toegevoegd (Added)
TPdf.IsAnnotationSubtypeSupportedvraagt de geladen PDFium-DLL welke annotatiesubtypen deze ondersteunt vóór bewerkingTPdf.ChooseRenderFlagskiest native render-vlaggen (halftone, beperkte afbeeldingscache) op basis van definitieve schaal en bestemmingsgrootte voor adaptieve beeldsubsamplingTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.90.0
Version 2.89.0
Toegevoegd (Added)
TPdf.GetTextRenderModeontsluit de native tekstrendermodus (vullen, lijnen, clippen) van een tekstpagina-object voor auteursdiagnostiekTPdf.GetTextObjectRenderedBitmaprendert één tekstobject naar een geïsoleerde bitmap via het nativeFPDFTextObj_GetRenderedBitmap-padTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.89.0
Version 2.88.0
Toegevoegd (Added)
TPdf.GetThumbnailvalt nu terug op het renderen van een vervanging wanneer de pagina geen ingebedde miniatuur heeft, waarmee de voorkeur voor ingebedde miniaturen eerst wordt geïmplementeerdTPdf.LinkAtPointgeeft terug of er op een coördinaat in paginaruimte een native link bestaat, viaFPDFLink_GetLinkAtPointin plaats van louter rechthoekscansTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.88.0
Version 2.87.0
Toegevoegd (Added)
TPdf.AuditActiveContentlevert eenTPdfActiveContentAudit-snapshot op met het aantal JavaScript-acties, ingebedde bestanden en handtekeningen, het XFA-formuliertype en de documentrechten, zonder enig script of actie uit te voerenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.87.0
Version 2.86.0
Toegevoegd (Added)
TPdf.GetFeatureInventoryscant elke pagina één keer en levert een uniform record op met aantallen tekst-, pad-, afbeeldings-, Form-XObject- en shadingobjecten, naast feiten over bijlagen, handtekeningen, formuliertype, rechten en PDF-versieTPdfFeatureInventoryaggregeert documentbrede feiten die eerder aparte property-aanroepen vereisten in één snapshotTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.86.0
Version 2.85.0
Toegevoegd (Added)
TPdf.SaveAsReproducibleherschrijft het document zodat twee opslagacties van dezelfde geheugentoestand byte-identieke uitvoer opleveren- Niet-deterministische
/Info-tijdstempels (/CreationDate,/ModDate) worden gestript en de bron-/ID(afgeleid van van de wandklok afhankelijke bytes) wordt weggelaten, terwijl objectvolgorde en -generatie stabiel blijven TPdfReproducibleReportrapporteert aantallen behouden en gesnoeide objecten plus het aantal gestripte tijdstempelingangenTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.85.0
Version 2.84.0
Toegevoegd (Added)
TPdf.SaveAsInlineImagesExternalisedherschrijft het document door elkeBI/ID/EI-inline-afbeelding te externaliseren naar een herbruikbaar afbeeldings-XObject en het inline blok te vervangen door een/ImN Do-operator- Afkortingen in inline-afbeeldingswoordenboeken (
/W,/H,/BPC,/CS,/F, kleurruimtewaarden en filterwaarden) worden uitgebreid naar hun volledige afbeeldings-XObject-namen, zodat het geëxtraheerde object standaardconform is - Het pagina-
/Resources /XObject-woordenboek wordt bijgewerkt met de nieuwe XObject-referenties en de herschreven contentstream wordt Flate-gecomprimeerd TPdfInlineImageExternaliseReportrapporteert aantallen geëxternaliseerde, overgeslagen en mislukte items plus het aantal gecreëerde XObjectsTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.84.0
Version 2.83.0
Toegevoegd (Added)
TPdf.SaveAsFlateRecompressedherschrijft het document en hercodeert in aanmerking komendeFlateDecode-streams op maximale compressie, waarbij een stream alleen wordt vervangen wanneer de gemeten bytebesparing een door de aanroeper ingestelde drempel overschrijdtTPdfFlateRecompressOptionskiest een minimale besparing in bytes en een minimale besparingsratio, zodat al optimale streams onaangeroerd blijvenTPdfFlateRecompressReportrapporteert aantallen hercodeerde, overgeslagen en mislukte streams, samen met de oorspronkelijke en hercodeerde stream-bytetotalen- Objectnummers en -generaties blijven stabiel; alleen de hercodeerde streampayloads en hun directe
/Length-waarden wijzigen, zodat elke resterende cross-referentie geldig blijft TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.83.0
Version 2.82.0
Toegevoegd (Added)
TPdf.OptimizeImagesloopt alle afbeeldingsobjecten op pagina's af en downsampt die waarvan de effectieve plaatsings-DPI een door de aanroeper gekozen doel overschrijdt, en legt daarna elke aangeraakte pagina vast via de native contentgeneratorTPdfImageOptimizeOptionskiest de doel-DPI en een minimale ratio, zodat alleen echt overbemonsterde afbeeldingen opnieuw worden gecodeerdTPdfImageOptimizeReportrapporteert aantallen geoptimaliseerde, overgeslagen en mislukte afbeeldingen, samen met een gestructureerde foutmelding- Downsampling gebruikt een nearest-neighbour-passage over de native PDFium-bitmapbuffer, met behoud van bronformaat, stride en alfakanaal, en
FPDFImageObj_SetBitmaphercodeert het resultaat TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.82.0
Version 2.81.0
Toegevoegd (Added)
TPdf.SaveAsDeduplicatedherschrijft het document als één schone revisie die compatibele lettertypen, afbeeldingen en Form-XObjects samenvoegt tot één gedeelde representant- Een recursieve content-vingerafdruk combineert elk resourcewoordenboek, zijn volledig bereikbare subgraaf en zijn ruwe streampayload, zodat duplicaten alleen samenvallen wanneer hun volledige inhoud identiek is
- Elke cross-referentie naar een samengevoegd duplicaat wordt herschreven naar de overlevende representant, terwijl de herbouwde klassieke cross-referentietabel objectnummers stabiel houdt
TPdfDedupReportrapporteert aantallen behouden en gesnoeide objecten, plus per categorie samengevoegde lettertypen, afbeeldingen en Form-XObjectsTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.81.0
Version 2.80.0
Toegevoegd (Added)
TPdf.SaveAsReachableherschrijft het document als één schone revisie die alleen de indirecte objecten behoudt die bereikbaar zijn vanuit de catalogus en het trailer-/Info-woordenboekTPdfPruneReportrapporteert de aantallen behouden en gesnoeide indirecte objecten, samen met bron- en uitvoerbytegroottes en gestructureerde faalredenen voor versleutelde of misvormde invoer- Onbereikbare weesobjecten die zijn achtergelaten door incrementele updates, paginasamenvoegingen of gerepareerde opslagacties worden opgeruimd, terwijl de herbouwde klassieke cross-referentie en trailer
/Root,/Infoen/IDbehouden zonder hernummering TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.80.0
Version 2.79.0
Toegevoegd (Added)
TPdf.CreateDocumentSearchcreëert een vooruit of achteruit werkende zoekopdracht over het hele document die telkens één treffer teruggeeft zonder een tekstindex van het volledige document op te bouwenTPdfDocumentSearchResultrapporteert voor elk resultaat de op één gebaseerde pagina, het tekenbereik, de overeenkomende tekst en rechthoeken in paginaruimte- Zoeksessies accepteren
IPdfCancellationToken, houden alleen de huidige PDFium-pagina- en tekst-handles vast en worden veilig afgerond wanneer het document sluit TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.79.0
Version 2.78.0
Gewijzigd (Changed)
TPdfRangeRequestSchedulerpreempteert nu overlappende transferts met lagere prioriteit, zodat paginakritieke PDFium-hints niet achter achtergronddownloads hoeven te wachten- Extern beschikbare sparse bytes annuleren redundante actieve transferts, terwijl verouderde of dubbele transport-callbacks False teruggeven zonder verouderde dekking te publiceren
- Prioriteitspromotie behoudt onafhankelijke retry-histories, en transport-preemptie verbruikt niet langer het retry-budget van onaangetaste range-staarten
TPdfRangeRequestStatistics.SupersededRequestCountrapporteert transportwerk dat is verdrongen door hints met hogere prioriteit of extern aangeleverde dekkingTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.78.0
Version 2.77.0
Toegevoegd (Added)
TPdf.SaveAsNormalizedContentschrijft syntactisch genormaliseerde pagina-inhoud naar een stream of atomair vervangen bestand en rapporteert aantallen genormaliseerde, overgeslagen en samengevoegde pagina'sNormalizePdfContentSequencebiedt begrensde standalone tokennormalisatie voor gedecodeerde contentstream-sequenties
Gewijzigd (Changed)
- Pagina-
/Contents-arrays kunnen nu worden samengevoegd tot één stream met behoud van strings, namen, inline-afbeeldingspayloads, onbekende operators en grafische status over streams heen - Misvormde tokens, onevenwichtige statusscopes, niet-ondersteunde filters, versleutelde invoer en herschrijvingen van ondertekende documenten hebben expliciet beleid en gestructureerde statusrapportage
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.77.0
Version 2.76.0
Toegevoegd (Added)
TPdfStreamInspectorinventariseert willekeurige fysieke PDF-streamobjecten en rapporteert objectoffsets, ruwe lengtes, filterketens, DecodeParms, externe-bestandsmarkers, versleutelingsstatus en native afbeeldings- of bijlagepadenCopyRawDatakopieert volledige gecodeerde payloads of gevalideerde bytevensters, terwijlDecodeDataASCIIHex, ASCII85, LZW, Flate, RunLength, TIFF 8-bit en PNG-predictors toepast in de gedeclareerde volgordeTPdfStreamInspectOptionsbegrenst bron-, ruwe, gedecodeerde, woordenboek-, streamaantal- en expansieratio-resources, met gestructureerde rapporten voor limieten, misvormde data, niet-ondersteunde codecs, versleuteling en schrijffouten
Gewijzigd (Changed)
- De bepaling van streamlengtes ontsluit nu exacte overspanningen voor directe en indirecte
/Length-waarden, inclusief streams van lengte nul en payloads die de letterlijke sequentieendstreambevatten TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.76.0
Version 2.75.0
Toegevoegd (Added)
TPdfLoadOptionsvoegt compatibel, strict en herstelbeleid toe aan het laden vanuit bestand, geheugen, bytebereik en aangepaste streamTPdfLoadReportrapporteert de native herstelroute, xref-geldigheid, beschadigde offsets, ingangconflicten, revisieaantallen, auditbudgetten en gestructureerde problemen voor klassieke, hybride en xref-stream-documentenTPdf.SaveAsRepairedcreëert een volledige kopie met één revisie en laadt deze onafhankelijk strict in voordat de geverifieerde stream wordt afgeleverd of het doelbestand atomair wordt vervangen
Gewijzigd (Changed)
- Bestaande laad-overloads behouden compatibel gedrag en publiceren nu native xref-geldigheid en herstelstatus via
LastLoadReport - Strict laden wijst documenten af waarvoor native xref-herbouw nodig was of die de structurele audit niet doorstonden, terwijl hersteluitvoer van ondertekende documenten expliciete autorisatie van de aanroeper vereist
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.75.0
Version 2.74.0
Toegevoegd (Added)
TPdf.MergeFilesvoegt bronnenlijsten op bestandsbasis samen met paginabereiken en wachtwoorden per bron, waarbij hoogstens één brondocument open blijftTPdfBatchMergeOptionsvoegt foutafhandeling met stoppen of overslaan toe, bronscoped of chunked imports, formulier- en overzichtsbeleid, invoegbesturing, voortgangscallbacks, annulering, kopiëren van viewervoorkeuren en rollback-besturingTPdfBatchMergeReportrapporteert vastgelegde en teruggedraaide pagina's, bronuitkomsten, native importaanroepen, grootste batch, piek aan open bronnen, beleidsdetecties, problemen en de eindstatus
Gewijzigd (Changed)
- Het standaard batchpad voert één native pagina-import per bron uit, zodat PDFium gekloonde objecten binnen die bron kan hergebruiken, en sluit daarna de bron voordat het volgende bestand wordt geopend
- Chunked-modus biedt fijnere annuleringspunten en kleinere native batches, terwijl mislukte gedeeltelijke bronnen en stop- of annuleringsuitkomsten alle door de bewerking ingevoegde pagina's kunnen verwijderen
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.74.0
Version 2.73.0
Toegevoegd (Added)
TPdfRandomAccessStorebiedt thread-veilige sequentiële en gepositioneerde I/O, houdt kleine inhoud in begrensd geheugen en spilled één keer naar privé-tijdelijke opslag bij een door de aanroeper gekozen plafondTPdf.SaveMemoryLimitenSaveTemporaryDirectoryconfigureren save-staging, terwijlLastSaveSpillCountenLastSaveLargestMemoryBuffermeetbare diagnostiek per opslagactie ontsluiten
Gewijzigd (Changed)
- Stagingbuffers voor opslag, standaardconversie, validatie, versleuteling, DSS en PAdES delen nu begrensde werkopslag met exclusieve delete-on-close spill-bestanden en geheugen-scrubbing
- Aangepaste PDFium-block-callbacks serialiseren gewone stream-seeks en gebruiken cursoronafhankelijke gepositioneerde lezingen wanneer ze op
TPdfRandomAccessStoresteunen - De op bestanden gebaseerde XFA-mogelijkheidsscan leest nu overlappende blokken van vaste grootte in plaats van de volledige PDF naar het geheugen te kopiëren
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.73.0
Version 2.72.0
Toegevoegd (Added)
TPdf.BeginIncrementalSave,CommitIncrementalSaveenEndIncrementalSavebieden een revisiesessie die alleen gewijzigde of nieuw gecreëerde indirecte objecten toevoegtTPdfIncrementalCommitInforapporteert per commit het aantal gewijzigde objecten, toegevoegde bytes, totale uitvoerbytes en het aantal geslaagde revisies
Gewijzigd (Changed)
- Elke dirty commit behoudt de volledige vorige uitvoer als exact byte-prefix, genereert geen revisie wanneer er niets is gewijzigd en zet het klassieke of xref-stream-formaat van de bron voort
- Native incrementele xref-stream-uitvoer wordt gerepareerd met zijn vereiste type, self-ingang, lengte, index en objectterminator voordat verdere verwerking plaatsvindt
- Versleutelde documenten worden afgewezen voordat een sessie begint, terwijl ondertekende documenten expliciete toestemming van de aanroeper vereisen, zodat handtekeningsbeleid niet per ongeluk kan worden omzeild
- De bestandsoverload rondt een tijdelijk bestand ernaast af voordat de bestemming atomair wordt vervangen en draait de sessiestatus terug na elke schrijf- of vervangfout
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.72.0
Version 2.71.0
Toegevoegd (Added)
TPdf.SaveAsObjectStreamschrijft PDF 1.5+-bestanden met begrensde gecomprimeerde objectgroepen en een pure xref-stream met volledige type-2-ingangenPackPdfObjectStreamskan klassieke, hybride, xref-stream- en bestaande object-stream-invoer moderniseren na het oplossen van de actieve revisie
Gewijzigd (Changed)
- Paginalokale objectordening, adaptieve xref-veldbreedtes, directe catalogustoegang en configureerbare plafonds voor leden en gedecodeerde bytes balanceren bestandsgrootte tegen random-access-prestaties
- De bestandsoverload rondt een tijdelijk bestand ernaast af voordat de bestemming atomair wordt vervangen, terwijl ongeldige incrementele, versie- en groeperingsopties worden afgewezen voordat de uitvoer begint
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.71.0
Version 2.70.0
Toegevoegd (Added)
TPdf.SaveAsLinearizedschrijft een echte Fast Web View-PDF naar een stream of bestand met objectgroepering van de eerste pagina, twee cross-referentiesecties en Annex F-hinttabellen voor pagina-offsets en gedeelde objecten- Actieve object-stream-leden worden automatisch gerealiseerd, zodat xref-stream- en object-stream-invoer bereikvriendelijke uitvoer kan worden zonder zichtbare pagina-inhoud te wijzigen
Gewijzigd (Changed)
- De bestandsoverload rondt een tijdelijk bestand ernaast af voordat de bestemming atomair wordt vervangen, terwijl de stream-overload de normale PDFium-opslagopties en expliciete versiecontroles behoudt
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.70.0
Version 2.69.0
Toegevoegd (Added)
TPdfRangeRequestSchedulerzet PDFium-bytebereik-hints om in geprioriteerd, samengevoegd, omvangbegrensd transportwerk zonder een aaneengesloten download af te dwingen- Volledige en gedeeltelijke voltooiing, begrensde retries, deduplicatie van sparse beschikbaarheid, verzoekstatistieken en generatie-veilige annulering ondersteunen HTTP Range- en aangepaste transportpijplijnen
TPdfProgressiveDocument.RangeRequestsontvangt automatisch document-, formulier- en paginahints en promoveert alleen de exacte bytes die een interactieve pagina blokkeren
Gewijzigd (Changed)
CancelProgressiveLoadannuleert nu actief bereikwerk vóór native beschikbaarheid en het afbreken van streams, en verouderde transportvoltooiingen worden veilig genegeerdTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.69.0
Version 2.68.0
Toegevoegd (Added)
TPdfProgressiveDocumenthoudt de beschikbaarheidssessie van PDFium in leven terwijl een externe of groeiende random-access-stream de door PDFium gevraagde bytebereiken ontvangtCheckDocumentAvailability,CheckFormAvailabilityenLoadAvailablePageleveren samengevoegdeTPdfDownloadRange-hints terug, zodat een host alleen de data kan ophalen die nodig is om een gelineariseerde pagina te openen en weer te gevenAvailableByteCountondersteunt monotone aaneengesloten downloads, terwijlOnDataAvailablesparse en out-of-order range-caches ondersteunt
Gewijzigd (Changed)
- Gelineariseerde bestanden gebruiken de native progressieve document-, formulier- en paginapoorten van PDFium; niet-gelineariseerde bestanden schakelen automatisch over op de native aangepaste-stream-loader nadat het volledige bestand aanwezig is
TPdfStreamAdapterkan een logische eindgrootte ontsluiten die afwijkt van de momenteel opgeslagen bytes, met behoud van de expliciete 4 GiB-FPDF_FILEACCESS-limietTPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.68.0
Version 2.67.0
Toegevoegd (Added)
TPdfView.AllowFormEventsschakelt de muis-, toetsenbord- en focusgebeurtenissen uit die de viewer doorstuurt naar de form-fill-laag, voor een alleen-lezen viewer of een viewer die formulierinteractie zelf aanstuurt- Formuliervelden renderen met de schakelaar uit nog steeds normaal: het laden en sluiten van pagina's blijven bewust ongefilterd, omdat deze de formulierlaag initialiseren in plaats van op invoer te reageren
- De schakelaar sluit aan bij de bestaande toggles
AllowUserPageChangeenAllowUserTextSelectionen staat standaard op True, zodat bestaand gedrag ongewijzigd blijft
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.67.0
Version 2.66.0
Toegevoegd (Added)
- Benoemde acties die een document aanroept (ISO 32000-1 §12.6.4.11) bereiken de host nu via de nieuwe gebeurtenis
OnNamedAction; eerder werd elke daarvan weggegooid - Onafgehandeld verplaatsen de vier standaard navigatienamen —
NextPage,PrevPage,FirstPage,LastPage— de pagina, klemmend op de eerste en laatste in plaats van rond te lopen TPdf.PerformNamedActionlaat een toepassing hetzelfde gedrag rechtstreeks aanroepen en geeft False terug voor een naam zonder door de bibliotheek geleverde betekenis
Opgelost (Fixed)
- Een versleutelingstest mat een streambody door vanaf
endstreamterugwaarts te scannen, wat af en toe een ciphertext-byte voor een regeleinde aanzag en een intermitterende fout rapporteerde; de bibliotheek was de hele tijd correct
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.66.0
Version 2.65.0
Toegevoegd (Added)
BuildToUnicodeCMapgenereert de ToUnicode-CMap (ISO 32000-1 §9.10.3) die een CID-lettertype nodig heeft, zodat de tekst ervan kan worden gekopieerd, gezocht en gelezen door ondersteunende technologie — zonder zo'n map rendert de tekst correct maar extraheert als niets- Ingangen worden gechunked op de limiet van 100 per blok die de specificatie stelt, dubbele glyphs worden één keer geschreven en
.notdefwordt overgeslagen - De CMap volgt de conventie CID = GID, zodat er geen
CIDToGIDMap-stream naast nodig is
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.65.0
Version 2.64.0
Toegevoegd (Added)
- Ink- en stempelannotaties tekenen zichzelf vanuit hun eigen pagina-objecten in plaats van vanuit de contentstream van de pagina, en die objecten zijn nu bereikbaar:
AnnotationObjectCountenAnnotationObjectInfolezen ze,AddPathToAnnotationgeeft de annotatie een metCreatePathgebouwd pad enRemoveAnnotationObjectverwijdert er één - Het bouwen van het uiterlijk van een stempel vereist niet langer een extern gereedschap: creëer het pad zoals gebruikelijk en geef het daarna aan de annotatie in plaats van aan de pagina
- PDFium accepteert pagina-objecten alleen op ink- en stempel-subtypen, dus elk ander subtype wordt geweigerd met een melding die de beperking noemt in plaats van obscuur te mislukken
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.64.0
Version 2.63.0
Toegevoegd (Added)
TPdf.AddStandardFontTexttekent tekst met één van de 14 lettertypen die elke PDF-reader verplicht moet leveren, zonder enig lettertypeprogramma in te bedden — het resulterende bestand is aantoonbaar kleiner dan dezelfde tekst getekend metAddText, dat de door het systeem gevonden face inbedt- De nieuwe enum
TPdfStandardFontbenoemt alle 14 faces, zodat een aanroeper geen basis-lettertypenaam verkeerd kan typen; PDFium matcht die namen exact en een typefout zou geruisloos geen lettertype opleveren - PDF/A en PDF/X vereisen beide dat elk lettertype is ingebed, dus uitvoer voor die profielen blijft beter
AddTextgebruiken
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.63.0
Version 2.62.0
Toegevoegd (Added)
TPdf.TextObjectGlyphOutlinelevert de omtrek van één glyph van het lettertype van een tekstobject als padsegmenten, voor het omzetten van tekst naar vectorkunst of het inspecteren van een glyph die een lettertypesubstitutie mogelijk heeft gewijzigd- Het resultaat hergebruikt het bestaande type
TPdfPathSegments, zodat het precies zo leest als de omtrek van een getekend padobject - Coördinaten liggen in de eigen ontwerpruimte van het lettertype, genormaliseerd zodat één em gelijk is aan 1.0; de gevraagde lettertypegrootte schaalt ze niet, dus een aanroeper die apparaateenheden wil vermenigvuldigt zelf met de puntgrootte
- Een leeg resultaat betekent dat het lettertype geen omtrek blootstelt voor die glyph, wat geen fout is; om een glyph van een niet-tekstobject vragen werpt een uitzondering
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.62.0
Version 2.61.0
Toegevoegd (Added)
TPdf.InspectAvailabilityrapporteert wat PDFium over een PDF kan vertellen zonder deze als document te laden: of het bestand gelineariseerd is (“web optimized”), of een volledige parse zou slagen, of het formulierdata bevat en welke pagina een viewer eerst zou tonen- De nieuwe typen
TPdfAvailability,TPdfLinearizationenTPdfFormAvailabilitydragen de antwoorden; de stream wordt gelezen maar niet vastgehouden en de positie wordt bij terugkeer hersteld - Dit sluit de laatste leegte in de
FPDFAvail_*-familie, die gebonden en geladen was maar nergens in de bibliotheek een aanroeper had - Delphi, Lazarus en C++Builder dekken elk de gerapporteerde feiten, de garantie over de streampoositie en de afwijzing van nil-streams
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.61.0
Version 2.60.0
Toegevoegd (Added)
- Marked content (ISO 32000-1 §14.6) is nu bereikbaar vanuit de high-level API:
PageObjectMarksleest elke BDC-tag met eigenschappenlijst van een pagina-object,AddPageObjectMarkschrijft er één,RemovePageObjectMarkverwijdert er één enPageObjectMarkedContentIDrapporteert de MCID - De nieuwe typen
TPdfContentMark,TPdfContentMarkParamenTPdfMarkParamKinddragen de tagnaam en de getypeerde parameters (integer, float, string, blob), waarbij de soort waarde uit PDFium wordt opgelost in plaats van gegist naar de getter die slaagt - Het toevoegen van een mark herbouwt de contentstream van de pagina, zodat de tag een opslagactie overleeft; dit moest expliciet omdat
SaveAsde inhoud niet zelfstandig regenereert - Delphi, Lazarus en C++Builder dragen elk zes gevallen, waaronder één die de opgeslagen contentstream inflate om te bevestigen dat de BDC-operator en zijn eigenschappenlijst echt zijn geland
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.60.0
Version 2.59.0
Toegevoegd (Added)
TPdfAnnotationkrijgtHasLinkUrienLinkUri, zodatCreateAnnotationnu een werkende weblink kan produceren: de annotatie wordt opgeslagen met een/URI-actie die naar het opgegeven adres wijst- Het instellen van een link-URI op een ander subtype dan
anLinkwerpt een uitzondering, omdat alleen een Link-annotatie een actiewoordenboek draagt - Het veld is voorlopig alleen-schrijven; het teruglezen van een linkdoel verloopt via de
FPDFLink_*-familie, die de document-handle nodig heeft - Delphi, Lazarus en C++Builder verifiëren allemaal dat de opgeslagen bytes de
/URI-actie en het doeladres dragen
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.59.0
Version 2.58.12
Toegevoegd (Added)
- PDF/X-validatie rapporteert
pvxiTrimBoxWithArtBoxwanneer een pagina/TrimBoxen/ArtBoxsamen draagt; beide benoemen de afgewerkte pagina, dus een RIP kan niet weten welke autoritatief is (ISO 15930) - PDF/X-validatie rapporteert
pvxiPageBoxOutsideMediaBoxwanneer/TrimBoxof/BleedBoxbuiten/MediaBoxreikt, inclusief een box met een negatieve oorsprong; een box voorbij het medium kan niet worden gebeeld - Rechthoeken worden vóór vergelijking genormaliseerd, zodat beide hoekvolgordes worden geaccepteerd en een box die de mediarand exact raakt nog steeds valideert
- Preflight-rapporten classificeren beide problemen onder structuur en noemen het concrete middel
- Delphi, Lazarus en C++Builder dekken allemaal de twee afgewezen gevallen en het conforme geval
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.12
Version 2.58.11
Toegevoegd (Added)
- PDF/UA-validatie rapporteert
pvuaiTociWithoutTocwanneer een document TOCI-ingangen tagt maar nooit de TOC-container waartoe ze behoren, waardoor ondersteunende technologie inhoudsopgave-items aankondigt zonder inhoudsopgave (ISO 14289-1 §7.7) - Preflight-rapporten classificeren het probleem onder structuur en raden aan de ingangen in een TOC-element te wikkelen
- C++Builder krijgt zijn eerste PDF/UA-testdekking naast de Delphi- en Lazarus-gevallen
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.11
Version 2.58.10
Toegevoegd (Added)
- PDF/A-validatie rapporteert
pvaiSymbolicTrueTypeEncodingwanneer een symbolisch TrueType-lettertype een/Encoding-ingang draagt; ISO 19005-1 §6.3.7 laat alleen de ingebouwde cmap van het lettertype toe, dus een/Encodingzou deze tegenspreken - De symbolische vlag wordt gelezen uit de
/FontDescriptor, of deze nu inline in het lettertypewoordenboek staat of indirect wordt gereferentieerd; een niet-symbolisch lettertype houdt zijn vereiste/WinAnsiEncodingof/MacRomanEncodingzonder te worden gemarkeerd - Preflight-rapporten classificeren het probleem onder inhoud en raden aan de ingang te verwijderen
- Delphi en Lazarus dekken het gemarkeerde geval plus beide geaccepteerde gevallen; C++Builder dekt het gemarkeerde en het niet-symbolische geval
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.10
Version 2.58.9
Toegevoegd (Added)
- PDF/A-validatie rapporteert de container-implementatielimieten van ISO 19005-1 Annex C:
pvaiNameOverLimitvoor namen langer dan 127 bytes,pvaiArrayOverLimitboven 8191 elementen,pvaiDictOverLimitboven 4095 ingangen enpvaiNestingOverLimitboven 28 nestingniveaus - De limieten zijn inclusief, dus een container die er exact op zit valideert nog steeds; tests pinnen zowel de afgewezen als de geaccepteerde kant van elke grens
- Preflight-rapporten classificeren de vier problemen onder structuur en noemen de concrete limiet in elke aanbeveling
- Delphi en Lazarus dekken alle vier de limieten plus de grensgevallen; C++Builder dekt de array-limiet en de grens
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.9
Version 2.58.8
Toegevoegd (Added)
- PDF/R-validatie rapporteert
pvriPageImageMismatchwanneer het aantal afbeeldingen niet overeenkomt met het aantal pagina's; ISO 23504-1 §6.5.1 maakt elke pagina exact één strip-afbeelding, dus een pagina zonder of met meerdere is niet conforme - Delphi-, Lazarus- en C++Builder-tests dekken een pagina zonder afbeelding, een pagina met twee en het conforme geval met één afbeelding
Gewijzigd (Changed)
- De PDF/R-marker-injectietests starten nu vanuit een bronpagina die al een strip-afbeelding draagt, omdat markerinjectie metadata toevoegt en geen pagina-inhoud kan leveren
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.8
Version 2.58.7
Toegevoegd (Added)
- PDF/R-validatie rapporteert
pvriFontForbiddenwanneer een pagina een lettertype-resource benoemt; een PDF/raster-pagina draagt de gescande afbeelding en niets anders (ISO 23504-1 §6.5.2) - PDF/R-validatie rapporteert
pvriForbiddenImageFiltervoor strip-encoderingen buiten de witte lijst, dus/LZWDecode,/RunLengthDecode,/ASCII85Decode,/ASCIIHexDecode,/JBIG2Decodeen/Cryptworden afgewezen, terwijl/CCITTFaxDecode,/DCTDecode,/JPXDecodeen/FlateDecodeslagen (ISO 23504-1 §6.6) - Preflight-rapporten classificeren beide problemen onder inhoud en raden het concrete middel aan
- Delphi-, Lazarus- en C++Builder-tests dekken een lettertype-resource, een afgewezen filter en een pagina die alleen encoderingen van de witte lijst gebruikt
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.7
Version 2.58.6
Toegevoegd (Added)
- PDF/E-validatie rapporteert
pveiFontNotEmbeddedwanneer een document lettertypegebruik toont maar geen ingebed lettertypeprogramma draagt, zodat de eis zowel op het DLL-vrije pad als via PDFium wordt gecontroleerd - Een tekening moet decennia later identiek renderen, dus ISO 24517-1 vrijstelt geen van de standaard 14 lettertypen; de controle geldt voor
/Type1,/TrueType,/Type0en/MMType1evengoed - Preflight-rapporten classificeren het nieuwe probleem onder inhoud en raden aan elk lettertypeprogramma in te bedden
- Delphi-, Lazarus- en C++Builder-tests dekken een descriptor zonder programma, een ingebed
/FontFile2en een document dat helemaal geen lettertype gebruikt
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.6
Version 2.58.5
Toegevoegd (Added)
InjectPdfEMarkersschrijft nu de output intent die ISO 24517-1 §6.2 vereist: een ingebed sRGB ICC-bestemmingsprofiel, een/GTS_PDFE1-output intent die het benoemt en de array catalogus-/OutputIntents, allemaal als onderdeel van dezelfde incrementele update- De profielstream leidt zijn
/Naf uit de ICC-header in plaats van drie componenten aan te nemen, zodat een CMYK-profiel correct zou worden beschreven - PDF/E-validatie rapporteert
pveiMissingOutputIntentenpveiMissingIccProfile, dus een kandidaat zonder vermelde kleurconditie wordt niet langer geaccepteerd - Delphi-, Lazarus- en C++Builder-tests dekken een geaccepteerde output intent, één zonder bestemmingsprofiel en een catalogus helemaal zonder output intent
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.5
Version 2.58.4
Toegevoegd (Added)
- PDF/X-validatie rapporteert
pvxiFontNotEmbeddednu vanuit een bytescan, zodat een niet-ingebed lettertype op het DLL-vrije pad wordt betrapt in plaats van alleen via de PDFium-ondersteunde controle - Anders dan in PDF/A zijn de standaard 14 lettertypen in PDF/X niet vrijgesteld, dus elk lettertypegebruik zonder ingebed lettertypeprogramma wordt gerapporteerd
- De controle blijft conservatief: hij slaat alleen aan wanneer het bestand lettertypegebruik toont maar helemaal geen
/FontFile,/FontFile2of/FontFile3draagt, omdat het tellen van descriptors tegen programma's valse positieven oplevert bij gedeelde descriptors - Delphi-, Lazarus- en C++Builder-tests dekken een descriptor zonder programma, een ingebed programma en een document dat geen lettertype gebruikt
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.4
Version 2.58.3
Toegevoegd (Added)
- PDF/X-validatie rapporteert nu
pvxiColorSpaceForbiddenwanneer een PDF/X-1a-kandidaat/DeviceRGB,/CalRGBof/Labdraagt, welke ISO 15930-1 §6.2 uitsluit van zijn CMYK-uitwisseling - De controle poort alleen op PDF/X-1a, dus PDF/X-3 en later blijven RGB en de apparaatonafhankelijke ruimten toestaan die ze naast de output intent gebruiken
- Alleen ondubbelzinnige kleurruimtenaam-tokens worden getest; een
ICCBased-stream vereist het oplossen van zijn/Nen blijft bij de objectmodellaag - Delphi-, Lazarus- en C++Builder-tests dekken een gemarkeerde RGB-ruimte, een gemarkeerde Lab-ruimte, een geaccepteerd CMYK- en grijswaardenpaar en het toegestane geval op PDF/X-3
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.3
Version 2.58.2
Toegevoegd (Added)
- PDF/X-validatie rapporteert nu
pvxiTransparencyForbiddenvoor een transparantiegroep of een actieve soft mask, welke ISO 15930-1 §6.2 (PDF/X-1a) en ISO 15930-3 §6.3 (PDF/X-3) verbieden - De controle poort op de gedetecteerde conformiteit, dus PDF/X-4 en PDF/X-6 blijven transparantie toestaan en een bestand waarvan het niveau niet kon worden vastgesteld wordt nooit gemarkeerd voor een regel die er mogelijk niet op slaat
- Een soft mask die expliciet is uitgeschakeld met
/SMask /Nonewordt niet als transparantie behandeld PdfHasActiveSMaskis verplaatst vanFPdfPdfanaar de interfaceFPdfPdfCommon, zodat elke validator één soft-mask-regel kan delen- Delphi-, Lazarus- en C++Builder-tests dekken een gemarkeerde groep op X-1a, een gemarkeerde soft mask op X-3, een uitgeschakelde soft mask en het toegestane geval op X-4
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.2
Version 2.58.1
Toegevoegd (Added)
- PDF/X-validatie controleert nu de vorm van de output intent die ISO 15930-7 §6.2.4 vereist:
pvxiOutputIntentSchemerapporteert een subtype dat aanwezig is maar niet/GTS_PDFX, enpvxiOutputIntentMissingIdentifierrapporteert een ontbrekende/OutputConditionIdentifier - Het subtype wordt als volledig naamtoken gematcht, dus een langere naam zoals
/GTS_PDFXVersionslaagt niet langer, terwijl een met#xxgeëscapete spelling van dezelfde naam nog steeds slaagt - Een output intent die helemaal geen subtype draagt wordt met rust gelaten, omdat de afwezigheid ervan al wordt gerapporteerd door de problemen op markerniveau
- Preflight-rapporten plaatsen beide problemen onder de categorie output intent en suggereren de oplossing
- Delphi-, Lazarus- en C++Builder-tests dekken het geaccepteerde subtype, een PDF/A-subtype, een langer naamtoken, een afwezig subtype en een ontbrekende conditie-identificatie
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.58.1
Version 2.58.0
Gewijzigd (Changed)
- Alle 35 callbacks die PDFium vanuit zijn eigen C++-frames aanroept (form fill, XFA, JavaScript-platform, progressieve renderpauze en lezen en schrijven van streams) vangen nu elke Pascal-uitzondering op en geven de gedocumenteerde faalwaarde terug in plaats van over de taalgrens te unwinden
- Een gebeurtenishandler die werpt, een mislukte allocatie of een onverwachte fout binnen een callback kan het proces dus niet langer neerhalen of PDFium in een ongedefinieerde staat achterlaten
Opgelost (Fixed)
- Het registreren van een formuliertimer lekte zijn ingang wanneer de onderliggende timer niet kon worden gecreëerd
Toegevoegd (Added)
- Delphi-, Lazarus- en C++Builder-tests dekken nu het opslaan in een bestemmingsstream die schrijfacties weigert en beweren dat het document daarna bruikbaar en opslaagbaar blijft
Version 2.57.8
Opgelost (Fixed)
- Oudere Delphi-releases (XE5 en eerder) compileerden de proefbibliotheek niet meer met
E2003 Undeclared identifier: 'GetTickCount64'inFPdfPades.pas, omdat de Windows-unit die met die compilers wordt meegeleverd het symbool niet exporteert - Dezelfde compilers faalden ook op
GetUserDefaultLocaleNameinPDFium.pasen op de toewijzing vanTBytesaanarray of ByteinGetXfaFormPackets, zodat de XFA-locale-callback en packet-snapshot nu ook op die compilers bouwen
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.8
Version 2.57.7
Gewijzigd (Changed)
- Elke herschrijving aan de opslagkant truncaat de bestemmingsstream nu vóór het schrijven in plaats van deze alleen terug te spoelen, zodat een door de aanroeper geleverde buffer die al een langer document bevat geen verouderde staart na het nieuwe
%%EOFkan houden - Delphi-, Lazarus- en C++Builder-tests dekken nu het opslaan in een vooraf gevulde stream
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.7
Version 2.57.6
Opgelost (Fixed)
- De objectscan die aan versleuteling voorafgaat accepteerde cijferreeksen van willekeurige lengte, dus een lang getal ergens in het bestand kon omslaan naar een negatief of fout objectnummer en een spookingang aan de herbouwde cross-referentietabel toevoegen
- Objectnummers boven de ISO 32000-1 Annex C-limiet en generaties boven 65535 worden nu als objectheaders afgewezen in plaats van te worden afgekapt
Toegevoegd (Added)
- Delphi-, Lazarus- en C++Builder-tests beweren nu het exacte aantal gebruikte ingangen van de herbouwde tabel
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.6
Version 2.57.5
Opgelost (Fixed)
- Versleutelen met
EncryptMetadata = Falseschreef/EncryptMetadata falsein het Encrypt-woordenboek maar versleutelde toch de metadata-stream van het document, zodat een lezer die die declaratie volgde onleesbare XMP vond - Een
/Type /Metadata-stream wordt nu ongewijzigd gekopieerd wanneer metadata-versleuteling is uitgeschakeld, terwijl elke andere stream nog steeds wordt versleuteld
Toegevoegd (Added)
AnsiNameTokenMatchesKeymaakt nu deel uit van de interfaceFPdfPdfCommonvoor delimiter-bewuste naamvergelijkingen- Delphi-, Lazarus- en C++Builder-tests dekken nu beide metadata-versleutelingsmodi
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.5
Version 2.57.4
Opgelost (Fixed)
- De cross-referentietabel die tijdens het versleutelen werd herbouwd liet de verplichte vrije-lijstkop van object 0 weg die ISO 32000-1 §7.5.4 vereist, zodat zijn eerste subsectie één object te laat begon
- Elke herbouwde ingang beweerde generatie 0; objecten die met een hogere generatie zijn geschreven behouden die nu, zodat de tabel overeenkomt met de objectheaders waarnaar hij wijst
Toegevoegd (Added)
- Delphi-, Lazarus- en C++Builder-tests dekken nu de vrije-lijstkop-ingang en het behoud van generaties in de herbouwde tabel
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.4
Version 2.57.3
Opgelost (Fixed)
- Versleutelde uitvoer liet het trefwoord
streamvan elk streamobject vallen, waardoor het opgeslagen bestand geen geldige PDF-syntax meer was en strikte lezers de pagina-inhoud meldden als noch een stream noch een array van streams - De
/Length-herschrijving matchte/Lengthals gewone substring, dus een streamwoordenboek met/Length1(elk ingebed lettertype) kreeg een beschadigde sleutelnaam, terwijl de echte lengte verouderd bleef - Een stream die zijn lengte indirect als
/Length N 0 Ropgaf kreeg het objectnummer overschreven met de nieuwe lengte; de ingang wordt nu vervangen door de directe versleutelde lengte - Een streamwoordenboek helemaal zonder
/Lengthkrijgt er nu één in plaats van de lezer zonder lengte te laten
Toegevoegd (Added)
AnsiFindDictKeyTokenmaakt nu deel uit van de interfaceFPdfPdfCommonvoor delimiter-bewuste zoekopdrachten van woordenboeksleutels op het hoogste niveau- Delphi-, Lazarus- en C++Builder-tests dekken nu het behoud van
/Length1, de vervanging van indirecte lengtes en de overeenkomst van streambody-omvang
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.3
Version 2.57.2
Opgelost (Fixed)
SaveAsEncryptedenSaveAsEncryptedToStreammetRevision = erR6produceerden documenten die hun eigen juiste wachtwoord afwezen in ongeveer één op de vier bestanden, omdat de ronteller van ISO 32000-2 §7.6.4.3 algoritme 2.B één ronde te laag begon en de extra ronde de waarden/U,/O,/UEen/OEwijzigde- Met R6 versleutelde documenten heropenen nu met het gebruikers- of eigenaarswachtwoord in elke conforme lezer en wijzen nog steeds een verkeerd wachtwoord af
Toegevoegd (Added)
- De Lazarus- en C++Builder-testsuites kregen versleutelingsdekking die eerder Delphi-only was: R6-sleutellengtes, Encrypt-woordenboekvelden, een herhaald versleutel- en heropen-retourtje en afwijzing van verkeerde wachtwoorden
Gewijzigd (Changed)
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.2
Version 2.57.1
Gewijzigd (Changed)
- Typen in een formulierveld, het verplaatsen van de caret en het omklappen van selectievakjes hertekenen nu alleen het gebied dat PDFium als beschadigd meldt in plaats van de volledige viewer
- Beschadigingsboxen worden genormaliseerd voor de opwaartse pagina-Y-as, met één pixel verbreed zodat anti-aliased widgetranden schoon blijven en afgeknipt op het zichtbare clientgebied
- Een beschadigingsbox die volledig uit de viewport is gescrold plant geen hertekening meer in, terwijl een inactieve weergave of een niet-afgebeelde pagina nog steeds terugvalt op een volledige hertekening
- Delphi-, Lazarus- en C++Builder-tests dekken nu begrensde formulierinvalidatie, gespiegelde paginaboxen, off-screen-boxen en veiligheid bij inactieve weergaven
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.1
Version 2.57.0
Toegevoegd (Added)
TPdfThumbnailView.Orientationondersteunt verticale en horizontale miniatuurlay-outs met behoud van de bestaande verticale standaardwaardeFirstVisiblePageIndex,LastVisiblePageIndexenEnsureCurrentPageVisibletonen en besturen de miniatuurviewport met op één gebaseerde paginaanduidingen
Gewijzigd (Changed)
- Het wijzigen van
CurrentPageIndexschuift nu de geselecteerde miniatuur in beeld in beide oriëntaties - Delphi-, Lazarus- en C++Builder-tests dekken nu standaardwaarden voor oriëntatie, omschakeling, zichtbare bereiken en zichtbaarheid van de geselecteerde pagina
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.57.0
Version 2.56.2
Gewijzigd (Changed)
HighlightSearchText,AddSearchTextHighlightenClearHighlightinvaliden nu alleen de apparaatrechthoeken voor zoekbereiken die zijn toegevoegd of verwijderd in plaats van de volledige viewer opnieuw te tekenen- Markeringen vervangen door dezelfde treffers of dubbele treffers toevoegen plant niet langer een onnodige hertekening in
- Delphi-, Lazarus- en C++Builder-tests dekken nu begrensde invalidatie, idempotente updates, wissen en veiligheid bij inactieve weergaven
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.56.2
Version 2.56.1
Gewijzigd (Changed)
TPdfThumbnailViewhergebruikt nu gerenderde bitmaps voor pagina's die zichtbaar blijven bij hertekeningen en aangrenzende schuifposities- De cache behoudt alleen het huidige zichtbare paginabereik en geeft items precies vrij wanneer pagina's dat bereik verlaten, het toegewezen document verandert of de miniatuurafmetingen veranderen
- Delphi-, Lazarus- en C++Builder-tests dekken nu cache-hergebruik, viewport-snoei, grootte-invalidatie, documentvervanging en componentvernietiging
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.56.1
Version 2.56.0
Toegevoegd (Added)
TPdfView.CutSelectedFormTextToClipboardenTPdfView.PasteFormTextFromClipboardbieden Unicode-klembordbewerking voor het gefocuste bewerkbare formulierwidget
Gewijzigd (Changed)
- Gefocuste formulier-editors verwerken nu de standaard toetsenbordsneltoetsen kopiëren, knippen, plakken en alles selecteren voordat ze tekstinvoer doorsturen naar PDFium
- Knippen en plakken wijzen alleen-lezen velden en sessies zonder formulier-invul- of wijzigingsrechten af, terwijl knippen succesvol kopieert voordat de geselecteerde tekst wordt verwijderd
- Delphi-, Lazarus- en C++Builder-tests dekken nu gedrag zonder focus, retours van sneltoetsen en afwijzing bij alleen-lezen
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.56.0
Version 2.55.0
Toegevoegd (Added)
TPdfView.AddSearchTextHighlightvoegt unieke treffers voor een andere zoekterm toe aan de huidige pagina-overlay, zodat meerdere query's samen gemarkeerd kunnen blijven
Gewijzigd (Changed)
HighlightSearchTextblijft het vervangende ingangspunt en deelt nu de additieve scanner, terwijl dubbele tekenbereiken worden genegeerd enClearHighlightde volledige verzamelde set verwijdert- Delphi-, Lazarus- en C++Builder-tests dekken nu accumulatie van afzonderlijke query's en onderdrukking van dubbele bereiken
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.55.0
Version 2.54.0
Toegevoegd (Added)
TPdfstelt nu volledige pagina-object-snapshots, gegroepeerde stijlupdates, affiene objecttransformaties, padsegmenten, clip-paden en Form-XObject-kinderen beschikbaar- Tekeninspectie omvat nu vul- en lijnkleuren, letternaam en -vlaggen, losse glyph-grenzen, effectieve matrices, tekst-object-handles en conversie van tekenindex naar tekstindex
- Annotaties maken nu een retourtje van randgeometrie en normaal-, rollover- en down-uiterlijkstromen
- Nieuwe raw- en gedecodeerde miniatuuraccessors, pagina-inhoud- en annotatietransformaties en
RenderPageWithMatrixbieden directe geavanceerde render- en bewerkingspaden
Gewijzigd (Changed)
- Stijlwijzigingen van pagina-objecten kunnen als één batch worden vastgelegd zodat PDFium de pagina-inhoud slechts één keer regenereert
- Matrixrenderering gebruikt het bestaande zero-copy bitmappad wanneer de lay-out van de bestemmingsbitmap compatibel is
Version 2.53.1
Opgelost (Fixed)
- Het ingebouwde Chinese Kopiëren-menu-opschrift gebruikt nu codeeronafhankelijke Unicode-codepunten en wordt correct weergegeven in Lazarus-builds
- Oudere Delphi-toolchains kunnen
FPdfAsynccompileren wanneer hunWinapi.Windows-unit deGetTickCount64-declaratie weglaat
Version 2.53.0
Toegevoegd (Added)
- Nieuwe
Tests.ApiCoverage-testfixture die publieke TPdf-API's dekt die eerder nul end-to-end testdekking hadden:GetPageBox/SetPageBox(MediaBox/CropBox lezen/schrijven, fouten bij ontbrekende box en opslaan-retourtje),FlattenPage/FlattenAllPages(retourwaarde en behoud van paginatal),GenerateFormAppearances(geen actie op niet-formulierdocumenten),SaveAsEncrypted/SaveAsEncryptedToStream(AES-256 met wachtwoord-retourtje — verifieert dat het versleutelde bestand weigert te openen zonder het wachtwoord en wel opent ermee), grensvalidatie vanDeletePage(pagina 0 en buiten bereik werpenEPdfError) en de in v2.38.0 geïntroduceerde annotatie-sentinelsHasContents/HasAuthor(verifiëren datDefault(TPdfAnnotation)ze opFalselaat staan)
Version 2.52.0
Toegevoegd (Added)
TPdfView.CopySelectedFormTextToClipboardkopieert de tekstselectie binnen het gefocuste AcroForm-widget naar het Windows-klembord alsCF_UNICODETEXT
Gewijzigd (Changed)
- Pagina-tekst- en gefocuste-formulier-kopieerbewerkingen delen nu dezelfde defensieve Unicode-klembordschrijver en laten het klembrand ongewijzigd wanneer hun selectie leeg is
- Delphi-, Lazarus- en C++Builder-tests dekken nu inactieve of ongefocusseerde formulier-kopieeroepen en een retourtje van een gefocuste formulierselectie via het Windows-klembord
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.52.0
Version 2.51.0
Toegevoegd (Added)
TPdfView.SelectLineAtselecteert de visuele tekstregel die een op één gebaseerde pagina en een op nul gebaseerde tekenindex bevat zonder muisinvoer te vereisen
Gewijzigd (Changed)
- Programmatische regelselectie, drievouds-klikselectie en
Shift+HomeofShift+Enddelen nu één teken-box-regelgrensmodel - Delphi-, Lazarus- en C++Builder-tests dekken nu stabiele regelselectie en ongeldige pagina- of tekenindexen
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.51.0
Version 2.50.0
Toegevoegd (Added)
TPdf.LoadDocumentaccepteert nu een op nul gebaseerdIndex- enCount-venster in eenTBytes-buffer, waardoor ingebedde PDF's kunnen laden zonder een tijdelijke byte-array-slice toe te wijzen
Gewijzigd (Changed)
- Byte-bereikladen wijst negatieve of buiten-bereik vensters af voordat de documentstatus verandert en behoudt de bestaande gebufferde en geleende-buffer levensduuropties
- Delphi-, Lazarus- en C++Builder-tests dekken nu ingebedde PDF-vensters en ongeldige byte-bereikargumenten
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.50.0
Version 2.49.1
Toegevoegd (Added)
TPdfView.FitModeondersteunt nupfmFitHeightom de huidige pagina aan de zichtbare viewpoorthoogte aan te passen met horizontaal scrollen waar nodig
Opgelost (Fixed)
- Fit-modi convergeren nu nadat een schuifbalkwijziging het clientgebied wijzigt, zodat fit-page-, fit-width- en fit-height-resultaten consistent blijven tussen VCL en LCL
- Delphi-, Lazarus- en C++Builder-viewertests dekken nu
pfmFitHeight-selectie en enumeratierondritten TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.49.1
Version 2.49.0
Toegevoegd (Added)
- Het openbare PDFium-bindingoppervlak dekt nu alle 470 geëxporteerde functies in de herziene headers, inclusief toegang tot bijlagebeschrijvingen via
FPDFAttachment_SetDescriptionenFPDFAttachment_GetDescription TPdfstelt nu bijlagebeschrijvingen, kruisverwijzingsgeldigheid, trailer-eindeoffsets, security-handler-revisie, 64-bits geheugenladen, handtekeningbytebereiken, weblinktekstbereiken en uitgebreide afbeeldingsgegevens-, filter-, metadata- en ICC-profielsnapshots beschikbaar- Formulierassistenten ondersteunen nu native veldfocus, query's en updates van gefocuste keuze-opties, muiswiel-doorsturen, beschrijfbare inktstreken en formulieroverlays na progressieve weergave
Gewijzigd (Changed)
FormFieldCount, formulierveldindexen en tabvolgorde beschrijven nu alleen widgetannotaties in plaats van niet-gerelateerde pagina-annotaties op te nemen- Headless
TPdf-pagina's betreden en verlaten nu de formulier-vullen-paginalevenscyclus zodat native focus en gefocuste-veld-API's werken zonder eenTPdfView - Export van bijlagebeschrijvingen is capaciteitsbegrensd zodat toepassingen met een oudere PDFium-build de bibliotheek nog steeds kunnen laden en de niet-beschikbare functie kunnen detecteren
Opgelost (Fixed)
- Progressieve paginaweergave tekent nu formulierbesturingselementen wanneer formulier-vullen is ingeschakeld
- Delphi-, Lazarus- en C++Builder-tests dekken nu de nieuwe documentdiagnoses, bijlagebeschrijvingen, inktpaden, formuliergedrag, handtekeningbytebereiken, weblinkbereiken en afbeeldingsmetadata
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.49.0
Version 2.48.0
Toegevoegd (Added)
TPdfMatrixstelt nu fabrieken, klonen en toewijzing, eindige-status- en inverseerbaarheidsdiagnoses, tolerantiegebaseerde vergelijking, translatietoegang, determinantrapportage en affiene decompositie beschikbaar- Prepend-compositie, pivot-bewuste rotatie, schaling, scheeftrekken en spiegelingen, plus stretch-, contain- en cover-rechthoektoewijzing ondersteunen local-space- en aangepaste-layout-workflows zonder handmatige coëfficiëntrekenkunde
- Niet-muterende inverse-toegang, inverse-punttoewijzing, vector- en vierhoektransformaties, dynamische punt- en rechthoekbatches, in-place-varianten en eenpassige getransformeerde grenzen breiden het herbruikbare geometrieoppervlak uit
Gewijzigd (Changed)
- Translatie, schaling en as-spiegelingen werken nu alleen de betrokken coëfficiënten bij in plaats van via algemene affiene vermenigvuldiging te routeren
- Rechthoektransformatie normaliseert zijn invoer één keer, gebruikt waar mogelijk een gespecialiseerd exact as-uitgelijnd pad en berekent algemene geroteerde grenzen zonder tijdelijke puntrecords
- Punt- en rechthoekbatchtransformaties wijzen één resultaatarray toe of hergebruiken opslag van de aanroeper, terwijl getransformeerde puntgrenzen in één pass worden geaccumuleerd zonder een tussenliggende array
Opgelost (Fixed)
- Rechthoektoewijzing wijst nul-grote, niet-eindige en
Single-overlopende resultaten af voordat een onbruikbare matrix wordt gepubliceerd - Delphi-, Lazarus- en C++Builder-tests verifiëren nu compositievolgorde, pivot-invarianten, inverse rondritten, aangepaste rechthoeken, decompositie en bulk-geometriegedrag
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.48.0
Version 2.47.0
Toegevoegd (Added)
FPdfAsyncbiedt nu gestructureerde annuleringsredenen en -berichten, verwijderbare callback-registraties, timeout-gebaseerde bronnen, annuleringswachten en atomische try-cancel-operaties via uitgebreide interfaces die de oorspronkelijke API behoudenTPdfFuture<T>.RunExvoegt configureerbare antwoord-dispatch en worker-prioriteit toe, terwijl resultatenveloppen operatie-ID's, waargeldigheid, uitzonderingsklassenamen, voltooiingstiming en herbruikbare voltooiingshelpers beschikbaar makenTPdfAsyncExecutorvoegt een herbruikbare vaste worker-pool toe met vier FIFO-prioriteitsbanen, optionele begrensde-wachtrij-backpressure, annuleerbare taakhandles, timeout-bewust wachten, taaksnapshots, geaggregeerde statistieken en graceful shutdown
Gewijzigd (Changed)
- Herhaalde asynchrone taken kunnen worker-threads en O(1)-wachtrijoperaties hergebruiken in plaats van een thread per taak te maken, terwijl gesynchroniseerde voltooiing beschikbaar blijft voor UI-hosts
- Executor- en future-fouten behouden uitzonderingsklasse- en berichtdiagnoses, annulering behoudt zijn oorspronkelijke reden en callback-uitzonderingen blijven geïsoleerd van worker-levenscyclus en shutdown
- Delphi-, Lazarus- en C++Builder-tests dekken nu het uitgebreide annulerings-, future-metadata-, taakcontrole-, backpressure-, prioriteitsordening-, statistiek-, fout- en shutdown-oppervlak
Opgelost (Fixed)
- Gelijktijdige annuleringseigenaren ontvangen nu een deterministisch eerste-schrijver-resultaat in plaats van te vertrouwen op een afzonderlijke observatie- en annuleringssequentie
- Idle-wachten van de hoofdthread verwerkt gesynchroniseerde taakantwoorden, wat voorkomt dat een voltooide worker de executor permanent non-idle laat tijdens gecoördineerde shutdown
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.47.0
Version 2.46.0
Toegevoegd (Added)
FPdfAsn1stelt nu identifier-klassen, 64-bits high-tag-number-codering en -decodering, geparste TLV-records, zero-copy child-reader-vensters, getypeerde primitieve decoders en content- of gecodeerde-waarde-slices beschikbaar- DER-writers ondersteunen nu het volledige unsigned 64-bits INTEGER-bereik, gevalideerde willekeurige INTEGER-content, ENUMERATED, automatische UTCTime- of GeneralizedTime-selectie, application- en private-tags, multi-value-SEQUENCE en canoniek gesorteerde SET-OF-uitvoer
ValidateDerretourneert offset-bewuste validatiefouten terwijl configureerbare nesting-, knoop-aantal-, content-lengte-, fout-aantal-, root- en optionele SET-sorteerlimieten worden afgedwongen
Gewijzigd (Changed)
- DER-concatenatie en multi-value-compositie gebruiken één uitvoerallocatie, writer-buffers onthullen reserve-, count-, capacity- en eigendomsoverdracht-operaties, en SET-OF-sortering gebruikt nu
O(n log n)-mergesortering - BOOLEAN-, INTEGER-, BIT-STRING-, OBJECT-IDENTIFIER-, NULL-, UTF8String-, PrintableString-, IA5String-, UTCTime- en GeneralizedTime-waarden ontvangen canonieke vormcontroles tijdens codering, getypeerde decodering of validatie
- Het Lazarus-runtimepakket exporteert nu
FPdfAsn1en Delphi-, Lazarus- en C++Builder-testsuites oefenen hetzelfde openbare DER-oppervlak
Opgelost (Fixed)
- Context-specifieke tag-nummers groter dan 30 worden niet langer afgekapt in de lage vijf identifier-bits
- Misvormde high-tag-identifiers, niet-minimale definite lengtes, ongeldige UTF-8, niet-nul BIT-STRING-padding, ongeldige tijdvelden, trailing-roots en bronnlimiet-overtredingen worden deterministisch afgewezen
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.46.0
Version 2.45.0
Toegevoegd (Added)
FPdfPreflightReportwijst nu Info-, Warning- of Error-ernst toe aan elk probleem en stelt per-standaard- en rapportniveau-ernst, status, categorie, issue-code, lookup-, search-, flattening- en filtering-API's beschikbaar- Preflight-rapporten exporteren nu SARIF 2.1.0, JUnit-XML, NDJSON en native XML via overeenkomende
To*- enSave*ToFile-methoden voor CI-, automatiserings- en streaming-pipelines - Stabiele SHA-256-rapport-vingerafdrukken identificeren equivalente validatieresultaten onafhankelijk van bronpaden en generatie-timestamps
Gewijzigd (Changed)
- JSON-, CSV-, text-, Markdown- en HTML-rapporten bevatten nu ernst en uitgebreide statussamenvattingen; HTML voegt toegankelijke tabelbijschriften en een statussamenvatting toe
- Issue- en standaardcollectie-constructie gebruikt geometrische capaciteitsgroei, queryresultaten zijn voor-gedimensioneerd, JSON-escaping schrijft naar één begrensde uitvoerbuffer en alle rapportbestanden gebruiken één directe UTF-8-writer
- Issue-categorie-samenvattingen gebruiken deterministische ordening, timestamps bevatten milliseconden, JSON draagt
formatVersion: 2en CSV-cellen neutraliseren spreadsheetformules
Opgelost (Fixed)
- JSON-export behoudt nu geldige aanvullende Unicode-paren en vervangt geïsoleerde UTF-16-surrogaat-code-units in plaats van misvormde scalaire gegevens uit te zenden
- HTML-export ontsnapt nu apostroffen en gefilterde rapportweergaven bezitten onafhankelijke issue-arrays in plaats van gemeenschappelijke veranderlijke resultaatopslag te delen
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.45.0
Version 2.44.0
Toegevoegd (Added)
- Bladwijzers en bestemmingen leggen de open status, afstammingsaantallen, actiedoelen, bestemming-weergavemodi en tot vier weergaveparameters bloot
Metadata,GrantedPermissions,UserGrantedPermissions,HasPermissionenUserHasPermissionleveren getypeerde documentinspectie-snapshots en machtigingsquery'sExtractThumbnail(PageNumber)rendert een aangevraagde pagina zonder de actieve pagina te wijzigen, en RFC 3161-timestampresultaten leggen beleid, generatietijd en nonce-details bloot
Gewijzigd (Changed)
- Bladwijzer-, JavaScript-, metadata-, bestemming- en thumbnailpaden gebruiken gevalideerde two-pass buffers, geometrische verzamelingsgroei en cyclus-veile traversie
- Bij opslaan lost post-processing de actieve catalogus, paginaboom en open actie op via de huidige xref-revisie, cachet gedecodeerde objectstreams en scant PDF-woordenboeken met lexicale grenzen
- Gedeeld PDF-parseren handhaaft nu exacte objectheaders, generaties, woordenboeksleutels, streamlengtes, predictor-geometrie, gehele-getalbereiken en commentaar-, letterlijke-tekenreeks- en hexadecimale-tekenreeks-grenzen
- RFC 3161-responsvalidatie bindt nu zowel nonce als SHA-256
messageImprint, vereist een structureel geldige ondertekenaar en past strikte DER-lengte-, OID-, INTEGER- en GeneralizedTime-regels toe
Opgelost (Fixed)
- Incrementele documenten selecteren niet langer inactieve dubbele catalogussen of misvormde referentie-achtervoegsels bij het toevoegen van een standaard open actie
- Timestamptokens met long-form DER-lengtes behouden het volledige gecodeerde token, terwijl misvormde CMS-optional-veld-volgorde en lege ondertekenaarverzamelingen worden geweigerd
- Schone Delphi-builds schrijven nu PAdES-nonce-seed-velden via uitgelijnde veilige byte-kopieën en geven XFA-responsbytes door met het exacte native pointertype
TPdf.AboutInfo, Lazarus-pakketmetadata en installatiemetadata rapporteren nu consistent Version 2.44.0
Version 2.43.0
Toegevoegd (Added)
- XFDF-veld- en annotatierecords leggen nu aanwezigheidsvlaggen bloot die een weggelaten XML-waarde onderscheiden van een expliciet lege waarde
Gewijzigd (Changed)
- XFDF-import accepteert naamruimte-geprefixte elementen en attributen, gemengde tekst- en CDATA-inhoud, entiteitsreferenties en whitespace-significante waarden terwijl ongeldige Unicode-scalair-referenties worden geweigerd
- XFDF-import en -export gebruiken geïndexeerde veldmatching en begrensde geometrische buffers, wat de doorvoer en piek-toewijzingsgedrag verbetert voor diep geneste formulieren, grote annotatieverzamelingen, ink-lijsten, vertices en markup-quadrilaterals
- PDF/A- en PDF/UA-validatie gebruiken begrensde groei voor grote pagina-, stream-, structuurnaam- en RoleMap-verzamelingen; PDF/UA RoleMap-resolutie volgt nu directe arrays en exact-generatie indirecte naam- of array-objecten
Opgelost (Fixed)
- XFDF-roundtrips behouden nu diep geneste veldpaden, expliciet lege veldwaarden, expliciet lege annotatie-inhoud en het onderscheid tussen afwezige en lege inhoud
- Ongeldige geheugenbuffer-ladingen en out-of-range pagina-toewijzingen worden geweigerd zonder een gedeeltelijke document- of paginastatus achter te laten, en een mislukte native pagina-reload behoudt de eerder actieve pagina
- Grote marked-content-identifiers en handtekening-metadata-buffers worden begrensd en gevalideerd vóór toewijzing of native toegang
Version 2.42.0
Toegevoegd (Added)
TPdfMatrixbiedt nuInvert,TryInvert,TransformPointenTransformRectvoor coördinaatmapping, hit-testing, genormaliseerde grenzen en expliciete singuliere-matrix-afhandelingTPdf.WrapTextkreeg eenBreakLongWords-overbelasting die CJK en andere tekst zonder spaties splitst terwijl geldige UTF-16-surrogaatparen bij elkaar blijvenTPdfAnnotation.AttachmentPointSetslegt elke quadrilateral bloot in multi-line markup-annotaties terwijl het bestaandeAttachmentPoints-veld een alias blijft voor de eerste set
Gewijzigd (Changed)
- Tekstextractie, leesbare-content-constructie, woord-opzoeking en gesproken-tekst-offset-mapping gebruiken nu begrensde toewijzing en binaire opzoekpaden, wat herhaalde toewijzingen en lineaire scans op grote pagina's vermindert
- ASN.1-serialisatie en versleutelde PDF-generatie gebruiken nu geometrische uitvoerbuffers; versleutelde-object-volgorde gebruikt
O(n log n)-sortering en xref-rijen worden direct naar de eindbuffer geschreven WrapTextbehoudt CR-, LF- en CRLF-lijngrenzen en hergebruikt één native meetobject voor de hele bewerking- XFDF-import en -export behouden elke markup-quadrilateral; import past ook RGB/interieurkleuren toe en parseert decimale coördinaten onafhankelijk van de proces-locale
Opgelost (Fixed)
- Legacy-aanroepers kunnen opnieuw annotatie-inhoud en auteur bijwerken door niet-lege tekenreeksen toe te wijzen zonder de nieuwere
HasContents- enHasAuthor-sentinels in te stellen - Expliciet lege annotatietekenreeksen gebruiken nu een geldige nul-getermineerde native buffer, zodat het wissen van
/Contents,/Ten andere optionele tekstsleutels niet langer een nil-pointer doorgeeft aan PDFium
Version 2.41.0
Gewijzigd (Changed)
- Preflight-rapporten
SaveJsonToFile,SaveMarkdownToFileenSaveTextToFileschrijven nu UTF-8 op Delphi (overeenkomend met het bestaandeSaveHtmlToFile), in plaats van de ANSI-codepagina van het systeem; niet-ASCII-tekens in bestandspaden, aanbevelingen en bereiknotities raakten verminkt op Delphi wanneer ze via deze methoden werden opgeslagen SaveCsvToFileschrijft nu UTF-8 met een BOM-prefix, zodat Excel for Windows de codering automatisch detecteert; zonder de BOM behandelt Excel een UTF-8 CSV als code-page 1252 en verminkt het eventuele niet-ASCII-tekens
Opgelost (Fixed)
- De
ExtractImages-demo lekte de gecachteTBitmap-objecten inFExtractedImageswanneer het formulier werd gesloten zonder ze eerst expliciet te wissen; het formulier overschrijft nuDestroyomClearExtractedImagesaan te roepen, waardoor elke gecachte bitmap wordt vrijgegeven
Version 2.40.0
Gewijzigd (Changed)
TPdf.RenderPage(HDC, ...)maskeert nu FPU/SSE-uitzonderingen rond deFPDF_RenderPage-aanroep, overeenkomend metTPdfView.RenderPage(HDC)(gecorrigeerd in v2.25.0) en elk rendering-ingangspunt dat een bitmap retourneert; de directe-naar-DC overbelasting opTPdf-niveau liet FPU-uitzonderingen voorheen ongemaskerd op pre-D12-compilers
Opgelost (Fixed)
ColorToARGBretourneert nu een volledig transparante pixel (alpha 0) voorclNoneenclDefaultin plaats van de sentinelwaarde te behandelen als een letterlijke RGB-kleur; het eerdere gedrag veroorzaakte een donkere, bijna ondoorzichtige opvulling wanneer een aanroeperclNonedoorgaf in de verwachting van “geen kleur”
Version 2.39.1
Opgelost (Fixed)
- Expliciete PDF 1.3-opslaan verwijdert nu
/SMask /None,/AIS falseen/TK true-vermeldingen die alleen de initiële grafische status herhalen, terwijl niet-standaard transparantiestatus geweigerd blijft worden
Version 2.39.0
Gewijzigd (Changed)
CreatePDFenImageToPDFgebruiken nu bevestigde opslagbestemmingen en rapporteren succes alleen wanneerSaveAssuccesvol is voltooidBatchExport,PDFtoJpgenSplitPDFwijzen nu unieke uitvoermappen toe, zodat herhaalde uitvoeringen en invoer met dezelfde naam eerdere resultaten behoudenSplitViewwikkelt zoekopdrachten nu eenmaal af zonder een verborgen paginastatus achter te laten na annulering of geen overeenkomst, en breekt onvolledige afdruktaken af in plaats van gedeeltelijke uitvoer in te dienen
Opgelost (Fixed)
MergePDFweigert nu misvormde paginabereik-tokens en bronoverschrijvende uitvoerpaden, telt de daadwerkelijk geïmporteerde pagina's en weigert een leeg resultaat op te slaan- De Delphi- en C++Builder
Attachment-demo's voeren opslaan naar hetzelfde pad nu uit via rollback-veilige bestandsvervanging, zodat een mislukte hernoeming de originele PDF niet kan verwijderen
Version 2.38.0
Gewijzigd (Changed)
SetAnnotationDatabeveiligt nu de schrijfopdrachten naar/Contentsen/AuthorachterHasContents/HasAuthor-sentinels opTPdfAnnotation, passend bij het bestaandeHasName/HasSubject/HasIcon-patroon; voorheen werden deze twee velden onvoorwaardelijk geschreven, waardoor het toewijzen van eenDefault(TPdfAnnotation)-record om alleen kleur of vlaggen bij te werken de bestaande inhoud en auteur van de annotatie stilletjes overschreef met lege tekenreeksen;GetPageAnnotationstelt nu de sentinels in zodat een lees-modificeer-schrijfcyclus de originele waarden behoudt
Opgelost (Fixed)
GenerateFormAppearancesleest nu de waarde van het selectievakje/de keuzerondje viaFPDFAnnot_GetFormFieldValue(die naar het bovenliggende veldwoordenboek navigeert volgens ISO 32000-1 §12.7.5) in plaats vanFPDFAnnot_GetStringValue(Annot, 'V', ...)(die het widgetwoordenboek leest); de widget bevat meestal geen/V, waardoor/ASnooit werd gesynchroniseerd met de ingeschakelde status en een afgevlakt selectievakje/keuzerondje als uitgeschakeld werd gerenderd
Version 2.37.0
Gewijzigd (Changed)
ParseTsaUrlbegrenst de poort nu tot1..65535na het parseren; een te grote poortwaarde zou anders viaDWORD-afkapping rondlopen en op een geldige poort kunnen uitkomen- XFDF
ParseFieldaccepteert nu een diepteparameter (standaard 0, begrensd op 64) en retourneert een leeg veld bij de limiet, zodat een kwaadwillig geneste 100 000-diepe<field>-keten de stack niet langer kan laten overlopen
Opgelost (Fixed)
- TSA HTTP-verzoeken beveiligen nu tegen een lege verzoektekst voordat
@ReqDer[0]aanWinHttpSendRequestwordt doorgegeven; een dereferentie van een dynamische array met lengte nul zou toegang krijgen naar een ongeldige pointer;BuildTimeStampReqretourneert altijd een niet-lege SEQUENCE, maar de aanroepsite verdedigt nu het contract
Opmerkingen (Notes)
- Het commentaar in de
FPdfTsaWin-header over HTTPS-intrekkingcontrole is gecorrigeerd: WinHttp valideert standaard de certificaatketen van de server, maar voert geen CRL/OCSP-intrekkingcontrole uit tenzij expliciet ingeschakeld viaWinHttpSetOption; de eerdere bewoording beweerde dat intrekkingcontrole “gratis wordt meegeleverd”, wat misleidend was
Version 2.36.0
Gewijzigd (Changed)
- TSA HTTP-verzoeken verzenden nu een expliciete
Content-Length-header naast deContent-Type- enAccept-headers; WinHttp synthetiseert deze uit de totale lengte, maar sommige RFC 3161-proxies vereisen een expliciete header en weigeren het verzoek met411 Length Requiredzonder deze - XFDF-export laat nu C0-besturingstekens (behalve TAB/LF/CR die al zijn ge-escaped) vallen in plaats van een ongeldige backslash-hex-reeks te verzenden; de eerdere
\-01F-escape is geen geldige XML (backslash heeft geen speciale betekenis in XML), waardoor elke conforme lezer het document als misvormd zou hebben geweigerd InjectAssociatedFilesschrijft nu/Subtypenaar het EmbeddedFile-stroomwoordenboek wanneer de aanroeperTAssociateFile.MIMETypeopgeeft; het veld was gedeclareerd en gedocumenteerd, maar de injector gebruikte voorheen hard-coded/Type /EmbeddedFileen negeerde het (ISO 32000-2 §7.11.4 staat/Subtypetoe op de stroom)
Opgelost (Fixed)
- XFDF-import sloeg de eerste inhoudsbyte over na een UTF-8 BOM en de eerste byte wanneer er geen BOM aanwezig was:
BytesToAnsi(Bytes, 4, ...)(BOM) enBytesToAnsi(Bytes, 1, ...)(geen BOM) gebruikten off-by-one begin-offsets omdatBytesToAnsieen 0-gebaseerde array-index verwacht; de aanroepen gebruiken nu3en0 ExtractSignatureValuebevatte twee hangende-if-inspringingsfouten waarbijR.Position:= CNonvoorwaardelijk werd uitgevoerd voor de optionelecertificates [0]- ensignedAttrs [0]-takken; de takken zijn nu ingepakt inbegin/endzodat de positie alleen wordt verhoogd wanneer de optionele TLV daadwerkelijk is gelezen (dezelfde categorie fout als gecorrigeerd inAddSignatureTimestampToCmsin v2.22.0)
Version 2.35.0
Gewijzigd (Changed)
TFPDFAvail_IsDocAvail,TFPDFAvail_IsPageAvailenTFPDFAvail_IsFormAvailverwachten nuhints: PFX_DOWNLOADHINTSin plaats vanvar hints: FX_DOWNLOADHINTS, zodat de gedocumenteerdenullptralleen-lezen status (controleer de huidige beschikbaarheid zonder meer gegevens op te vragen) bereikbaar is vanuit Delphi; de PDFium-header staat expliciet toe dathintsnull kan zijn; de eerderevar-binding maakte dat onmogelijkTFPDF_SetSystemFontInfoverwacht nupFontInfo: PFPDF_SYSFONTINFOin plaats vanvar pFontInfo: FPDF_SYSFONTINFO, zodat aanroepersnilkunnen doorgeven om PDFium te laten stoppen met het gebruiken van een eerder geregistreerde systeemlettertype-interface (het gedocumenteerde pad voor uitschakeling)TPdfThumbnailView.PaintberekentVisibleRowsnu met dezelfde formule alsUpdateScrollBarRange(ClientHeight div RowHeight), zodat het aantal getekende rijen overeenkomt met de paginagrootte van de schuifbalk; de eerdere formule voor alleen tekenen ((ClientHeight - FMarginY) div RowHeight + 1) kon bij randhoogtes één rij afwijken, waardoor een rendering op een buiten-pagina rij werd verspild of de laatste zichtbare rij werd gemist
Version 2.34.0
Toegevoegd (Added)
TPdf.SaveAsEncrypted/SaveAsEncryptedToStream— high-level API die het document opslaat en vervolgens versleutelt met PDF 2.0 AES-256-CBC (V=5/R=5/R=6); accepteert eenTPdfEncryptOptionsmet gebruikers-/eigenaarwachtwoord, machtigingen en revisie; delegeert aanEncryptDocumentBytes- StrF literal-string-versleuteling:
EncryptDocumentBytesversleutelt nu letterlijke(...)-tekenreeksen in niet-stroomobjecten (Info-woordenboek, enz.) naar AES-256-CBC hex-tekenreeksen, passend bij het stroomversleutelingsformaat (16-byte IV + PKCS7-cijfertekst); hex-tekenreeksen<...>blijven onaangeroerd
Version 2.33.0
Toegevoegd (Added)
- Volledige documentversleutelings-injector voor AES-256-CBC in
FPdfEncrypt.pas;EncryptDocumentBytesaccepteert een PDF in platte tekst en een wachtwoord, versleutelt elk indirect stroomobject (16-byte IV + AES-256-CBC PKCS7 onder de bestandssleutel), repareert/Length, voegt het/Encrypt-woordenboekobject toe en bouwt een volledige klassieke kruisverwijzingstabel + trailer op met/Encrypten/ID; voltooit de PDF 2.0-versleutelingsstack (AES-blok + GCM + SHA-512/384 + R6-sleutelafleiding + woordenboek + documentsweep) EncryptStreamPayload-helper — het PDF 2.0 AES-256-stroomformaat (IV voorafgegaan aan AES-CBC-PKCS7-cijfertekst), herbruikbaar door aanroepers die hun eigen objectindeling beheren
Version 2.32.0
Toegevoegd (Added)
- SHA-512 / SHA-384-hash (FIPS 180-4) in de nieuwe unit
FPdfSha512.pas, geïmplementeerd in pure Pascal; vereist voor de PDF 2.0 R6-wachtwoordhash-iteratie, die vertakt op een 128-bits mod-3-waarde om elke ronde SHA-256/384/512 te kiezen; FIPS-180-4 B.1 bekend-antwoord geverifieerd - PDF 2.0-versleutelingssleutelafleiding en Encrypt-woordenboekbouwer in de nieuwe unit
FPdfEncrypt.pas; implementeert ISO 32000-2 §7.6.4.3 algoritme 2.B (R6 hash dance: AES-128-CBC + iteratieve SHA-256/384/512-selectie), leidt de 32-byte bestandsversleutelingssleutel af plus de vermeldingen/O,/U,/OE,/UEen/Perms, en bouwt het V=5/R=5/R=6 Encrypt-woordenboek met/CFM /AESV3; gebruikt bytebuffers in TBytes-stijl
Version 2.31.0
Toegevoegd (Added)
- AES-blokcijfer-primitieven (FIPS 197) in de nieuwe unit
FPdfAes.pas; Pure-Pascal AES-128 en AES-256 blokcijfers plus CBC-modus helpers en een CSPRNG-backend; FIPS-197 Appendix C.2 / C.3 bekend-antwoordtests verifiëren de correctheid; dit is de cryptografische basis voor de PDF 2.0-versleutelingsstack - AES-GCM geauthenticeerde versleuteling (NIST SP 800-38D) in the nieuwe unit
FPdfAesGcm.pas; implementeert GHASH (GF(2^128)-vermenigvuldiging), GCTR en de GCM AEAD-constructie bovenop de AES-blokprimitieven; NIST GCM-testcases 1 en 3 (AES-128) komen exact overeen met de definitieve cijfertekst en tag; testcase 13 (AES-256) doorloopt een volledige cyclus; GCM is de ISO/TS 32003-modus voor PDF 2.0 - PDF/A Level A ParentTree- en ClassMap-integriteitsvalidatie (ISO 19005-1 §6.8.3);
pvaiParentTreeMissingmarkeert een StructTreeRoot zonder de /ParentTree nummerboom;pvaiClassMapUnresolvedmarkeert een /C-klasseverwijzing zonder een /ClassMap
Version 2.30.0
Toegevoegd (Added)
- Geassocieerde bestanden-injectie (
InjectAssociateFiles/TPdf.SaveAsWithAssociateFiles, ISO 32000-2 §7.11.4); de nieuwe unitFPdfAssocFileskoppelt/AF-arrays van bestandsspecificatieverwijzingen aan de catalogus of een paginadocument, wat alle acht ISO 32000-2 Tabel 45/AFRelationship-waarden dekt; hergebruikt het incrementele updatepatroon dat is bewezen doorInjectPadesDssMarkers - PDF/X-6 (ISO 15930-9:2020) ondersteuning;
TPdfXConformancevoegtpxc6toe; de injector en validator leiden dit door depdfxid:GTS_PDFXVersion-identificatie; PDF/X-6 is de op PDF 2.0 gebaseerde opvolger van PDF/X-4 voor volledige uitwisseling - PDF/A verbiedt de actie
/Thread(ISO 19005-1 §6.6.1 whitelist-hiaat); de lijst met verboden acties dekt nu Thread naast Launch, ResetForm, ImportData, SetOCGState, SetState, GoTo3DView, Rendition en Hide
Opgelost (Fixed)
- PDF/A-4e validatiepad respecteert nu dezelfde getagde structuur, MarkInfo en woordafbrekingscontroles als Level A; de v2.29.0 opslag-zijde downgrade dekte
PdfAIsLevelE, maar drieValidatePdfACompliance-poorten controleerden alleenPdfAIsLevelA, waardoor een PDF/A-4e-document zonder getagde structuur stilletjes slaagde - OCG
/BaseStatetestafwijking: de v2.28.0 PostProcess-stap breidde de acceptatie correct uit naar/ONof/OFF(ISO 32000-1 Tabel 8.70), maar de Delphi- en C++-tests verwachtten nog steeds dat/OFFzou worden geweigerd; tests gebruiken nu een echt ongeldige waarde (/Undefined) en een new positieve test vergrendelt de acceptatie van/OFF - Geospatiale
/Subtype /GEOovermatching:ContainsDictionarySubtype('GEO')kwam overeen met elk woordenboek dat het token bevatte, inclusief niet-gerelateerde zoals een verdwaalde/ViewerPreferences << /Subtype /GEO >>; de nieuweContainsMeasureDictionarySubtypevereist bovendien/Type /Measureof een Measure-exclusieve zustersleutel, zodat woordenboeken die geen Measure zijn niet langer voldoen aan de ADBE ExtensionLevel 3-vereiste
Version 2.29.0
Toegevoegd (Added)
- PDF/A-4 (ISO 19005-4:2020) ondersteuning in de validator, XMP-injector en de Pdfium-objectmodellengte;
TPdfAConformancevoegtpac4base,pac4fenpac4etoe; het basisniveau is PDF 2.0 (ISO 32000-2) en vervangt de verouderde A/B/U-niveaus door basis + F (formulier) + E (toegankelijkheid);ValidatePdfAleest eenpdfaid:part=4XMP-pakket (basis laat het conformiteitselement weg),SaveAsPdfAverzendt dit enSignPadesWithPdfAaccepteertpac4baseals een lange-termijn archiefcontainer FPDFBookmark_GetColor-binding — de laatste niet-gebonden openbare export van PDFium (469/469);TBookmarkkrijgtHasColor- enColor-velden die zijn gevuld vanuit de bladwijzer/C-array (ISO 32000-1 §12.3.3); de binding maakt gebruik van tolerante weergave zodat oudere DLL's van vóór de export blijven werken- PDF/E-1 (ISO 24517-1 §5) headerversie-controle
pveiBadPdfVersion— PDF/E-1 is gebaseerd op PDF 1.6 en een niet-1.6 header wordt nu gemarkeerd - PDF/R-1 (ISO 23504-1)
pvriEncryptVersionMismatch— versleuteling is alleen toegestaan op een%PDF-2.0-header; a 1.x-body die/Encryptbevat, wordt nu gemarkeerd (voorheen een no-op verklaring) - PDF/R-1
pvriBadMediaBox— deMediaBoxvan elke pagina moet[0 0 w h]zijn;PdfRHasNonZeroMediaBoxOriginis een taal-onafhankelijke ASCII-scanner die indirect-gerefereerde MediaBoxes overslaat - PDF/A Level A
pvaiRoleMapUnresolved(ISO 19005-1 §6.8.3.4) — een aanwezige maar onvolledige RoleMap die aangepaste/S-structuurtypen niet-toegewezen laat, wordt nu gemarkeerd, waardoor het gat wordt gedicht dat door de bestaande controle op alleen aanwezigheid (pvaiRoleMapMissing) was achtergelaten
Opgelost (Fixed)
PdfVersionToName(20)retourneerde"1.0"in plaats van"2.0", wat de catalogus/Version-vermelding en validator-berichten voor elke PDF 2.0-opslag beschadigde; de formatter splitst major.minor nu expliciet voor versiecodes>= 20- De negatieve-INTEGER-encoder in
FPdfAsn1.pascompileerde niet onder Delphi 12 (E2015opInteger(-(V<0))), wat het gehele testproject blokkeerde; gecorrigeerd doorInt64(-Ord(V<0))te gebruiken voor het tekenuitbreidingsmasker - De lijst met voor PDF/A verboden annotaties bevat nu
/RichMediain alle delen (voorheen gemist; ISO 32000-1 §12.5.6.35 verbiedt dit in PDF/A)
Version 2.28.0
Toegevoegd (Added)
TPdfVersionbevat nupv20voor PDF 2.0 (ISO 32000-2);DecodePdfVersion(20)retourneertpv20in plaats vanpvUnknown, enEncodePdfVersion(pv20)verzendt 20 zodat de versie van een PDF 2.0-document niet langer verloren gaat bij het teruglezen en expliciet kan worden geschreven
Gewijzigd (Changed)
DecodeDateparseert nu PDF-datumtekenreeksen met optionele achtervoegselvelden volgens PDF Reference 3.8.3, in plaats van de volledige 23-tekens tellende vormD:YYYYMMDDHHmmSSOHH'mm'te vereisen; conforme afgekorte datums zoalsD:20260712,D:20260712153000enD:20260712153000Zworden nu geaccepteerd; voorheen werden ze geweigerd door een strikteLength=23-poort; het uuroffset van de tijdzone wordt nu gevalideerd tegen het reële bereik UTC-12..UTC+14 in plaats van> 23FPdfMeasure.MeasureTextcodeert de lettertypenaam nu als FPCAnsiString/ DelphiUTF8Encode, passend bij de andere FPDF_BYTESTRING-aanroepsites van de bibliotheek, in plaats van een kale typecast naarAnsiStringdie niet-ASCII-familienamen verminkte via de huidige codepagina
Opgelost (Fixed)
- Het pad voor negatieve waarden van
TDerWriter.Integercrashte of produceerde misvormde DER: de luswhile V <> -1 do V := V shr 8lietInnerleeg bijValue = -1(bereikfout bij de daaropvolgendeInner[Length(Inner)-1]) en produceerde te veel bytes voor andere negatieve waarden; de encoder extraheert nu twee-complementbytes met tekenuitbreidende verschuivingen en stopt correct wanneer de rest pure tekenuitbreiding is; CMS/PAdES INTEGER-velden zijn positief, dus dit heeft alleen invloed op aanroepers die negatieve waarden doorgeven, maar het pad is nu correct TPdf.GetCharacterOriginenTPdfView.GetCharacterOriginnegeerden de retourwaarde vanFPDFText_GetCharOriginen retourneerden een niet-geinitialiseerd punt bij een fout; het resultaat wordt nu op nul geïnitialiseerd en een mislukte leesactie retourneert het nulpunt (passend bij het contract vanGetCharacterRectangle)
Version 2.27.0
Gewijzigd (Changed)
- De
PDFViewer- enMultiPageViewer-demo’s voor Delphi, C++Builder en Lazarus beheren zoekopdrachten nu eenmaal, accepterenEnterenF3voor het volgende resultaat en gebruikenEscvoor het annuleren van zoeken of afdrukken - Afdrukken volgt nu de huidige rotatie van de viewer en kiest staande of liggende uitvoer overeenkomstig
- Alle drie
ViewerInteractionLab-demo’s ondersteunenCtrl+A,Ctrl+C,Enter,F3enEsczonder native selectie- en kopieeropdrachten te onderscheppen
Opgelost (Fixed)
- Het annuleren van afdrukken in C++Builder en Lazarus breekt nu de printertaak af en Lazarus verlaat alle geneste kopieer-, pagina- en sorteerlussen
- De knop Cancel van Delphis
MultiPageVieweris met de handler verbonden en de zoekvelden van de C++Builder/Lazarus-MultiPageViewerbehouden native pijl-, Home- en End-toetsbewerking
Version 2.26.0
Gewijzigd (Changed)
TPdf.GetObjectBitmap,TPdf.GetBitmap,TPdf.GetThumbnailen deTPdfView-tegenhangers nemen nu de rendervergrendeling rondFPDFImageObj_GetBitmap/FPDFPage_GetThumbnailAsBitmap, net alsRenderPage/RenderTile. Het zijn PDFium-aanroepen aan de renderkant die voorheen zonder de vergrendeling draaiden en konden racen met een gelijktijdigeUnloadPage/ReloadPageop hetzelfde documentTPdf.RenderPageThumbnailrespecteert/Rotateen berekent de passing voor/Rotate 90- en270-pagina’s opnieuw uit geroteerde afmetingen, zodat de thumbnailverhouding overeenkomt met wat de viewer toont, in plaats van de intrinsieke (ongeroteerde) afmetingen dieFPDF_GetPageSizeByIndexteruggeeft
Opgelost (Fixed)
TPdfView.GetCharacterRectanglenegeerde de retourwaarde vanFPDFText_GetCharBoxen gaf bij een foutmelding van PDFium een ongeïnitialiseerdeTPdfRectangledoor aanPageToDevice. De rechthoek wordt nu op nul geïnitialiseerd en een mislukteGetCharBoxretourneertRect(0,0,0,0)- De bufferlengte voor het URI-pad en het bestandspad in
GetLinkAnnotationszat er één naast: de tweedeFPDFAction_GetURIPath/GetFilePath-aanroep gafsize(inclusief de afsluitende NUL) door als bufferlengte aan een buffer die alssize-1was toegewezen. De aanroep geeft nusize-1door, zodat er op een PDFium-build zonder eigen klemming niet voorbij de toewijzing kan worden geschreven
Version 2.25.0
Gewijzigd (Changed)
TPdf.AddText,SetText,AddPathenInsertFormObjectFromXObjectmaken de gecachte tekstpagina en linkannotaties ongeldig vóór het opnieuw genereren van pagina-inhoud, in navolging vanSetTextPositionsenRemoveObject. Eerder gaf eenGetText/GetWebLinks/FindFirst-aanroep na het bewerken van de pagina verouderde tekst- en linkdata terug die vóór de bewerking was vastgelegd, en de bewaardeFPDF_TEXTPAGE-handle werd na het hergenereren van inhoud gebruikt met ongedefinieerd gedragTPdfView.RenderPage(HDC, ...)neemt de rendervergrendeling en maskeert FPU/SSE-uitzonderingen rond deFPDF_RenderPage-aanroep, net als alle andere rendering-ingangspunten. De vorige direct-to-DC-overload kon racen met een gelijktijdigeUnloadPage/ReloadPageop hetzelfde document en liet FPU-uitzonderingen ongemaskeerd op pre-D12-compilers- Delphis
PrintPDF-demo roept bij annulerenPrinter.Abortaan in plaats van hetfinally-blok totPrinter.EndDocte laten komen, wat de pagina’s die vóór het annuleren waren gerenderd alsnog indiende. De Lazarus-demo deed dit al correct
Opgelost (Fixed)
TPdf.GetCharacter,TPdf.GetCharcodeen hunTPdfView-tegenhangers kapten astral-plane-codepunten (emoji, CJK Extension B) dieFPDFText_GetUnicodeteruggeeft af tot de lage 16 bits viaWideChar(), wat een lone surrogate opleverde die downstream-tekstverwerking corrumpeerde. Tekens boven U+FFFF retourneren nu U+FFFD (vervangteken); gebruikGetTextom de volledige UTF-16-codering van astral-tekens op te halenGetWebLinksriepSetLength(Rectangles, FPDFLink_CountRects(...))aan zonder een-1-retourwaarde af te vangen, wat eenEOutOfMemoryveroorzaakte op een misvormde pagina. Een negatieve telling wordt nu op nul geklemdTPdf.Destroywist dePassword-tekenreeks nu uit het geheugen (viaUniqueString+FillChar) voordat de referentietellende buffer wordt vrijgegeven, zodat het wachtwoord niet leesbaar achterblijft op de heap nadat de component is vernietigd
Version 2.24.0
Toegevoegd (Added)
TPdf.DeletePage,GetAttachment,GetAttachmentName,GetAttachmentType,SetAttachmentenDeleteAttachmentvalideren nu de pagina-/bijlage-index en gevenEPdfErrorbij een waarde buiten bereik, in overeenstemming met het bestaande gedrag van de annotatie-accessors. Eerder werd een index buiten bereik rechtstreeks aan PDFium doorgegeven en leverde dat een stille no-op of ongedefinieerd gedrag op
Opgelost (Fixed)
- Page-object-handlelekken bij fouten in
TPdf.AddText,AddBitmapenAddJpegImage: wanneerFPDFText_SetText,FPDFImageObj_SetBitmap,FPDFImageObj_SetMatrixofFPDFImageObj_LoadJpegFileInlineeen exception veroorzaakte nadat het object was aangemaakt maar voordatFPDFPage_InsertObjecthet aan de pagina gaf, lekte de nativeFPDF_PAGEOBJECT-handle. Elk pad vernietigt het object nu bij de exception voordat het opnieuw wordt geworpen TPdf.UnloadPageverwierp een lopendeFPath-handle (gezet doorCreatePathmaar nog niet verbruikt doorAddPath) door deze opnilte zetten zonderFPDFPageObj_Destroyaan te roepen. De handle wordt nu vernietigd, zodat een pad dat wordt aangemaakt en vervolgens losgelaten (of onderbroken door een paginawissel) niet meer lektTPdf.InsertFormObjectFromXObjectliet deUpdatePage(FPDFPage_GenerateContent)-aanroep weg die elke zuster-invoeging (AddText/AddPath/AddBitmap/AddJpegImage/SetText/RemoveObject) uitvoert, waardoor een zo ingevoegd Form XObject verdween bij de volgende reload of opslag.UpdatePagewordt nu na de invoeging aangeroepen
Version 2.23.0
Opgelost (Fixed)
- Optional-content
/BaseState-validatie accepteert nu ook/OFFnaast/ON(ISO 32000-1 Table 8.70 staat beide toe). De vorige controle weigerde legitieme/OCProperties /D /BaseState /OFF-configuraties met een “malformed optional content”-fout, ook al was het bestand conformant - Optional-content
/Intent-validatie accepteert nu/Designen naamarrays zoals[/View /Design], niet alleen de letterlijke/View. ISO 32000-1 Table 8.70 definieert/Intentals een naam of een array van namen uit/Viewen/Design; de vorige controle op een enkele waarde weigerde standaard authoring-uitvoer ten onrechte - Geospatiale Measure-woordenboekdetectie voor de PDF 1.7
/Extensions /ADBEExtensionLevel 3-gate vereist niet langer/Type /Measure, dat ISO 32000-1 Table 254 optioneel markeert. GeoPDF-producenten die/Typeweglaten (PDFBox, QGIS, FME) omzeilden de gate eerder en produceerden stilletjes niet-conforme PDF 1.7-uitvoer; de detector matcht nu uitsluitend/Subtype /GEO
Version 2.22.0
Gewijzigd (Changed)
- De pas-zoomberekeningen van
TPdfView(GetPageZoom,GetPageWidthZoom,GetPageHeightZoom) gebruiken nuClientWidth/ClientHeightin plaats van de venster-Width/Height, zodatpfmFitPage/pfmFitWidth/pfmFitHeightde pagina op de zichtbare viewport passen in plaats van op het buitenste kader inclusief schuifbalken en randen; daarmee verdwijnt de overbodige schuifbalk die verscheen wanneer de gepaste pagina net iets groter was dan het clientgebied AddSignatureTimestampToCmsgeeft nu een explicieteExceptiondie het onleesbare CMS SignerInfo-veld aanwijst (version / sid / digestAlgorithm / signedAttrs / signatureAlgorithm) in plaats van stilletjes teExit-en en een gedeeltelijke parse door te laten lopen alsof het een volledig ondertekende CMS was; ook gecorrigeerd is het ontbrekendebegin/end-blok rond de optionelesignedAttrs [0]-tak waardoorR.Positionniet opschoof
Opgelost (Fixed)
- CNG-handlelek van de privésleutel in
ResolveWinSigner: wanneerCryptAcquireCertificatePrivateKeyslaagde maar de daaropvolgende issuer/serial-extractie ofTWinCmsSigner.Createeen exception veroorzaakte, werd deNCryptKeyHandlenooit vrijgegeven omdat het eigendom alleen bij een succesvolle constructor naar de ondertekenaar overgaat. De setup na acquire is nu ingepakt, zodat de handle bij elke fout eerst viaNCryptFreeObjectwordt vrijgegeven EcDsaP1363ToDerweigert nu een volledig nulr- ofs-deel in plaats van eenINTEGER 0te schrijven; ECDSA-handtekeningen metr = 0ofs = 0zijn ongeldig (RFC 4754 §6 / FIPS 186-4 §6 vereisen1 ≤ r, s ≤ n-1) en zouden anders door een soepel verifier als echt worden geaccepteerd
Version 2.21.12
Opgelost (Fixed)
- Expliciete PDF 1.5 tot PDF 1.7-opslaan weigeren nu onjuist geformatteerde catalogus-
/OCProperties-structuren, inclusief ontbrekende vereiste/OCGs- of/D-vermeldingen, ongeldige standaardconfiguratiewaarden en niet-array statusvermeldingen
Version 2.21.11
Opgelost (Fixed)
- Expliciete PDF-versie-opslaan weigeren nu directe of indirecte pagina-
/Annots-vermeldingen waarvan de annotatiewoordenboeken de vereiste/Subtype- of/Rect-vermelding weglaten
Version 2.21.10
Opgelost (Fixed)
- Expliciete PDF 1.7-opslaan vereisen nu dat geospatiale
/Type /Measure /Subtype /GEO-woordenboeken en Projection-annotaties/Extensions /ADBEdeclareren met/BaseVersion /1.7en/ExtensionLevel 3of nieuwer
Version 2.21.9
Opgelost (Fixed)
- Expliciete PDF 1.7-opslaan vereisen nu dat RichMedia-annotaties en
RichMediaExecute-acties/Extensions /ADBEdeclareren met/BaseVersion /1.7en/ExtensionLevel 3of nieuwer
Version 2.21.8
Opgelost (Fixed)
- Expliciete PDF 1.7-opslaan vereisen nu dat PRC 3D-streams
/Extensions /ADBEdeclareren met/BaseVersion /1.7en/ExtensionLevel 1of nieuwer, in plaats van PRC als kernfunctie van PDF 1.7 te behandelen
Version 2.21.7
Opgelost (Fixed)
- Expliciete PDF 1.4 en oudere opslaan weigeren nu afbeelding-XObject
/SMaskInData-vermeldingen, inclusief een expliciete waarde van0, omdat ingesloten JPEG 2000 zachte maskerkanalen PDF 1.5 of nieuwer vereisen
Version 2.21.6
Opgelost (Fixed)
- Expliciete PDF 1.4 en oudere opslaan weigeren nu 16-bits afbeelding-XObjects die PDF 1.5 of nieuwer vereisen, terwijl PDF 1.5 tot PDF 1.7-doelen hun
/BitsPerComponent 16afbeeldingsgegevens behouden
Version 2.21.5
Opgelost (Fixed)
- Expliciete PDF 1.4 en oudere opslaan weigeren nu documentcatalogus-
/PageLayout /TwoPageLeften/TwoPageRight-waarden die PDF 1.5 of nieuwer vereisen, terwijl PDF 1.5 tot PDF 1.7-doelen de gevraagde tweezijdige lay-out behouden
Version 2.21.4
Opgelost (Fixed)
- Expliciete PDF 1.3-opslaan weigert nu catalogus-
/Lang-vermeldingen van het document die PDF 1.4 of nieuwer vereisen, terwijl PDF 1.4 tot PDF 1.7-doelen de taalidentificator behouden
Version 2.21.3
Opgelost (Fixed)
- Expliciete PDF 1.3-opslaan weigert nu de
/EmbeddedFiles-naamstructuren van het document die PDF 1.4 of nieuwer vereisen, zonder ingesloten bestandsstromen te weigeren die via oudere bestandsspecificaties worden gerefereerd
Version 2.21.2
Opgelost (Fixed)
- Expliciete PDF 1.3-opslaan weigert nu actieve metadatastromen, die PDF 1.4 of nieuwer vereisen, en behoudt ze voor PDF 1.4 tot PDF 1.7-doelen
Version 2.21.1
Opgelost (Fixed)
- Hybridreferentievalidatie past nu aanvullende
/XRefStm-vermeldingen toe vóór klassieke xref-plaatshouders van dezelfde revisie, zodat gecomprimeerde annotaties en andere versiebegrensd objecten niet meer worden gemist
Version 2.21.0
Gewijzigd (Changed)
- Alle Delphi-, C++Builder- en Lazarus-viewervoorbeelden kunnen nu een PDF openen die als eerste opdrachtregelargument wordt doorgegeven, en de C++Builder- en Lazarus-
MultiPageViewer-voorbeelden bieden expliciete sneltoetsen voor alles selecteren en kopiëren
Opgelost (Fixed)
- Viewervoorbeelden wijzen nu ongeldige pagina-doelen voor bookmarks en links af, bewaren laadfouten, valideren handmatige zoominvoer consistent, printen de gevraagde pagina met ingevulde formulierwaarden in plaats van de zichtbare pagina te herhalen, en breken geannuleerde Delphi-printtaken af in plaats van partiële uitvoer in te dienen
Version 2.20.0
Gewijzigd (Changed)
- Alle Delphi-, C++Builder- en Lazarus-viewervoorbeelden bieden nu consistente sneltoetsen voor openen, zoeken, opslaan, afdrukken, zoomen en paginavigatie, terwijl elke
ViewerInteractionLab-variant ook paginasprongen, gevalideerd handmatig zoomen van 10–60 %, persistente interactielogboeken en klik-coördinaat-rondreipchecks ondersteunt
Version 2.19.1
Opgelost (Fixed)
- Expliciete PDF-versievalidatie volgt nu de actieve klassieke, hybride of xref-stream-revisieketen, inclusief vermeldingen van gecomprimeerde objecten, zodat vervangen, vrijgegeven en niet-gerefereerde objecten geen valse fouten over functieversies meer veroorzaken
Version 2.19.0
Gewijzigd (Changed)
- De C++Builder- en Lazarus-voorbeelden voor bijlagen, afbeeldingsextractie, tekstextractie, paginaconversie en splitsen gebruiken nu aparte uitvoermappen of veilig afgeronde bestanden, stabiele namen met voorloopnullen, responsieve voortgangsupdates en voltooiingssamenvattingen met fouttellingen per item
Opgelost (Fixed)
- De C++Builder
CJKTextLabmeet tekst nu via de geëxporteerde PDFium-bewerkingsfuncties, enMergePDFvermijdt een ambigueuze VCL-berichtoverloading, waardoor schone RAD Studio 37-builds worden hersteld
Version 2.18.3
Opgelost (Fixed)
- Het PAdES B-LTA Document Time-stamp wordt nu geregistreerd als een vindbaar handtekeningveld — een onzichtbare Widget bereikbaar via de eerste pagina
/Annotsen het AcroForm/Fields(ETSI EN 319 142-1 §5.4.3) — in plaats van een onbereikbaar weesobject dat door handtekeningveld-enumererende validators niet kon worden gevonden; bestaande annotaties en velden blijven behouden
Version 2.18.2
Opgelost (Fixed)
- PAdES-ondertekening en klassiek schrijven van kruisreferenties geven nu een duidelijke fout wanneer een byte-offset de vaste 10-cijferige veldbreeddte (~9,3 GB) overschrijdt, in plaats van stilletjes de
/ByteRange-plaatshouder ongeschreven te laten (wat een ongeldige handtekening produceert) of de 20-byte xref-regel te overschrijden (ISO 32000-1 §7.5.4); kruisreferentie-stream-uitvoer gebruikt 8-byte binaire velden en wordt niet beïnvloed
Version 2.18.1
Opgelost (Fixed)
- PAdES-ondertekening lost nu indirecte eerste pagina
/Annots-,/AcroForm- en/Fields-verwijzingen op via volledig object-header (ISO 32000-1 §7.5.3) en via het werkelijke generatienummer van de verwijzing; een eenvoudige subtekenreekszoekactie matchte eerder een objectnummer in een langere (waarbij5 0 Rwerd opgelost als15 0 obj) en een hardgecodeerde generatie mistegen>0-objecten, waardoor de handtekeningveld-arrays werden beschadigd of geldige documenten werden geweigerd - Wanneer de catalogus, eerste pagina,
/Annots,/AcroFormof/Fieldszich in een objectstream bevindt, probeert ondertekening nu opnieuw op een uitgebreide kopie voordat het mislukt, in plaats van het document meteen af te wijzen
Version 2.18.0
Toegevoegd (Added)
ReadPdfVersionInforapporteert de headerversie, effectieve kernversie, catalogusoverschrijving en Adobe-ontwikkelaarsextensieniveau vanuit een PDF-stream
Gewijzigd (Changed)
- Expliciete PDF 1.3-1.7-opslag valideert nu catalogus-, paginabronnen-, XFA-, redactie- en ontwikkelaarsextensiestructuren in hun eigenaarsobjectcontext; versleutelde expliciete versie-uitvoer en PDF 1.3 incrementele normalisatie worden geweigerd om documentintegriteit te bewaren
- Bestandspad-opslag schrijft nu naar een tijdelijk nevenbestand en vervangt de bestemming pas nadat alle compressie-, normalisatie- en versiecontroles zijn geslaagd
Opgelost (Fixed)
- PDF 1.3-uitvoer bevat nu de vereiste volledige
/ProcSet-bron en verwijdert PDF 1.4-transparantiesleutels wanneer deze alleen de initiële grafische toestandswaarden van PDF 1.3 herhalen - Hybride-referentie-, xref-stream- en objectstreambestanden worden niet meer herschreven door de klassieke-xref-compressor, waardoor wordt voorkomen dat gecomprimeerde-object-vermeldingen worden weggelaten
- Namen die lijken op transparantie- of cataloguseigenschapssleutels in tekenreeksen, commentaren of niet-gerelateerde bronkaarten veroorzaken geen valse doelversiefouten meer
Version 2.17.0
Toegevoegd (Added)
- PAdES-handtekeningen worden nu geregistreerd als onzichtbare Widget-annotaties in de eerste pagina
/Annots-array en in de AcroForm/Fields-array, waarbij bestaande annotaties en formuliervelden behouden blijven
Gewijzigd (Changed)
- Incrementele PDF/A-, PDF/X-, PDF/E-, PDF/R-, PDF/UA-, PDF/VT- en PAdES-updates bewaren nu de kruisreferentierepresentatie van het brondocument: xref-streamdocumenten ontvangen een xref-streamupdate zoals vereist door ISO 32000-1 §7.5.8.1, terwijl klassieke documenten een xref-tabel blijven ontvangen
- Kruisreferentie-offsets,
startxref,/Prev, PAdES ByteRange-waarden en SHA-256-bereiksverwerking gebruiken nu 64-bits posities met gesegmenteerde hashing, waardoor bestanden groter dan 2 GB mogelijk zijn in 64-bits builds - Gegenereerde beschrijfbare XMP-pakketten reserveren nu 2048 bytes opvulling vóór de sluitende pakketinstructie
Version 2.16.10
Opgelost (Fixed)
- Objectstream-uitbreiding herstelt niet langer verouderde kopieën van objecten die een incrementele update uit de objectstream naar een gewone definitie heeft gemigreerd (ISO 32000-1 §7.5.7); conformantiecontroles en markerinjectie losten eerder de verouderde catalogus of het verouderde metadatawoordenboek op bij dergelijke bestanden
Version 2.16.9
Opgelost (Fixed)
- In Free Pascal worden tekstreeksen waarvan de invoer geen geldige UTF-8 is, byte voor byte als Latin-1 verbreed en als UTF-16BE hex-reeksen geschreven; de onbewerkte hoge bytes lekten eerder in een letterlijke reeks, wat geen legale PDF 1.7-tekstreekscodering is
- Streamdecodering herkent nu onbewerkte deflate-gegevens zonder de RFC 1950 zlib-wrapper (een veelvoorkomend gebrek van defecte schrijvers) en decomprimeert deze in onbewerkte modus, zodat conformantiescans niet langer stilletjes blind zijn voor dergelijke streams
Version 2.16.8
Opgelost (Fixed)
- Incrementele updates geschreven door het opslaan-nabewerkingspad vernieuwen nu het tweede (wijzigende) trailer
/ID-element zoals vereist door ISO 32000-1 §14.4; beide elementen werden eerder letterlijk gekopieerd, zodat caching- en synchronisatietools een ongewijzigde identifier zagen na elke update
Version 2.16.7
Opgelost (Fixed)
- Het streambody-blankeren dat wordt gebruikt door conformantiescans vereist nu dat het sleutelwoord
streamwordt gevolgd door een regeleindeteken (ISO 32000-1 §7.3.8.1); het woord in een letterlijke reeks zoals(downstream)blankeerde eerder alle volgende structuur tot het volgendeendstream, waardoor echte schendingen werden verborgen voor de byte-niveau-controles - De PDF/X- en PDF/E-scans op verboden kenmerken blankeren bovendien letterlijke reeksen en commentaren (§7.2.2), zodat een waarde zoals
/Title (see /JavaScript docs)of een commentaarteken geen valseJavaScript-,AcroForm- ofLZWDecode-bevinding meer produceert
Version 2.16.6
Opgelost (Fixed)
- PDF/VT DPM-vermeldingen worden nu bij schrijftijd gevalideerd zoals gedocumenteerd: sleutelnamen die de ISO 16612-2 §6.6 NMTOKEN-regel of de Annex E-registrantprefixregel schenden, en dubbele namen, worden geweigerd in plaats van in het DPart-woordenboek te worden geschreven — een naam met een spatie werd eerder gesplitst in een ongeldig sleutel/waardepaar en beschadigde het woordenboek
Version 2.16.5
Opgelost (Fixed)
- Het verwijderen van een woordenboekvermelding waarvan de waarde een hex-reeks is (zoals
/Check <...>) verwijdert nu de volledige vermelding; de injectoren lieten eerder een weeshex-waarde achter, waardoor een syntactisch beschadigd woordenboek ontstond - Het verwijderen van een vermelding waarvan de indirecte verwijzing regeleinden gebruikt tussen de tokens (ISO 32000-1 §7.3.10 staat elk witruimteteken toe) laat het generatienummer en het sleutelwoord
Rniet langer achter
Version 2.16.4
Opgelost (Fixed)
- De maximale-objectnummersscan vereist niet langer dat objectheaders een regel beginnen (ISO 32000-1 §7.5.3 staat elk witruimteteken of begrenzer toe), zodat injectoren geen objectnummer meer kunnen toewijzen dat botst met een inline
N G obj-header en het bestand stilletjes beschadigt; objectnummers worden begrensd door het Annex C-plafond - Streams waarvan
/Lengtheen indirecte verwijzing is, lossen nu het gerefereerde gehele-getalobject op en gebruiken de waarde ervan wanneer deze overeenkomt met het sluitendeendstream; dergelijke streams werden eerder begrensd door een patroonzoekactie, die body's afkapte die deendstream-bytereeks legaal bevatten — typisch voor ingesloten PDF-bijlagen
Version 2.16.3
Opgelost (Fixed)
- Streamcompressiepassen laten kruisreferentie-streamdocumenten (PDF 1.5+-bestanden zonder een klassiek sleutelwoord
trailer) ongewijzigd door; het herbouwpad parseerde eerderstartxreffoutief als de tabellocatie en synthetiseerde een geraden trailer, wat een niet te openen bestand kon produceren - De compressor slaat XMP-metadatastreams over zodat een PDF/A-document zijn verplichte ongefilterde metadatastream behoudt (ISO 19005-1 §6.7.2), en laat externe bestandsstreams (
/Fmet/FFilter) ongemoeid - De herbouwde kruisreferentietabel scant een stream-verwijderde kopie van het document, zodat binaire streaminhoud geen objectheaders meer kan nabootsen of de tabel kan opblazen; de herbouwde trailer
/Sizeweerspiegelt nu de werkelijke tabel en objectnummers worden begrensd door het Annex C-plafond - Het zoeken naar de originele kruisreferentietabel accepteert nu CR-only regeleinden (ISO 32000-1 §7.5.1) en kan de
xref-letters instartxrefniet langer matchen; de streamsleutelwoordscanning heeft dezelfdeendstream-staartbewaker gekregen die elders wordt gebruikt en gaat nu verder na overgeslagen streamhoofdteksten
Version 2.16.2
Opgelost (Fixed)
- Geheel-getal-parsing in de byte-niveau PDF-lezers accepteert nu het expliciete
+-teken dat is toegestaan door ISO 32000-1 §7.3.3 en weigert cijferreeksen die zouden overlopen, zodat vijandige of beschadigde documenten geparseerde lengtes en offsets niet meer in misleidende waarden kunnen omslaan
Version 2.16.1
Opgelost (Fixed)
- De PDF/UA-injector schrijft de catalogus
/Lang-waarde als een correcte PDF-tekstreeks; eerder liet hij de waarde door de XML-escaper lopen, zodat een taaltag met&of haakjes een beschadigde vermelding produceerde, en niet-ASCII-invoer als onbewerkte UTF-8 werd geschreven - De PDF/E
/ISO_PDFEVersionInfo-vermelding gebruikt de gedeelde tekstreeksencoder, waardoor niet-ASCII-waarden legaal blijven in PDF 1.7 - XML-escaping voor XMP-pakketten laat controlletekens weg die illegaal zijn in XML 1.0, zodat metadata gekopieerd van een beschadigd brondocument de volledige metadatastream niet langer malvormig kan maken
- PDF-naar-XMP-datumconversie valideert dat datumvelden numeriek zijn en vult een ontbrekend minutenveld op, waardoor misgevormde ISO 8601-datums in gegenereerde XMP worden voorkomen; op niet-Windows-platforms bevat de fallback-tijdstempel nu de tijd van de dag in plaats van alleen de datum
Version 2.16.0
Toegevoegd (Added)
- Streamdecodering reconstrueert nu
/DecodeParms-predictors (PNG-predictors 10-15 en TIFF-predictor 2, ISO 32000-1 §7.4.4.4) na FlateDecode, waarbij/Colors,/BitsPerComponenten/Columnsworden gerespecteerd; objectstreams gecomprimeerd met een predictor — een veelgebruikte keuze van PDF 1.5+-schrijvers — leverden eerder gedifferentieerde bytes op, zodat de objecten die ze bevatten stilletjes onzichtbaar waren voor conformantiescans en markerinjectie
Opgelost (Fixed)
- De FlateDecode-detectie parseert nu de
/Filter-waarde als een naam of array in plaats van een subtekenreeksovereenkomst, zodat gecascadeerde filterketens en het voorkomen van het woord in niet-gerelateerde waarden niet langer een onterechte inflate activeren; niet-ondersteunde ketens vallen zoals voorheen terug op de onbewerkte bytes
Version 2.15.1
Opgelost (Fixed)
- De woordenboekscanner slaat nu letterlijke reeksen, hex-reeksen en commentaren over bij het balanceren van
<</>>(ISO 32000-1 §7.2.2), zodat woordenboeken met waarden zoals(A >> B)of een hex-reeks naast de sluitende begrenzer niet langer worden afgekapt tijdens trailer-, catalogus- en conformantiescansparse - Letterlijke-reeksextractie decodeert nu de volledige §7.3.4.2 Tabel 3-escapeset —
\n \r \t \b \f, octaal\ddd, regelcontinuaties en niet-geescapte EOL-normalisatie — in plaats van de escape-letter letterlijk te kopiëren, waardoor correcte/Producer-,/GTS_PDFXVersion- en/ISO_PDFEVersion-vergelijkingen worden hersteld voor schrijvers die octale escapes gebruiken - Letterlijke reeksen geschreven door de markerinjectoren escapen nu CR, LF en andere controlletekens zodat waarden byte-voor-byte de normalisatie aan de leeskant overleven
Version 2.15.0
Opgelost (Fixed)
- Incrementele updates geschreven door de PDF/A-, PDF/X-, PDF/E-, PDF/R-, PDF/UA- en PDF/VT-markerinjectoren en door de PAdES-ondertekening en DSS-paden bewaren nu de permanente bestandsidentificator van het brondocument: het eerste trailer
/ID-element wordt letterlijk overgedragen zoals vereist door ISO 32000-1 §14.4 en alleen het tweede (wijzigende) element wordt vernieuwd; eerder werden beide elementen opnieuw gegenereerd, zodat externe verwijzingen en langetermijnvalidatieworkflows na elke opslag een andere documentidentiteit zagen - PAdES-handtekeningen, DSS-injectie en B-LTA Document Time-stamps dragen nu de
/Info-verwijzing van de brontrailer voorwaarts (ISO 32000-1 §7.5.6), zodat documenteigenschappen niet langer verdwijnen uit readerpanelen na ondertekening; de Document Time-stamp-trailer krijgt ook de/ID-array - De
/Info-fallback voor kruisreferentie-streamdocumenten lokaliseert nu de XRef-streamwoordenboek correct en behoudt het generatienummer van de verwijzing; het matchte eerder nooit op conforme PDF 1.5+-bestanden, waardoor/Infostilletjes werd verwijderd
Version 2.14.4
Opgelost (Fixed)
- De handtekeningwoordenboek
/M-datum geschreven doorTPdf.SignPadesenSignPadesBytesbevat nu het verplichteD:-voorvoegsel en deZUTC-offsetmarkering die vereist zijn door ISO 32000-1 §7.9.4; strikte validators wezen de ondertekeningsdatum eerder af als een misgevormde datumreeks
Version 2.14.3
Opgelost (Fixed)
- Woordenboeksleutelzoekopdrachten in de gedeelde PDF-lezer matchen nu volledige naametokens (ISO 32000-1 §7.3.5); eerder werd een stream waarvan het woordenboek
/Length1vóór/Lengthvermeldde (typisch voor FontFile-streams) afgekapt tot het verkeerde byteaantal, waardoor PDF/A-, PDF/UA- en andere conformantiescans die font-, CMap- of metadatastreams lezen stilletjes blind werden /Encrypt-,/Root-,/Size- en/Info-trailerzoekopdrachten matchen niet langer langere sleutels met hetzelfde voorvoegsel (zoals/EncryptMetadata)- Objectstream-uitbreiding vertrouwt niet langer op een beschadigde of vijandige
/N-waarde: niet-geheel-getalwaarden geven nu 0 in plaats van een niet-geïnitialiseerd getal, en een bovengrens afgeleid van/Firstvoorkomt te grote toewijzingen bij het scannen van misgevormde documenten
Version 2.14.2
Opgelost (Fixed)
- De PDF/X-, PDF/VT-, PDF/UA-, PDF/E- en PDF/R-markerinjectoren kopiëren nu versleutelde brondocumenten ongewijzigd door in plaats van plaintext-updatesecties toe te voegen; het vorige gedrag produceerde bestanden waarvan de laatste trailer de
/Encrypt-vermelding verloor (ISO 32000-1 §7.5.6), zodat conforme lezers het versleutelde body als plaintext lazen TPdf.SignPades,SignPadesBytesenInjectPadesDssMarkersgeven nuEPadesCryptowanneer het brondocument versleuteld is, in plaats van stilletjes een beschadigd of niet-verifieerbaar bestand uit te sturen; verwijder versleuteling vóór ondertekening of het insluiten van DSS-materiaal
Version 2.14.1
Opgelost (Fixed)
TPdf.SignPadesenSignPadesBytesvullen nu alle vier/ByteRange-velden van het handtekeningwoordenboek terug; eerder bleven de laatste drie velden op hun nulplaatshouders staan, zodat geproduceerde handtekeningen een leeg bytebereik declareerden en verificatie mislukten in conforme validators- PAdES B-LTA Document Time-stamp-woordenboeken ontvangen dezelfde
/ByteRange-terugvulcorrectie ValidatePadesComplianceaccepteert nu de standaard handtekeninglay-out waarbij het bytebereikgat de hex/Contents-waarde bevat, en controleert of het tweede bereiksegment precies eindigt aan het einde van het bestand; eerder slaagden alleen gapless bereiken de dekkingscontrole
Version 2.14.0
Toegevoegd (Added)
TPdf.ExportXFDFserialiseert elke formulierveldwaarde en annotatie over alle pagina's naar een XFDF-document (ISO 19444-1), waarbij<fields>voor hiërarchische formulierwaarden en<annots>voor alle ondersteunde annotatiesubtypen (text, highlight, underline, strikeout, squiggly, line, circle, square, caret, polygon, polyline, stamp, ink, freetext, fileattachment, sound, link, redact) worden uitgezondenTPdf.ImportXFDFleest een XFDF-document terug in de geladen PDF, waarbij annotaties opnieuw worden aangemaakt op de overeenkomende pagina's en veldwaarden worden toegepast op hun widgetannotaties- Het
TPdfAnnotation-record heeftName(NM),Subject,ModificationDate(M),CreationDate,Icon,Opacity(CA), lijnuiteinden, veelhoek/veellijnhoekpunten en inktlijstgebaarvelden gekregen zodat XFDF-rondreis de volledige annotatiemetadata bewaart - Nieuw
XfdfLab-voorbeeld in de Delphi-, C++Builder- en Lazarus-demoverzamelingen demonstreert de export/import-rondreis
Version 2.13.6
Opgelost (Fixed)
ValidatePdfAbehandelt catalogus/Metadata-streams zonder/Type /Metadataof/Subtype /XMLnu als ontbrekende XMP-metadata viapvaiMissingXmpMetadata- PDF/A-preflightrapporten classificeren
pvaiMissingXmpMetadatanu als Metadata en bevelen een catalogus/Metadata-stream aan met/Type /Metadata,/Subtype /XML, ongefilterde XMP enpdfaid-markeringen
Version 2.13.5
Opgelost (Fixed)
ValidatePdfArapporteert nu Widget-annotaties zonder een verschijningswoordenboek en PDF/A-2 / PDF/A-3-annotaties die wel/APvereisen maar niet hebben viapvaiAnnotationApDictViolation- PDF/A-preflightrapporten categoriseren
pvaiAnnotationApDictViolationnu als inhoud die markerinjectie niet kan herstellen
Version 2.13.4
Opgelost (Fixed)
ValidatePdfArapporteert nu PDF/A-2 en PDF/A-3 inline-afbeeldingen waarvan de/I- of/Interpolate-waardetrueis viapvaiImageDictionaryViolation, overeenkomend met de bestaande Image XObject-woordenboekdekking- PDF/A-preflightrapporten categoriseren
pvaiImageDictionaryViolationnu als inhoud die markerinjectie niet kan herstellen
Version 2.13.3
Opgelost (Fixed)
ValidatePdfArapporteert nu PDF/A-1 inline-afbeeldingen die/LZWDecode- of afgekorte/LZW-filters gebruiken in inhoudsstreams viapvaiInlineImageLzwForbidden, overeenkomend met de bestaande PDF/A-2 en PDF/A-3 inline-afbeeldingsdekking- De inline-afbeeldingfilterscanner gaat nu verder voorbij leidende bronnamen zoals
/GS1, waardoor vastlopen tijdens het scannen van bredere PDF/A-1-inhoudsstreams wordt vermeden
Version 2.13.2
Toegevoegd (Added)
TPdf.SetFocusedFormFieldTextschrijft tekst in de bewerkingsbuffer van het momenteel gefocuste formulierveld viaFORM_ReplaceSelection, symmetrisch aanFocusedFormFieldText. Voor AcroForm-tekst/combovelden schrijft de waarde bij focusverlies naar/Ven blijft behouden; voor XFA-tekstvelden terechtkomt de schrijfactie alleen in de geheugenbuffer (PDFium heeft geen publieke API om XFA-waarden terug te reconciliëren met het datasets-pakket, dus dit blijft niet bewaard na opslaan)- Het JavaScript-hostplatform wordt nu gekoppeld wanneer de V8-engine beschikbaar is, ongeacht of het document XFA is — zodat ingesloten AcroForm JavaScript (doc-niveau-scripts, veldberekeningen,
app.alert) ook kan worden uitgevoerd. Eerder wasm_pJsPlatformalleen aangesloten voor XFA-documenten, waardoor AcroForm JS stilletjes was uitgeschakeld
Gewijzigd (Changed)
- JavaScript-platformkoppeling is nu onafhankelijk van de XFA-beslissing in
InitializeFormFill— dem_pJsPlatform-tabel wordt opgebouwd wanneerV8FeaturesAvailabletrue is, toegepast na de XFA-versie/callback-bedrading in plaats van erin genest
Version 2.13.1
Toegevoegd (Added)
- Nieuwe hostgebeurtenissen tonen informatie die de v2.13.0-formuliervulcallbacks eerder onderdrukte:
OnXfaUriAction,OnXfaPageCountChanged,OnXfaFocusChange,OnXfaEmail,OnXfaHttpRequest,OnXfaOpenFile,OnJavaScriptBeep,OnJavaScriptPrint,OnJavaScriptMail,OnJavaScriptSubmitForm. Elke gebeurtenis behoudt het bestaande no-op-gedrag wanneer niet toegewezen, zodat bestaande hosts niet worden beïnvloed TPdf.XfaFormPacketsread-only eigenschap retourneert een eenmalige momentopname van alle XFA-pakketten (TXfaPacketList), waarbij de eerder gedeclareerde maar ongebruikteTXfaPacket/TXfaPacketList-typen worden ingevuld- XFA-specifieke PDFium-foutcodes
FPDF_ERR_XFALOAD/FPDF_ERR_XFALAYOUTzijn nu gebonden en worden doorgegeven viaLastPdfError, ter vervanging van de generieke "Unknown error" voor XFA-laad/lay-outfouten
Gewijzigd (Changed)
FFI_DoURIActionWithKeyboardModifierraadpleegt nuOnXfaUriActionvoordat een URI van een XFA-veld via shell-uitvoering wordt geopend, waardoor de host een veto heeft (beveiliging: een kwaadaardig XFA-veld kon eerder onbeperkt willekeurige URL's starten). Niet-toegewezen handlers behouden het standaardShellExecuteW-gedragDecodeFormFieldTyperouteert XFA-veldtypen nu viaIsXfaFormFieldin plaats van een expliciete 8-vertakkingscase, waardoor de enum op ordinale offset is uitgelijnd metFPDF_FORMFIELD_XFA_*
Opgelost (Fixed)
ValidatePdfArapporteert nu PDF/A-1-claims die PDF 1.5-kruisreferentiestreams of objectstreams gebruiken via het nieuwepvaiPdfA1Pdf15Structure-probleem, terwijl objectstreams voor PDF/A-2 en PDF/A-3 nog steeds zijn toegestaan
Version 2.13.0
Toegevoegd (Added)
- Volledige XFA (XML Forms Architecture) runtime-ondersteuning:
TPdf.InitializeFormFillkoppelt nu alle 14 versie-2FPDF_FORMFILLINFO-callbacks (FFI_DisplayCaret,FFI_GotoURL,FFI_PageEvent,FFI_PopupMenu,FFI_OpenFile,FFI_EmailTo,FFI_UploadTo,FFI_GetPlatform,FFI_GetLanguage,FFI_DownloadFromURL,FFI_PostRequestURL,FFI_PutRequestURL,FFI_OnFocusChange,FFI_DoURIActionWithKeyboardModifier) en koppelt eenIPDF_JsPlatformzodat een XFA-enabledpdfium.dlldynamische XFA-formulieren kan renderen en scripten - Nieuwe
Lib\FPdfXfa.pas-unit met de XFA-constanten (FXFA_PAGEVIEWEVENT_*,FXFA_MENU_*,FXFA_SAVEAS_*,FPDF_FORMFIELD_XFA_*) en deTXfaPacket/TXfaSaveFormat-typen die eerder alleen in commentaren werden gerefereerd - XFA statische pakketlezer op
TPdf:GetXfaPacketCount/GetXfaPacketName/GetXfaPacketContent/GetXfaPacketByNameplusGetXfaTemplate/GetXfaDatasets/GetXfaConfigextraheren de XFAtemplate-,datasets- enconfig-pakketten als onbewerkte XML zonder een XFA-enabled runtime nodig te hebben — nuttig voor conformantiecontrole en datamigratie - Capabiliteitprobes: globale
XfaFeaturesAvailable, en per-documentTPdf.XfaRuntimeAvailable(ofFPDF_LoadXFAdaadwerkelijk is geslaagd) enTPdf.XfaStaticReadable(of de pakketlezersexports worden opgelost) TPdfFormFieldTypeuitgebreid metfiXfa,fiXfaCheckBox,fiXfaComboBox,fiXfaImageField,fiXfaListBox,fiXfaPushButton,fiXfaSignature,fiXfaTextField, metDecodeFormFieldTypedie de nieuweFPDF_FORMFIELD_XFA_*-waarden koppelt- JavaScript-hostgebeurtenissen op
TPdf:OnJavaScriptAlert,OnJavaScriptResponse,OnXfaGotoUrlenOnXfaRuntimeMissinglaten de host JS-dialogen en XFA-navigatie aanpassen, of reageren wanneer een XFA-document de engine niet kan starten - Nieuw
XfaLabDelphi-voorbeeld dat XFA-detectie, pakketextractie, capabiliteitprobing en het runtime-missing-fallbackpad demonstreert
Gewijzigd (Changed)
TPdf.LoadDocumentscant de invoer nu vooraf op XFA-markeringen (/XFAin het AcroForm-woordenboek, of catalogus/NeedsRendering) en, wanneer gevonden, selecteert automatischpdfium.v8.dlldoorEnableV8Engine := Truein te stellen voordat de singleton-bibliotheek voor het eerst wordt geladen; zodra een gewonepdfium.dllis geladen, kan het proces niet omschakelen, dus signaleertOnXfaRuntimeMissingdat gevalTPdf.GetPageCountweerspiegelt nu het paginaantal dat de XFA-engine rapporteert viaFFI_PageEventna dynamische hernummering, in plaats van alleen de statische PDF-paginastructuur- Wanneer een XFA-document wordt geopend maar de runtime niet beschikbaar is, stelt
InitializeFormFillnuversion=1enxfa_disabled=1in plaats van versie 2 te vragen met niet-toegewezen callbacks, wat eerder een ongeldige callback-pointer-dereferentie riskeerde
Version 2.12.2
Opgelost (Fixed)
ValidatePdfACompliancerapporteert nu gebruikte aangepaste XMP-naamruimten zonderpdfaExtension:schemasterwijl het standaardpdfaid-metadata zonder extensiedeclaraties nog steeds accepteert- PDF/A-3 ingesloten bestandsvalidatie vereist nu zowel
/F- als/UF-vermeldingen op het hoogste niveau in bestandsspecwoordenboeken en negeert geneste/EF-streamsleutels bij het controleren van die namen
Version 2.12.1
Opgelost (Fixed)
ValidatePdfACompliancedecodeert nu geescapete PDF-naametokens voordat het matcht op JavaScript, LZWDecode, Type1 en gerelateerde verboden namen, zodat verduisterde maar semantisch identieke namen correct worden gerapporteerd- PDF/A inline-afbeeldingcontroles weigeren nu
/Filter- en/F-waarden die/LZWDecode, afgekorte/LZWof/Cryptgebruiken, inclusief array- en geescapete-naamvormen - PDF/A-validatie rapporteert nu metadatastreams met verboden streamfilters, OutputIntent ICC-profielen waarvan het
/N-componentaantal ontbreekt of inconsistent is, en PDF/A-3 ingesloten bestandsspecificaties met ontbrekende of ongeldige/AFRelationship
Version 2.12.0
Toegevoegd (Added)
- TSA HTTP-verzoeken stellen nu expliciete time-outs van 30 seconden in voor elke fase (resolve/connect/send/receive) via
WinHttpSetTimeouts, zodat een langzame of onbereikbare tijdstempelautoriteit de ondertekeningsthread niet onbeperkt kan laten hangen in plaats van te vertrouwen op WinHttp's impliciete standaarden - Per-verzoek nonce-afleiding voor PAdES B-T / B-LTA tijdstempelverzoeken wanneer de aanroeper
TPadesSignOptions.Nonceweglaat: een SHA-256-vouw van monotone teller + wandklok +GetTickCount64+ proces-id vervangt de vorige vaste$100000000-fallback, zodat twee verzoeken die in dezelfde milliseconde worden gedaan niet langer dezelfde anti-replay-nonce hergebruiken PdfInflatebegrenst nu gedecomprimeerde uitvoer tot 256 MiB om te voorkomen dat een zlib-gecomprimeerde stream het geheugen uitput bij een vijandige of beschadigde invoer (een “zlib bomb”); het maximum is ruimhartig voor elke echte PDF-stream
Gewijzigd (Changed)
TPdfView-overlay-blending (zoekhighlight, tekstselectie, leeswoord, spread-selectie) gebruikt niet langer per-pixelGetPixel/SetPixelV; de rechthoek wordt nu gemengd via een 32-bpp off-screenTBitmapenScanLinein een enkele doorgang, waardoor duizenden GDI-kernelkruisingen per schilderbeurt worden geëlimineerd en grote selecties responsief wordenFPdfAsn1.TDerReader.ReadIntegerweigert nu INTEGER-velden langer dan 8 bytes (en 8-byte-negatieven waarvan het tekenbitshl >= 64zou vereisen), en geeft 0 terug in plaats van een verkeerde waarde te berekenen via ongedefinieerd-verschuivingsgedrag op CMS/PAdES ASN.1-invoerParseTimeStampRespweerkaatst de verzoek-nonce niet langer terug alsTPadesTimestamp.Nonce; totdat de TSTInfo-walker die de teruggegeven nonce verifieert beschikbaar komt, blijft het veld 0 om “niet geverifieerd” te signaleren in plaats van aanroepers een vals vertrouwen te geven dat het tijdstempelantwoord vers is
Opgelost (Fixed)
PointsToPixelsgaf de invoer ongewijzigd terug voor elke DPI: de deler wasPointsPerInch(de constante 72) in plaats van de letterlijke 72, waardoor de formule werd gereduceerd totResult := Points. Elke externe aanroeper die punten→apparaatpixelgrootte via deze helper doet, krijgt nu de correctePoints × PixelsPerInch / 72PdfMaxObjNumtelde te weinig op documenten die objectstreams gebruiken (PDF 1.5+ ObjStm): objecten gecomprimeerd in een/ObjStmhebben geenN 0 obj-markering, zodat de onbewerkte-bytescan ze miste, en injectoren dieMaxObj+1toewijzen voor nieuwe objecten zouden botsen met verborgen ObjStm-leden en het bestand stilletjes beschadigen. De scan breidt nu eerst objectstreams uit zodat elk objectnummer zichtbaar isInjectPdfAMarkersmaakt geen valse PDF/A-conformantiecliam meer op een versleuteld document: PDF/A (ISO 19005-1 §7.1) verbiedt versleuteling, en de injector kopieerde de bron eerder door met de markeringen hoewel de eerstvolgende validatie het zou weigeren. WanneerHasEncryptis ingesteld, wordt de bron nu ongewijzigd doorgegeven. Het normaleTPdf.SaveAsPdfA-pad verwijdert versleuteling al (saRemoveSecurity) vóór injectie, dus dit betreft alleen directe aanroepersPdfReadStreamBytesweigert nu een/Lengthgroter dan het hele bestand voordat de resultaatbuffer wordt toegewezen, waardoor een vroeg-toewijzingspad wordt gesloten bij een beschadigde of vijandige indirecte lengte
Version 2.11.0
Toegevoegd (Added)
- Het PDFium
FPDF_FILEHANDLER-record declareert nu zijn zes callbacks (Release,GetSize,ReadBlock,WriteBlock,Flush,Truncate) als echte velden in plaats van commentaren, overeenkomend met de C-headerlay-out. De XFA FFI-bestandsoverdrachts-callbacks (FFI_OpenFile/FFI_EmailTo/FFI_UploadTo/FFI_DownloadFromURL) diePFPDF_FILEHANDLERretourneren of consumeren, blijven niet geïmplementeerd in de Pascal-formuliervullaag, maar het type is nu structureel correct voor elk toekomstig XFA-submit/uploadpad - PDFium-bibliotheeklaad en -uitladen (
LoadLibrary/UnloadLibrary) worden nu geserialiseerd door een procesgebrede kritieke sectie, zodat tweeTPdfFuture<T>-werkthreads (of een worker die racet met de hoofdthread) niet allebeiPDFiumLibrary=0kunnen waarnemen en dubbel koppelen, of de DLL kunnen vrijgeven terwijl een andere thread midden in het koppelen is - Een
initialization/finalization-sectie roept nuUnloadLibraryaan bij het onladen van de unit, zodatFPDF_DestroyLibrarywordt uitgevoerd (aansluiting van werkthreads, verwijdering van V8-isolaten, afbraak van lettertypen/caches) in plaats van te vertrouwen op het OS om de DLL terug te vorderen
Gewijzigd (Changed)
TPdf.SetActivenegeert nu elke uitzondering tijdens het laden (eerder alleenEPdfError), zodat een streamfout of toegangsschending tijdens het instellen van formulieren/pagina'sActive=Falseachterlaat in plaats van een gedeeltelijk geladen component met onbepaalde toestand- Consistente tekencodering voor PDFium-metadatasleutelargumenten:
TPdf.GetMetaTextgebruikt nu dezelfde FPCAnsiString/ DelphiUTF8Encode-splitsing alsGetViewerPreferenceen de laadpaden, in plaats van een kaleAnsiString(Tag)-cast - Gedupliceerde
BytesToAnsi-,AnsiToBytes-,WriteBytes- enWriteStr-helpers ontdubbeld:FPdfCompressimporteert ze nu uitFPdfPdfCommon(deWriteBytesToStream/WriteAnsiToStream-aliassen zijn buiten gebruik gesteld) en de redundante drieargument-BytesToAnsi-overloading inFPdfPdfais verwijderd.FPdfAsn1behoudt zijn lokale kopie om de cryptografielaag vrij van de conformantieeenheidsunit te houden
Opgelost (Fixed)
- Bronlek in
TPdf.LoadDocument(bestand, geheugen,TBytes,TMemoryStream, aangepaste stream) enTPdf.CreateDocument: alsInitializeFormFillofReloadPageeen uitzondering gooide nadatFPDF_LoadDocument/FPDF_CreateNewDocumentwas geslaagd, werd het nativeFPDF_DOCUMENT-handle gelekt omdatFActiveop dat punt nog False was. Elk pad omhult nu de post-laad-setup intry/excepten sluit het document bij mislukking, waardoor de component schoon inactief blijft - Vriendelijkere PDFium DLL-laaddiagnostiek:
CheckLoadLibrarydetecteertERROR_BAD_EXE_FORMAT(193) en rapporteert een 32/64-bit-architectuurmismatch die verwijst naar de overeenkomendeDLLs/Win32- ofDLLs/Win64-build, in plaats van alleen de generieke OS-fout door te sturen.CheckGetProcAddressgeeft nu aan dat de geïmplementeerdepdfium.dllouder is dan de binding wanneer een vereiste export ontbreekt, in plaats van de kale OS-tekst "procedure not found"
Version 2.10.1
Opgelost (Fixed)
- PAdES SignerInfo sid standaardisatie: de ondertekenaarsidentificatie gebruikt nu de RFC 5652 §5.3
issuerAndSerialNumber-vorm (issuer Name + serialNumber, beide woordelijk geëxtraheerd uit de DER van het ondertekenaarscertificaat), ter vervanging van de eerdere niet-standaardsubjectKeyIdentifier+ SHA-256-placeholder voor het volledige certificaat die Adobe Acrobat en andere conforme validators afwezen. Een nieuwe TbsCertificate DER-walker (ExtractIssuerAndSerial) leest de issuer SEQUENCE en de serial INTEGER als ruwe TLV-bytes — serienummers overschrijden vaak deInt64-reeikwijdte, dus de ruwe TLV is verplicht. DesubjectKeyIdentifier-vorm blijft alleen als fallback wanneer het parsen van de cert-DER faalt
Gewijzigd (Changed)
TCmsSignerId.SerialNumber: Int64vervangen doorSerialDer: TBytes(de ruwe serialNumber-TLV). De CMS-builder embedt de afgesneden TLV woordelijk inIssuerAndSerialNumber, waardoorInt64-overflow op 20-byte CA-serienummers wordt vermeden (bovengrens RFC 5280 §4.1.2.2)
Version 2.10.0
Toegevoegd (Added)
- PAdES B-LT langetermijnvalidatie: wanneer
TPadesSignOptions.Level >= plB_LT, voegtSignPadesByteseen incrementele update toe met een/DSS-woordenboek dat het ondertekenaarscertificaat en de volledige tussenliggende keten bevat (de self-signed root wordt uitgesloten conform RFC 5652 §10.2.3), plus de/Extensions /ESICLevel 1-markering (EN 319 142-1 §5.4.2) - PAdES B-LTA archieftijdstempel: wanneer
Level >= plB_LTAenTsaUrlis ingesteld, wordt een Document Time-stamp-handtekeningwoordenboek (/SubFilter /ETSI.RFC3161) toegevoegd waarvan de/ByteRangehet hele bestand dekt; de ESIC-markering wordt gepromoveerd naar Level 2. Dit voltooit de vier PAdES-basisniveaus (B-B, B-T, B-LT, B-LTA) - Certificaatketen-verzameling:
ResolveWinSignerroept nuCertGetCertificateChainaan en vultTPadesResolvedSigner.ChainCertDermet de tussenliggende CA-certificaten, zodat B-LT/DSS /Certselk certificaat draagt dat nodig is om de handtekening te valideren zonder externe lookups.CertFreeCertificateContextis nu gebonden, waarmee de éé-context-per-handtekening-lek die in v2.8.0 werd genoemd, wordt gesloten - PDF/A-integratieworkflow:
TPdf.SignPadesWithPdfAconverteert het document eerst naar PDF/A (het hoogste niveau dat de bibliotheek vandaag de dag uitgeeft) en past daarna de gevraagde PAdES-handtekening toe — het langetermijn-archiefcontainerpatroon dat EN 319 142-1 Annex A.7 aanbeveelt
Version 2.9.0
Toegevoegd (Added)
- PAdES B-T vertrouwde tijdstempel:
TPadesSignOptionskrijgtLevel-,TsaUrl- enNonce-velden. WanneerLevel >= plB_TenTsaUrlis ingesteld, extraheertSignPadesBytesde handtekeningwaarde uit de gebouwde CMS, vraagt een RFC 3161-tijdstempel daarover aan en embedt de teruggekeerde TimeStampToken als het niet-ondertekende SignerInfo-attribuutsignature-time-stamp— de B-T-stap met vertrouwde tijd (EN 319 142-1 §6.3 req o) FPdfTsa: platformonafhankelijke RFC 3161-client —BuildTimeStampReq(versie 1, SHA-256 messageImprint over de handtekeningwaarde, nonce, certReq=true),ParseTimeStampResp(accepteert PKIStatus 0/1, wijst 2+ af, extraheert de TimeStampToken-ContentInfo woordelijk) enRequestTimestamp(build+POST+parse in één keer).PadesTsaAvailablebedient de functie op platformen zonder een HTTP-backendFPdfTsaWin: Windows WinHttp-backend, dynamisch gebonden vanuit winhttp.dll (nul nieuwe compile-time-afhankelijkheid; HTTPS onderhandeld door de Windows-certificaatopslag). Spiegelt het dynamische-bindingspatroon vanFPdfCryptoWinFPdfCms:ExtractSignatureValuedoorloopt een gebouwde CMS om de ruwe handtekening-octetten terug te halen (de TSA-hashinvoer), enAddSignatureTimestampToCmsherbouwt de ContentInfo met een nieuweunsignedAttrs [1](0xA1) die het tijdstempelattribuut draagt. De stage-1-validator herkent het resultaat als een B-T-handtekening
Version 2.8.0
Toegevoegd (Added)
- PAdES B-B-ondertekeningsstack: vier nieuwe puur-Pascal/platformonafhankelijke bouwstenen (
FPdfSha256,FPdfAsn1,FPdfCms,FPdfCrypto) plus een Windows CNG-backend (FPdfCryptoWin) latenTPdf.SignPades/SignPadesToStreamend-to-end een PAdES B-B-handtekening produceren. Het ondertekenaarscertificaat wordt via SHA-1-vingerafdruk opgelost uit de Current User “MY”-opslag; RSA-PSS (aanbevolen), RSA PKCS#1 v1.5 en ECDSA worden allemaal ondersteund viaNCryptSignHash FPdfSha256: zelfstandige FIPS 180-4 SHA-256 (Init/Update/Final + one-shot-hulpmethoden). FPC 3.2.2 levert geen SHA-2-unit, dus de bibliotheek bezit er een om elk CMS-codepad op één enkelTSHA256Digest-type te houden zonder RTL-vertakkingFPdfAsn1: DER-encoder (TDerWriter) en -lezer (TDerReader) die SEQUENCE/SET/OID/INTEGER/OCTET STRING/UTCTime/GeneralizedTime/contextspecifieke tags dekt, met de definite-length-codering en IMPLICIT-tag-afhandeling die CMS vereistFPdfCms: CAdES SignedData-builder (BuildSignedData) die de content-type-, message-digest- en signing-certificate-v2 ondertekende attributen uitzendt die PAdES-basis vereist, met optionele signing-time en commitment-type-indication. De signedAttrs-digest wordt berekend over de SET-getagde (0x31)-vorm en opnieuw uitgezonden met de IMPLICIT [0] (0xA0)-tag conform RFC 5652 §5.4FPdfCrypto+FPdfCryptoWin: abstractie van de cryptografische backend metPadesCryptoAvailable/ResolvePadesSigner, en de Windows-implementatie die crypt32.dll / ncrypt.dll dynamisch bindt (geen nieuwe compile-time-DLL-afhankelijkheid). ECDSA-handtekeningen worden omgecodeerd van de Windows IEEE P1363 r¦s-vorm naar het DERECDSA-Sig-Valuedat CMS vereistSignPadesBytes: handtekeninginjectie op byteniveau — reserveert een/Contents-hexslot van vaste breedte, berekent de dekkende/ByteRange, digest het document, bouwt en embedt de CMS, en voegt de incrementele update toe. De validator (v2.7.0) herkent de uitvoer als een PAdES B-B-handtekening
Version 2.7.0
Toegevoegd (Added)
- PAdES-structuurvalidator (ETSI EN 319 142-1 V1.2.1): de nieuwe
FPdfPades-unit en deTPdf.ValidatePades-methode inspecteren handtekeningwaarde-woordenboeken die bereikbaar zijn vanuit/ByteRange, doorlopen de CMSSignedDatabinnen/Contentsver genoeg om de CAdES detached-vorm te bevestigen, en detecteren de vier basisniveaus (B-B, B-T, B-LT, B-LTA) plus Document Time-stamp-woordenboeken (/SubFilter /ETSI.RFC3161) - PAdES clausule-niveau probleemset: 26
ppei*-enums dekken/SubFilter-acceptabiliteit (adbe.pkcs7.sha1enadbe.x509.rsa_sha1gemarkeerd als verboden), bestandsdekking van/ByteRange,/Cert-verbod, CMSSignedData-vorm (enkele ondertekenaar, detached eContent, versiebereik), de vereiste ondertekende attributen (content-type,message-digest,signing-certificate/v2), verboden digests (MD5, SHA-1), onderlinge uitsluiting van/Reasonversuscommitment-type-indication(req d), de B-T-vertrouwde-tijdeis, de B-LT/DSS+/Certs+ ESIC Level 1-markering, en de B-LTA Document Time-stamp + ESIC Level 2-markering - DSS-injector:
TPdf.SaveAsPadesDss/SaveAsPadesDssToStreamvoegen een incrementele update toe met een/DSS-woordenboek (met/Certs-,/OCSPs-,/CRLs-stream-arrays) en de/Extensions /ESIC-markering (Level 1 of 2) op een kopie van het document, waarbij de oorspronkelijke bytes behouden blijven — de B-LT/B-LTA-inbeddingsstap voor validatiemateriaal (clausule 5.4.2) - Platformonafhankelijk, nul-afhankelijkheid stadium: de validator en injector zijn puur-Pascal en werken op elke ondersteunde IDE (Delphi, Lazarus, FPC, C++Builder); voor deze release is geen cryptografische backend vereist en wordt er geen nieuwe DLL-afhankelijkheid geïntroduceerd
Version 2.6.0
Gewijzigd (Changed)
- Standaardoverschrijdende ontdubbeling: zeven verder gedupliceerde hulpfuncties (PdfEnclosingObjNum, PdfDictRefNum, PdfExpandObjectStreams, PdfTextStr, ExtractLiteralString, ExtractXmpAttr) zijn verwijderd uit de afzonderlijke standaard-units en samengevoegd in
FPdfPdfCommon, wat ~300 regels kopieer-onderhoudslast vermindert - PreflightReport-kwaliteit: PDF/X- en PDF/E-inhoudsklasseproblemen die voorheen doorvielen naar de algemene “missing marker”-categorie dragen nu nauwkeurige Content/Metadata/Security-categorieën en clausule-specifieke aanbevelingen (~15 enums over beide standaarden)
- PDF/E- en PDF/R-testdekking: zes verder enums zonder dekking kregen positieve tests (
pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden,pveiEmbeddedFilesForbidden,pvriBadHeader,pvriProhibitedInfoEntry) - Lazarus-buildfix:
Tests.PdfVT(een Delphi-only DUnitX-unit toegevoegd in v2.5.x) is nu uitgesloten van het Lazarus-project om de compilatie te herstellen
Version 2.5.3
Toegevoegd (Added)
- OutputIntent-volledigheid (PDF/X-4 §6.2.4):
pvviOutputIntentSchememarkeert een OutputIntent waarvan/Sniet/GTS_PDFXis;pvviOutputIntentMissingIdentifiermarkeert een ontbrekende/OutputConditionIdentifier - PDF/VT-2 Reference XObject-vrijstelling (§6.2.2):
pvviReferenceXObjectForbiddenslaat niet langer aan voor eenPDF/VT-2-bestand, dat legaal Reference XObjects mag gebruiken op een X-5g/5pg-basis - MIME-boundarytekenvalidatie (RFC 2046 §5.1.1):
vtmviBoundaryInvalidCharmarkeert een boundary waarvan de tekens buiten de bchars-set vallen of waarvan de lengte 70 overschrijdt
Opgelost (Fixed)
InjectPdfVTMarkersschrijft nu Info/CreationDateen/ModDateuit de opslagopties, zodat het geproduceerde bestandValidatePdfVTCompliancenetjes rondgaat zonder een valsepvviInfoModDateMismatch(de injector herschreef voorheen de XMP-datum maar liet de Info-woordenboekdatums achterhaald)
Version 2.5.2
Toegevoegd (Added)
- Info
/ModDate-consistentie (§6.3 NOTE 2, PDF/X-4-basis):pvviInfoModDateMismatchmarkeert een Info-woordenboek-/ModDatedie, na PDF-datum-naar-XMP-datum-normalisatie, niet gelijk is aanxmp:ModifyDate - PDF/VT-2s inline chunk-conformiteit (Annex A.2): de MIME-validator draait nu
ValidatePdfVTComplianceop elk inlineapplication/pdf-onderdeel en markeert een niet-PDF/VT-body viavtmviInlinePdfNotPdfVT
Version 2.5.1
Toegevoegd (Added)
- DParts-chunkingvalidatie (ISO 16612-2 §6.5 Table 4):
pvviDPartsBadChunkingmarkeert een/DParts-array waarvan de niet-finale sub-arrays niet exact 8192 vermeldingen hebben of waarvan de laatste sub-array buiten 1..8192 valt - RecordLevel-consistentie over streams heen (Annex A.2): de PDF/VT-2s MIME-validator extraheert nu de
/RecordLevelvan elke inline PDF en markeert onenigheid viavtmviRecordLevelMismatch, als aanvulling op de bestaande NodeNameList-controle - Terugkerende grafische-objecthints (§6.7):
pvviGtsScopeInvalidValuemarkeert een/GTS_Scopebuiten {SingleUse, Record, File, Stream, Global, Unknown};pvviGtsScopeRecordWithoutRecordLevelmarkeert/Recordzonder een/RecordLevel;pvviGtsXidNotUuidmarkeert een/GTS_XIDdie geen RFC 4122 uuid:-URI is;pvviGtsEnvMissingmarkeert een ontbrekende/GTS_Envwanneer/GTS_ScopeStream of Global is (§6.7.4) - MIME forward-reference-detectie (Annex A.2):
vtmviForwardReferencemarkeert een inline PDF die een bestandsnaam citeert (via/EF /F) die niet door een eerdere bijlageonderdeel in de stream is geïntroduceerd
Opgelost (Fixed)
ExtractNodeNameListFromPdfenExtractRecordLevelFromPdfinFPdfPdfvtMimelosten een terugkerende off-by-one op, waarbij de 1-gebaseerde offset die doorAnsiFindKeywerd teruggegeven, als een absolute byte-offset in de uitgebreide PDF werd behandeld
Version 2.5.0
Toegevoegd (Added)
- PDF/VT Document Part Metadata (DPM, ISO 16612-2 §6.6):
TPdfVTSaveOptionskreegDpmEntriesenDpmTargetzodat een writer een/DPM-woordenboek kan koppelen aan het gesynthetiseerde DPart-knooppunt, met sleutelnaamvalidatie tegen de Annex E second-class-prefix-regel en de §6.6 NMTOKEN- / uniciteit- /GTS_Managed-vormregels aan de validatorkant - PDF/VT-2s streaming-uitwisseling (Annex A): de nieuwe
FPdfPdfvtMime-unit biedtBuildPdfVT2sStreamenValidatePdfVT2sStreamvoor demultipart/mixedMIME-envelop die inline PDF/VT-chunks plus bijlage-ICC-profielen draagt, met deX-PDFVT-Stream-version: 1-header-volgordegel en deNodeNameList-consistentiecontrole over streams heen TPdf.ValidatePdfVTvoert nu een gezaghebbende JavaScript-actietelling uit viaFPDFDoc_GetJavaScriptActionCount, als aanvulling op de/JavaScript-naamscan op byteniveau
Opgelost (Fixed)
- PDF/VT
Trapped-correctheid op de PDF/X-4-basis: de enum-waardeptvUnknownis verwijderd (PDF/X-4 verbiedt/Unknown),ptvUnspecifiedwordt genormaliseerd naar/Falsebij het schrijven (een ontbrekende/Trappedis ook verboden), en een nieuwpvviTrappedInvalid-probleem markeert een afwezige ofUnknown-waarde ValidatePdfVTComplianceexpandeert nu objectstromen (PdfExpandObjectStreams) voor het scannen, zodat een catalogus-, OutputIntent- of Metadata-woordenboek dat is opgeslagen in een gecomprimeerde ObjStm (PDF 1.5+, typisch voor PDF/X-4-producers) bereikbaar is voor de lookups op byteniveau
Gewijzigd (Changed)
- PDF/VT-1 erft nu de volledige PDF/X-4-inhoudsverboden:
pvviAcroFormForbidden(/AcroFormof/XFA),pvviAdditionalActionsForbidden(catalogus/AA),pvviMissingTrimBoxenpvviReferenceXObjectForbidden(Reference XObject, uitsluitend X-5g/5pg) - Standaardoverschrijdende ontdubbeling:
BuildDictObj,IccComponentCount, het ingebouwde sRGB-ICC-profiel (GetSrgbIccProfile),PdfTextStr,PdfEnclosingObjNum,PdfDictRefNumenPdfExpandObjectStreamszijn gepromoveerd van driedubbel uitgevoerde lokale kopieën inFPdfPdfa/FPdfPdfx/FPdfPdfvtnaar één canoniek thuis inFPdfPdfCommon; de 3144-byte ICC-literal bestaat nu exact één keer in de codebase
Version 2.4.0
Gecorrigeerd (Fixed)
InjectPdfUaMarkersverliest niet langer de trailer/Inforeferentie op een cross-reference-stream basis: de lokaleSourceTrailerInfoRef(die de xref-stream fallback miste) is vervangen door de gedeeldePdfSourceTrailerInfoRef(overgenomen uit de PDF/A kopie die de fallback sinds v2.0.0 al had)- De gedeelde
PdfReadStreamBytesverwerkt nu indirecte/Length N G Rreferenties (geporteerd uit de lokale PDF/A kopie), zodat de PDF/VT, PDF/R en PDF/E validators niet langer XMP metadata-stromen verkeerd lezen of overslaan die zijn gegenereerd door tools die indirecte Length gebruiken (Acrobat, Ghostscript)
Gewijzigd (Changed)
- Standaardoverschrijdende ontdubbeling: de lokale
PdfReadTrailerkopieën inFPdfPdfaenFPdfPdfx, de lokaleSourceTrailerInfoRefkopieën inFPdfPdfaenFPdfPdfua, en de lokalePdfReadStreamBytesinFPdfPdfazijn allemaal verwijderd — de gedeeldeFPdfPdfCommonversies zijn nu overal van toepassing, wat ongeveer ~330 regels gedupliceerde code scheelt en de onderhoudslast voor het synchroon houden van kopieën wegneemt - PDF/X testdekking ingehaald: zeven enums voor inhoudsklassen die voorheen een dekking van nul hadden, hebben nu positieve tests gekregen (
pvxiLzwForbidden,pvxiJavaScriptForbidden,pvxiFormFieldsForbidden,pvxiAdditionalActions,pvxiEmbeddedFilesForbidden,pvxiMissingTrimBox,pvxiTrappedNotSet)
Version 2.3.0
Gewijzigd (Changed)
- PDF/A testdekking inhalen gaat door: nog drie enums met voorheen nul dekking hebben nu positieve tests gekregen;
pvaiForbiddenRenderingIntent(§6.2.9) markeert een niet-standaard rendering-intent naam in een inhoudsstroom;pvaiJpeg2000Violation(§6.2.2) markeert een JPXDecode afbeelding met/NumComponentsbuiten {1,3,4} bij Part 2;pvaiInlineImageLzwForbidden(§6.1.10) markeert een inline afbeelding die het LZW filter gebruikt bij Part 2
Version 2.2.0
Gewijzigd
- Cross-reference-stream-regressietests: de bestaande
Validate_XrefStreamTrailer_DetectsConformancecontroleert nu ook dat de catalogusverwijzing naar/Metadatawordt opgelost en de XMP-pdfaid:partwordt gelezen op een xref-stream-basis (niet alleen/Root+/ID); een nieuweInjectPdfA_XrefStreamBase_RoundTrips-test beveiligt het xref-stream-pad van de injector dat in v2.0.0 is toegevoegd; twee cross-standaardtests (PdfE_XrefStreamBase_NotRejectedAsUnparsable,PdfR_XrefStreamBase_NotRejectedAsUnparsable) verifiëren dat de PDF/E- en PDF/R-validators PDFs met een xref-stream niet langer afwijzen als onanalyseerbaar - PDF/A-testachterstand ingehaald:
Validate_MinimalPdf_FlagsRequiredMarkersstelt vast dat een minimaal PDF-bestandpvaiMissingPdfAIdentifier,pvaiMissingOutputIntent,pvaiMissingIccProfile,pvaiMissingXmpMetadataenpvaiMissingXmpDatestriggert — waarmee het symmetriegat wordt gedicht met de PDF/E- en PDF/X-validators die al equivalente tests hadden; twee andere enums zonder dekking hebben nu positieve tests gekregen:pvaiUnembeddedFontenpvaiSubsetMissingCidSet
Version 2.1.0
Opgelost
- PDF/E was per ongeluk weggelaten uit de cross-reference-stream-fix van v2.0.0: zowel
InjectPdfEMarkersalsValidatePdfEComplianceriepen nog steedsPdfReadTraileraan zonderAcceptXrefStream, waardoor de PDF/E-injector geruisloos faalde bij PDF 1.5+-uitvoer (de standaardwaarde van pdfiumsSaveAsCopy); beide aanroeplocaties geven nuTruedoor - De gedeelde cross-reference-stream-fallback van
PdfReadTrailerbevat nu de/Type /XRef-guard die de lokale kopieën van PDF/A en PDF/X al hadden, zodat een corruptestartxref-offset die naar een niet-verwant woordenboek verwijst, netjes faalt in plaats van ten onrechte als de trailer te worden geanalyseerd - De indirecte-verwijzings-
/Lang-resolver inValidatePdfUaCompliance(v2.0.0) was onbereikbaar:PdfFindObjDictvindt alleen<<-woordenboeken, maar een/Lang-stringobject is(...)of<...>zonder woordenboek; vervangen door een directe scan van de object-body die het string-token lokaliseert
Gewijzigd
- Zeven overtollige schaduw-hulpmethoden (PdfStructureBytes, PdfHasName, PdfCountName, BuildStreamObj) die byte-identieke kopieën waren van de gedeelde
FPdfPdfCommon-versies, zijn verwijderd uitFPdfPdfaenFPdfPdfua— de gedeelde versies zijn nu overal van toepassing viauses
Version 2.0.0
Opgelost
- Geruisloze fouten over standaarden heen: de gedeelde hulpmethode
PdfReadTrailer(gebruikt door de PDF/UA-, PDF/X-, PDF/VT- en PDF/R-markerinjectors en -validators) accepteert nu eenAcceptXrefStream-parameter en valt terug op het objectwoordenboek van de cross-reference-stream wanneer er geentrailer-sleutelwoord aanwezig is (PDF 1.5+); voorheen leidde deSaveAsCopy-uitvoer van pdfium (die een cross-reference-stream gebruikt) ertoe dat elke marker-injector geruisloos faalde — de bronbytes werden ongewijzigd gekopieerd en de aanroep retourneerde nog steeds succes; de PDF/R-1.0-validator (wiens PDF 2.0-basis altijd een cross-reference-stream is) was in feite een no-op; de volwassen implementatie van de PDF/A-validator is geporteerd naar de gedeelde hulpmethode zodat elke standaard hiervan profiteert - Het scannen van het trailer-woordenboek in
InjectPdfUaMarkersenInjectPdfAMarkersgebruikt nu de dieptebewustePdfDictEndin plaats van een kale>>-zoekopdracht, zodat een trailer die een genest woordenboek bevat (bijv./Encrypt << ... >>) niet langer voortijdig wordt afgebroken voor een afsluitende/Info-vermelding
Gewijzigd
TPdf.ValidatePdfUaonderdrukt nu de grovepvuaiFontNotEmbeddedop byte-niveau wanneer het precieze Pdfium-objectmodelpvuaiPdfiumFontNotEmbeddedal is geactiveerd, zodat het preflight-rapport niet langer twee vrijwel identieke “embed uw lettertypen”-rijen bevat voor hetzelfde defectpvuaiLangInvalidFormat(§7.2) herleidt nu een indirecte verwijzing/Lang(N 0 R) naar het bijbehorende stringobject en valideert de inhoud, zodat een indirect gekoppelde taaltag niet langer een blinde vlek is
Version 1.99.0
Opgelost
pvuaiLangInvalidFormat(§7.2) geeft hex-gecodeerde/Lang-tekenreeksen niet langer zomaar vrij: UTF-16BE-paren (met eenFE FFBOM) en kale ASCII-hex-tekenreeksen worden nu gedecodeerd en door dezelfde BCP 47-grammaticacontrole gehaald als letterlijke(...)-tekenreeksen, waardoor een misvormde hex-/Langwordt gedetecteerd, terwijl een conforme (bijv. een UTF-16BEen-US) geen risico meer loopt te worden gemarkeerd
Gewijzigd
pvuaiFontMissingToUnicode(§7.21.7) sluit nu/MacExpertEncodinguit, samen met/WinAnsiEncodingen/MacRomanEncoding, overeenkomstig de vier uitsluitingsvoorwaarden die in de clausule worden genoemd
Version 1.98.0
Toegevoegd
pvuaiNeedAppearancesTrue(§7.18.4) markeert een AcroForm waarvan de/NeedAppearances-vlag true is, waardoor widget-weergaven niet betrouwbaar zijn vergrendeld en ondersteunende technologie deze niet kan koppelen aan de structuurboom; geporteerd vanuit de PDF/A-validator en afhankelijk gemaakt van de aanwezigheid van/AcroFormom het scanoppervlak te verkleinen
Gewijzigd
- veraPDF-corpusregressie: koppelde het §7.20 Reference-XObject pass+fail-paar en de §7.21.4.2 subset CharSet/CIDSet pass+fail-paren in
Live_Corpus_ValidatePdfUaMatchesConformance; de §7.21.7 ToUnicode-forbidden-value en §7.18.6.2 media-clip pass-voorbeelden werden ook gekoppeld als bescherming tegen valse positieven (hun fail-voorbeelden gebruiken woordenboeklay-outs die de byte-niveau scan niet detecteert, dus alleen de pass-kant is gekoppeld) - De corpus pass-path assertielijst kreeg 15 nieuwe guards voor nul valse positieven, zodat elke actieve
pvuai*byte-niveau- en structuurcontrole nu wordt uitgevoerd tegen conforme voorbeelden (voorheen waren slechts ~30 van de 60 actieve problemen beschermd); depvuaiLangInvalidFormat-guard is bewust weggelaten omdat de byte-niveau-checker uit voorzorg hex-gecodeerde/Lang-tekenreeksen markeert die hij niet kan decoderen
Version 1.97.0
Opgelost
- Hardening van
ValidatePdfUaStructureElements: de parent-keten-doorloop vanEnclosingTablebevat nu een hop-teller (begrensd door het aantal elementen), zodat een misvormdeParentIndex-cyclus in een synthetische structuurelement-array de aanroeper niet meer kan laten vastlopen; de toewijzing van de marked-content-ID-array vanValidatePdfUaPageContentTaggingis nu gecapt op één miljoen vermeldingen, wat een toewijzing van meerdere gigabytes bij een misvormde/kwaadwilligeMarkedContentIDvoorkomt
Gewijzigd
- Het commentaar bij de enum
pvuaiOrderedListMissingListNumberingbeschrijft nu nauwkeurig wat de controle doet: het markeert eenL-element waarvan deListNumbering-waarde buiten de ISO 32000-1 Tabel 347-set valt (een ontbrekend attribuut wordt niet gemarkeerd); het eerdere commentaar suggereerde dat het ook geordende lijsten detecteerde die het attribuut misten, wat de implementatie niet doet - De twee
7.21.3.3-t02WMode-mismatch corpus fail-voorbeelden zijn nu gekoppeld inLive_Corpus_ValidatePdfUaMatchesConformance— sinds v1.95.0 is de CMap-stream met FlateDecode gedecomprimeerd, waardoor de vergelijking tussen woordenboek en inhoud nu op een leesbare zijde wordt uitgevoerd; het verouderde “not wired”-commentaar is verwijderd
Version 1.96.0
Toegevoegd
- Consistentie tussen standaarden:
TPdf.ValidatePdfUakrijgt twee controles die zijn geporteerd van de PDF/A-validator;pvuaiAnnotationFlagsViolation(§7.18.1) markeert een niet-uitgezonderde annotatie die de Hidden / Invisible / NoView-vlag bevat, wat de leesstroom van ondersteunende technologie verstoort;pvuaiActionTargetMissing(§7.18.5) markeert een GoToR / URI / SubmitForm-actie die de vereiste doelsleutel (/F+/D, /URI, /F) mist, waardoor de link onbruikbaar is voor ondersteunende technologie
Opgelost
- Structuurboom-samenvoeging over pagina's heen: de
AllElems-accumulatielus inTPdf.ValidatePdfUaherstructureert nu deParentIndexvan elk element van de paginalokale array naar de samengevoegde array; zonder dit behielden de kindelementen van pagina 2 een paginalokale index die naar de sectie van pagina 1 wees, wat geruisloos elke ParentIndex-afhankelijke controle corrumpeerde (tabel-/lijststructuur, §7.4.4 H-child aantal, EnclosingTable) - RoleMap-parsing:
PdfReadRoleMapPairsbeëindigt niet langer de volledige sleutel/waarde-scan wanneer een waarde een indirecte verwijzing (N 0 R) of een array ([...]) is — beide geldige RoleMap-vormen volgens ISO 32000-1 14.8.5.1; het slaat nu alleen die invoer over (Continue) in plaats van teBreak-en, waardoor valse positieven vanpvuaiRoleMapUnresolvedworden geëlimineerd voor typen die na een indirecte/array-invoer zijn gemarkeerd
Gewijzigd
FPdfPreflightReport: 18 actieveTPdfUaValidationIssue-waarden die voorheen onder de algemene categorie “missing marker” en aanbeveling vielen, hebben nu nauwkeurige categorieën (Structure / Content / Metadata / Security) en clausule-specifieke aanbevelingen; ook de typfoutpuaNone / pua1→pucNone / puc1inPDFSpecComplianceMatrix.mdis hersteld
Version 1.95.0
Gewijzigd
- Controle- en robuustheidsronde voor
TPdf.ValidatePdfUa: de §7.21.3.3pvuaiCMapWModeMismatch-controle en de §7.21.7pvuaiToUnicodeForbiddenValue-controle decomprimeren nuFlateDecode-gecomprimeerde CMap / ToUnicode-streams alvorens te scannen (voorheen werden alleen ongecomprimeerde streams beoordeeld, een bekend vals negatief); de gedeelde hulpmethodenPdfInflate/PdfReadAndDecodeStreamzijn verplaatst vanFPdfPdfa/FPdfPdfxnaarFPdfPdfCommonzodat elke conformiteitseenheid dezelfde kopie deelt
Toegevoegd
pvuaiSubsetCharSetEmpty(§7.21.4.2) markeert een Type 1 subsetFontDescriptordie een/CharSet-sleutel bevat waarvan de stringwaarde leeg is — de bestaandepvuaiSubsetMissingCharSetdetecteerde alleen een ontbrekende sleutel; een lege/CIDSetwordt niet gemarkeerd, omdat een lettertype zonder CID's legitiem een lege bitmap kan bevatten
Version 1.94.0
Toegevoegd
- De tweede auditronde van
TPdf.ValidatePdfUaheeft zes ISO 14289-1-hiaten gedicht die aan het licht kwamen bij een controle per clausule en een herscan van systeemeigen PDFium-API's die al waren ingepakt maar nog niet werden gebruikt door het PDF/UA-pad;pvuaiHeadingFormatInvalid(§7.4.3) markeert door de gebruiker gedefinieerde koptags die met een H beginnen maar scheidingstekens, spaties of Romeinse cijfers bevatten in plaats van zuivere Arabische cijfers;pvuaiMissingDocumentOutline(§7.17, should) markeert een document met meerdere pagina's dat geen bladwijzerstructuur bevat (documenten met één pagina zijn vrijgesteld);pvuaiStructElementLangInvalid(§7.2) markeert een structuurelement-/Lang-waarde die geen geldige BCP 47-tag is;pvuaiWidgetMissingPrintField(§7.14 / §7.18.4) markeert een Widget-structuurelement dat de PrintField-attribuuteigenaar mist;pvuaiLinkNotInStructureTree(§7.18.5) markeert een document waarvan de/Subtype /Link-annotaties niet zijn opgenomen als Link-structuurelementen;pvuaiPdfiumAnnotationMissingContentsenpvuaiPdfiumLinkMissingContents(§7.18.1 / §7.18.5) voegen een nauwkeurige scan van het PDFium-objectmodel voor annotaties toe die annotaties uitsluit die verborgen zijn, buiten de CropBox vallen, of Popup of Widget zijn — hiermee worden de valse positieven van de heuristiek op byte-niveau geëlimineerd, die de/F-vlaggen of/Rectniet kan lezen
Version 1.93.0
Toegevoegd
TPdf.ValidatePdfUavoegt nu een controlelaag voor het PDFium-objectmodel toe bovenop de inspecteur op byte-niveau, in navolging van de PDF/A-ronde-7-architectuur: deze doorloopt de tekstobjecten van elke pagina viaFPDFTextObj_GetFont→FPDFFont_GetIsEmbedded(pvuaiPdfiumFontNotEmbedded, §7.21.4) en scant elk teken viaFPDFText_HasUnicodeMapError(pvuaiPdfiumUnicodeMapError, §7.21.7) enFPDFText_GetUnicode(pvuaiPdfiumNotDefGlyph, §7.21.8) — nauwkeuriger dan de heuristieken op byte-niveau, die alleen reageren als er helemaal geen lettertypeprogramma's aanwezig zijn of er geen/ToUnicodeverschijnt; de doorloop stopt voortijdig op drie niveaus: de paginalus stopt wanneer alle drie de PDFium-laagproblemen al zijn ingesteld, de lus per object stopt bij het eerste niet-ingebedde lettertype en de tekenscan slaat de.notdef-stap over wanneerUnicodeMapErroral is opgetreden; PDF/UA was de laatste validator voor een PDF-standaard zonder een PDFium-objectmodellaag
Version 1.92.0
Toegevoegd
Tests.PdfRaangemaakt — het eerste testbestand voor de PDF/R-1-validator (FPdfPdfr), dat kopvalidatie, ObjStm-verbod, rastermarkeringsdetectie en een controle voor bestanden zonder valse positieven dekt; alle zes PDF-standaard testsuites hebben nu hun eigen testbestanden: PdfA(80), PdfUa(101), PdfX(7), PdfE(5), PdfVT(15), PdfR(4) = in totaal 212 tests
Version 1.91.0
Toegevoegd
ValidatePdfEenValidatePdfVThebben nu inhoud-niveau controles gekregen die voorheen alleen beschikbaar waren in de validators voor PDF/A, PDF/UA en PDF/X:pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden(alleen PDF/E),pveiEmbeddedFilesForbidden(alleen PDF/E),pveiOpiForbidden,pvviLzwForbidden,pvviJavaScriptForbidden,pvviEmbeddedFilesForbidden,pvviOpiForbidden;TPdf.ValidatePdfEenTPdf.ValidatePdfVTkrijgen ook een PDFium-objectmodellaag (pveiPdfiumFontNotEmbedded/pvviPdfiumFontNotEmbedded) die de tekstobjecten van pagina's doorloopt viaFPDFFont_GetIsEmbeddeden stopt bij het eerste niet-ingebedde lettertype
Version 1.90.0
Toegevoegd
TPdf.ValidatePdfXvoegt nu een controlelaag voor het PDFium-objectmodel toe bovenop de inspecteur op byte-niveau: deze doorloopt de tekstobjecten van elke pagina viaFPDFTextObj_GetFont→FPDFFont_GetIsEmbeddeden rapporteert een niet-ingebed lettertype alspvxiPdfiumFontNotEmbedded— nauwkeuriger dan de heuristiek op byte-niveau, die alleen reageert als er geen lettertypeprogramma's aanwezig zijn; de doorloop stopt voortijdig bij het eerste gevonden niet-ingebedde lettertype
Gewijzigd
- Doorloop van de structuurboom in
TPdf.ValidatePdfUa: de paginaspecifieke aanroep vanValidatePdfUaPageContentTagging(die een marked-content-ID-toewijzingskaart opbouwt en elk tekst-/afbeeldingsobject controleert) wordt nu overgeslagen op volgende pagina's zodrapvuaiUntaggedContental is gevonden — structuurelementen worden nog steeds verzameld voor controles over meerdere pagina's (uniek ID voor Note, koptekstvolgorde), maar de kostbare stappen voor inhoud-tagging per pagina stoppen voortijdig
Version 1.89.0
Gewijzigd
- Prestaties van de PDFium-objectmodellaag in
TPdf.ValidatePdfA: de pagina-/objectdoorloop stopt nu voortijdig op drie niveaus — de paginalus stopt wanneer alle toepasselijke PDFium-laagproblemen al zijn gevonden, de lus per object stopt wanneer beide problemen per object (lettertype-inbedding + transparantie) zijn ingesteld, en de tekenscan op de tekstpagina slaat de.notdef-stap over wanneerUnicodeMapErroral is opgetreden;Assigned()API-beschikbaarheidscontroles en conformiteitsvlaggen worden eenmalig voorafgaand aan de lus in lokale booleans gecachet in plaats van bij elke pagina/object/teken opnieuw te worden geëvalueerd; bij een groot niet-conform document kan de doorloop nu na de eerste pagina stoppen in plaats van alle pagina's te scannen; bij een conform document is de overhead per pagina lager (geen herhaaldeAssigned-aanroepen)
Version 1.88.0
Toegevoegd
ValidatePdfXheeft acht nieuweTPdfXValidationIssue-waarden op inhoudsniveau gekregen die de print-exchange-beperkingen dekken die PDF/X oplegt naast de bestandsformaatmarkeringen:pvxiLzwForbidden(/LZWDecode),pvxiJavaScriptForbidden(/JavaScript),pvxiFormFieldsForbidden(/AcroForm//XFA),pvxiAdditionalActions(/AA),pvxiEmbeddedFilesForbidden(/EmbeddedFiles//FileAttachment),pvxiOpiForbidden(/OPI//Alternates),pvxiMissingTrimBox(geen/TrimBoxop een pagina) enpvxiTrappedNotSet(/Trappedontbreekt of is/Unknown); de PDF/X-validator controleerde voorheen alleen XMP/OutputIntent-markeringen; dit is de eerste controle op inhoudsniveau; gedeelde hulpmethodenPdfStructureBytes/PdfHasName/PdfCountNamezijn toegevoegd aanFPdfPdfCommonzodat alle conformiteitseenheden deze kunnen gebruiken
Version 1.87.0
Toegevoegd
- PDF/UA-validatie dekt nu de ISO 14289-1 §7.21.3 regels voor samengestelde lettertypen:
pvuaiCidSystemInfoMismatchmarkeert Type0-lettertypen waarvan de ingesloten CMap en het afstammende CIDFont het oneens zijn overRegistry/Ordering, of waarvan deSupplementvan het CIDFont die van de CMap overschrijdt;pvuaiCMapNotEmbeddedmarkeert CMaps waarnaar op naam wordt verwezen (alsEncodingofUseCMap) die geen vooraf gedefinieerde CMap zijn uit ISO 32000-1 Tabel 118; enpvuaiCMapWModeMismatchmarkeert ingesloten CMaps waarvan het woordenboek-WModeafwijkt van de WMode in de streaminhoud
Opgelost
- De §7.21.3.2
pvuaiCidFontMissingCidToGidMap-controle miste CIDFontType2-woordenboeken waarvan hetSubtype-sleutel/waarde-paar door een nieuwe regel wordt gescheiden; de controle markeert nu ook eenCIDToGIDMap-naamwaarde die nietIdentityis
Version 1.86.0
Toegevoegd
- PDF/UA-validatie dekt nu de ISO 14289-1 §7.21.6 TrueType-coderingregels:
pvuaiTrueTypeEncodingInvalidmarkeert niet-symbolische TrueType-lettertypen waarvanEncodingontbreekt of nochMacRomanEncodingnochWinAnsiEncodingis (rechtstreeks of viaBaseEncoding); enpvuaiSymbolicTrueTypeEncodingmarkeert symbolische TrueType-lettertypen die een niet-standaardEncoding-naam bevatten
Version 1.85.1
Gewijzigd
- De ISO 14289-1 §7.18.3 tabvolgorde-controle
pvuaiMissingTabsOrderwordt nu per pagina uitgevoerd: elke pagina met annotaties moet/Tabs /Sdeclareren in zijn eigen paginawoordenboek, zodat een conforme zusterpagina een pagina zonder die declaratie niet langer maskeert
Version 1.85.0
Toegevoegd
- PDF/UA-validatie maakt nu onderscheid tussen dynamische en statische XFA-formulieren conform ISO 14289-1 §7.15:
pvuaiXfaDynamicmarkeert formulieren waarvan de XFA-configuratiedynamicRenderoprequiredzet
Gewijzigd
- De vroegere kandidaatvlag voor willekeurige XFA
pvuaiXfaPresentis buiten gebruik gesteld en wordt niet langer gegenereerd (statische XFA voldoet aan §7.15); de enum-waarde blijft behouden voor API-compatibiliteit
Version 1.84.0
Toegevoegd
- PDF/UA-validatie detecteert nu ongetagde echte inhoud zoals vereist door ISO 14289-1 §7.1:
pvuaiUntaggedContentmarkeert gerenderde tekst- en afbeeldingsobjecten die noch worden opgeëist door de structuurboom van de pagina (via hun marked-content-ID's) noch als Artifact zijn gemarkeerd - Nieuwe hulpmethoden op paginaniveau
GetPageContentMarkInfosenValidatePdfUaPageContentTaggingmet de recordTPdfPageContentMarkInfovoor direct gebruik
Version 1.83.0
Toegevoegd
- PDF/UA-validatie handhaaft nu het ISO 14289-1 §7.4.4 koptekstmodel:
pvuaiHeadingModelMixedmarkeert documenten die de generiekeH-tag mengen met genummerdeH1..Hn-koppen, enpvuaiHeadingMultipleInNodemarkeert structuurknooppunten die meer dan één onderliggendeH-kop bevatten
Version 1.82.0
Toegevoegd
- PDF/UA-validatie lost nu de RoleMap op die is vereist door ISO 14289-1 §7.1:
pvuaiRoleMapRemapsStandardmarkeert RoleMap-vermeldingen die een standaardstructuurtype herdefiniëren, enpvuaiRoleMapUnresolvedmarkeert gebruikte niet-standaard structuurtypes waarvan de RoleMap-keten ontbreekt, verbroken of cyclisch is — indirecte ketens die een standaardtype bereiken worden geaccepteerd, en ongebruikte RoleMap-vermeldingen worden nooit beoordeeld - Nieuwe hulpmethoden
PdfUaIsStandardStructType,PdfReadRoleMapPairs(met PDF-naam#hh-escape-decodering) enValidatePdfUaRoleMapUsagevoor direct gebruik
Version 1.81.0
Toegevoegd
- PDF/UA-validatie dekt nu de ISO 32000-1 lijsttagging zoals vereist door ISO 14289-1 §7.6:
pvuaiListStructureInvalidmarkeert LI-items buiten een L-container en Lbl/LBody-onderdelen buiten een LI-item, terwijl geneste lijsten en het legitieme gebruik van Lbl binnen Note- en BibEntry-elementen worden geaccepteerd
Version 1.80.0
Toegevoegd
- PDF/UA-validatie dekt nu de ISO 32000-1 tabeltagging zoals vereist door ISO 14289-1 §7.5:
pvuaiTableStructureInvalidmarkeert TH/TD-cellen buiten een TR-rij en rijen of rijgroepen buiten hun Table-container;pvuaiTableHeaderMissingScopemarkeert koptekstcellen waarvan de relatie noch via een Scope-attribuut noch via een Headers/ID-koppeling te bepalen is; enpvuaiTableHeadersUndefinedIdmarkeert Headers-verwijzingen in documenten die geen structuurelement-ID's definiëren TPdfStructureElementstelt de tabelattributenScope,HasHeaders,HeadersIds,ColSpanenRowSpanbeschikbaar, opgelost tijdens de structuurboomparsering
Gewijzigd
- De structuurboomparsering leest nu alle opmaak- en tabelattributen in één doorgang over de attribuutwoordenboeken van elk element in plaats van één scan per attribuut
Version 1.79.1
Toegevoegd
- De
AnnotationsLab-sample geporteerd naar Lazarus en C++Builder, die zich voegt bij de bestaande Delphi console-sample
Opgelost
TPdf.CreateAnnotationkon "Cannot set attachment points" (Kan koppelingspunten niet instellen) genereren voor markup-annotaties die quadpunten gebruiken (Markeren, Onderstrepen, Doorhalen, Kronkel) omdat de nieuwe annotatie nog geen quad-slot had om te vervangen; in plaats daarvan wordt nu de eerste quad toegevoegd
Version 1.79.0
Toegevoegd
- Nieuwe
AnnotationsLabDelphi console-sample: maakt tekst-, markerings-, vierkant- en cirkelannotaties aan, schrijft deze naar een PDF, herlaadt het bestand en somt de lijst met pagina-annotaties op
Version 1.78.0
Toegevoegd
- Nieuwe
TPdf.MeasureTextenTPdf.MeasureTextWidth: meten de gerenderde breedte en hoogte van een tekenreeks voor een bepaald lettertype en formaat (PDF-gebruikerseenheden, 1 eenheid = 1/72 inch) zonder inhoud aan een pagina toe te voegen, waardoor opmaak- en tekstteruglooplogica mogelijk wordt bovenopAddText; beschikbaar gesteld door de op zichzelf staandeFPdfMeasureunit als class helper - Nieuwe
TPdf.WrapText: gretige tekstterugloop gebouwd opMeasureTextWidthdie tekst splitst op spaties en woorden op regels verpakt die niet breder zijn dan een opgegeven breedte (PDF-gebruikerseenheden); een te lang enkel woord krijgt zijn eigen regel (geen afbreking binnen het woord), en retourneert de teruggelopen regels als een array
Version 1.77.0
Toegevoegd
ValidatePdfAheeft drie nieuweTPdfAValidationIssue-waarden gekregen die de clausules dekken die eerder als "NEE" of "lezergedrag" werden beoordeeld door de eerdere gap-audit (toegevoegde ordinalen, bestaande waarden ongewijzigd):pvaiPdfiumNotDefGlyph(PDF/A-2 6.2.11.8 — een teken dat zonder toewijzingsfout naar Unicode 0 wordt omgezet, het runtime-symptoom van een.notdef-glyfverwijzing; gedetecteerd via de Pdfium-objectmodellaag),pvaiWordBreakMissing(Niveau A 6.8.3.2 — een content-stream toon tekenreeks langer dan 20 tekens zonder spatie, een waarschijnlijke schending van samengevoegde woorden; ruwe heuristiek die onterechte meldingen voor CJK vermijdt), enpvaiLinkActionMissingTarget(6.6.3 — een GoToR/URI/SubmitForm-actie waarvan de doel-sleutel voor weergave ontbreekt zodat een lezer deze niet kan presenteren)
Version 1.76.0
Toegevoegd (Added)
ValidatePdfAheeft drie nieuweTPdfAValidationIssue-waarden gekregen (ordinals toegevoegd, bestaande waarden ongewijzigd):pvaiNameNotValidUtf8(PDF/A-2/3 6.1.8 — een/BaseFontof/FontNametoken met bytes ≥ 0x80 die geen geldige UTF-8 vormen),pvaiInlineImageLzwForbidden(PDF/A-2/3 6.1.10 — een inline afbeelding in een page content stream gebruikt de LZW of Crypt filter) enpvaiTrueTypeDifferencesForbidden(6.3.7 Cor.2 — een non-symbolic TrueType font waarvan de Encoding dictionary/Differencesbevat)
Version 1.75.0
Toegevoegd (Added)
ValidatePdfAheeft drie nieuweTPdfAValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvaiIntegerImplementationLimit(PDF/A-2/3 6.1.13 — een numeriek token dat de 32-bits signed integer-limiet 2.147.483.647 overschrijdt),pvaiBlendModeNotWhitelisted(PDF/A-2/3 6.2.10 — een/BM-waarde buiten de ISO 32000-1 §11.3.5 standaard blend-mode set; vult de PDF/A-1pvaiTransparentColorSpaceaan, die alleen Normal/Compatible toestaat), enpvaiHexStringOddDigits(6.1.6 — een<...>hex-string met een oneven aantal hex-cijfers)
Version 1.74.0
Toegevoegd (Added)
ValidatePdfAheeft drie nieuweTPdfAValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvaiPermissionsViolation(6.1.12 — een/Perms-dictionary dat/DigestLocation,/DigestMethodof/DigestValuebevat naast/DocMDP),pvaiTransActionForbidden(PDF/A-2 6.5.1 — een Trans overgangsactie, gedetecteerd via het/S /Transactie-dictionarypatroon om foutieve matching met/Transparencyte voorkomen), enpvaiPdfiumObjectTransparency(PDF/A-1 6.4 — een pagina-object bevat echte transparantie volgensFPDFPageObj_HasTransparency, wat de Pdfium object-model laag die in v1.73.0 is geïntroduceerd uitbreidt om blend-mode/soft-mask effecten te detecteren die de naam-scan op byteniveau kan missen)
Version 1.73.0
Toegevoegd (Added)
TPdf.ValidatePdfAplaatst nu een Pdfium object-model controlelaag bovenop de inspecteur op byteniveau: het doorloopt de tekstobjecten van elke pagina viaFPDFPage_GetObject→FPDFTextObj_GetFont→FPDFFont_GetIsEmbeddeden meldt een niet-ingesloten gerenderd lettertype alspvaiPdfiumFontNotEmbedded(ISO 19005 6.3.4), en laadt elke tekstpagina omFPDFText_HasUnicodeMapErrorte scannen en meldt een gebroken Unicode-mapping alspvaiPdfiumUnicodeMapError(6.3.8). Dit zijn controles die de inspecteur op byteniveau niet kan uitvoeren — hij ziet alleen naam-tokens, geen opgeloste lettertype-handles of per-teken mapping-status — en worden samengevoegd in het resultaat op byteniveau. De zelfstandigeValidatePdfACompliance-functie op byteniveau is ongewijzigd
Version 1.72.0
Toegevoegd (Added)
ValidatePdfAheeft vijf nieuweTPdfAValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvaiNeedsRenderingPresent(PDF/A-2 6.4.2 — de catalog mag geen/NeedsRenderingbevatten),pvaiDestOutputProfileRef(PDF/A-3 6.2.3 — een OutputIntent mag geen/DestOutputProfileRefbevatten),pvaiEmbeddedFileMissingUF(PDF/A-3 6.8 — een bestandsspecificatie met/EFmoet ook/UFbevatten),pvaiXmpPacketBytesAttr(6.7.5 — de XMP-packetheader mag de verouderdebytes=ofencoding=attributen niet bevatten), enpvaiAnnotationToggleNoView(PDF/A-2 6.3.2 — de annotatie/FToggleNoView bit, waarde 512, is verboden)
Version 1.71.0
Gewijzigd
ValidatePdfUagenereert nupvuaiOrderedListMissingListNumbering(ISO 14289-1 7.6): de structuurboom-doorloper herleidt hetListNumberinglay-outattribuut op elkL-element via de Pdfium attribuut-API en markeert elke waarde buiten de ISO 32000-1 Tabel 347-set (Decimal,UpperRoman,LowerRoman,UpperAlpha,LowerAlpha,None,Circle,Disc,Square). Een afwezig attribuut wordt niet gemarkeerd, aangezien de lijst ongeordend kan zijn; dit dicht de laatste resterende ISO 14289-1-leemte die is geregistreerd aan het einde van ronde 5
Version 1.70.0
Toegevoegd
ValidatePdfUaheeft vier nieuweTPdfUaValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvuaiSubsetMissingCidSet(ISO 14289-1 7.21.4.2 — een CID subsetFontDescriptormoet/CIDSetdeclareren),pvuaiToUnicodeForbiddenValue(7.21.7 — een ToUnicode CMap mag geen enkele code toewijzen aanU+FEFFofU+FFFE; ongecomprimeerde streams worden gescand op de uitvoervormen<FEFF>/<FFFE>),pvuaiLangInvalidFormat(7.2 —/Langmoet een geldige RFC 1766 / BCP 47-tag zijn; een tolerante grammatica accepteerten,en-US,zh-Hans,es-419en markeert duidelijk niet-conforme waarden), enpvuaiOrderedListMissingListNumbering(7.6 — behouden voor API-volledigheid; nog niet gemeld door de validator omdat het betrouwbaar onderscheiden van geordende en ongeordende lijsten deListNumberingattribuutwaarde vereist, die de structuurboom-doorloper niet blootlegt)
Version 1.69.0
Toegevoegd
ValidatePdfUaheeft twee nieuweTPdfUaValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvuaiWidgetOutsideForm(ISO 14289-1 7.18.4 — een Widget-structuurelement moet genest zijn in eenForm-element; de structuurboom-doorloper verifieert nu het directe oudertype van elke Widget) enpvuaiSubsetMissingCharSet(7.21.4.2 — een Type 1 subsetFontDescriptormoet/CharSetdeclareren, geïdentificeerd door het uit zes letters bestaande+subsetnaam-voorvoegsel op/FontName)
Version 1.68.0
Toegevoegd
ValidatePdfUaheeft twee nieuweTPdfUaValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvuaiUriActionIsMap(ISO 14289-1 7.18.5 — een URI actie-dictionary mag niet/IsMapmet de waardetruebevatten, omdat dit het toegankelijke linkdoel uitschakelt) enpvuaiHeadingSequenceViolation(7.4.2 — genummerde koppen moeten beginnen bijH1en een dalende reeks mag geen tussenliggend niveau overslaan, bijv.H1→H3is een overtreding). De koppencontrole is de eerste PDF/UA-regel op structuurboomniveau in de validator:ValidatePdfUaStructureElementsdoorloopt nu de getypeerde elementlijst en verifieert deH1…H6(enH7+volgens 7.4.3) volgorde in documentvolgorde
Version 1.67.0
Toegevoegd
ValidatePdfUaheeft vijf nieuweTPdfUaValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvuaiLinkMissingContents(ISO 14289-1 7.18.5 — een Link-annotatie moet een alternatieve beschrijving bevatten via/Contents),pvuaiAnnotationMissingContents(7.18.1 — elke niet-vrijgestelde annotatie zonder/Contentsmoet een alternatieve beschrijving hebben; Popup en Widget zijn vrijgesteld),pvuaiEmbeddedFileMissingName(7.11 — een bestandsspecificatie-dictionary moet/Fen/UFbevatten),pvuaiMediaClipMissingAlt(7.18.6.2 — een media clip data-dictionary moet/CTen/Altbevatten), enpvuaiCidFontMissingCidToGidMap(7.21.3.2 — een ingesloten Type 2 CIDFont moet/CIDToGIDMapbevatten)
Version 1.66.0
Toegevoegd
ValidatePdfUaheeft vijf nieuweTPdfUaValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvuaiRoleMapMissing(ISO 14289-1 7.1 — een getagd document met niet-standaard structuurtypen moet een/RoleMapbevatten),pvuaiOptionalContentAsKey(7.10 — een optionele-inhoud configuratie-dictionary mag de/ASauto-state-sleutel niet bevatten),pvuaiXfaPresent(7.15 — de aanwezigheid van een AcroForm/XFAwordt gemarkeerd omdat dynamische XFA verboden is),pvuaiTrapNetAnnotation(7.18.2 —/TrapNet-annotaties zijn verboden), enpvuaiReferenceXObject(7.20 — Reference XObjects, gebaseerd op de/Ref-markering, zijn verboden)
Opgelost
ValidatePdfUageeft geen valse positieven meer voorpvuaiEncryptionPresentop elk versleuteld bestand: PDF/UA staat versleuteling toe zolang in de versleutelingsdictionary de/P-sleutel bitpositie 10 (waarde 1024) heeft ingesteld, wat toegang verleent aan ondersteunende technologieën (7.16). De precieze overtreding wordt nu gemeld via de nieuwepvuaiEncryptionPBitMissing;pvuaiEncryptionPresentis behouden in de enum voor API-compatibiliteit, maar wordt niet langer gemeld door de validator op byteniveau
Version 1.65.0
Toegevoegd
ValidatePdfAheeft vijf nieuweTPdfAValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvaiCidFontMissingCidToGidMap(ISO 19005-1 6.3.3.2 Cor.2 — een ingesloten Type 2 CIDFont moet/CIDToGIDMapbevatten),pvaiSubsetMissingCharSet(6.3.5 — een Type 1 subsetFontDescriptormoet/CharSetbevatten),pvaiSubsetMissingCidSet(6.3.5 — een CID subsetFontDescriptormoet/CIDSetbevatten),pvaiWidgetActionForbidden(6.6.1 — een Widget-annotatie mag niet/Aof/AAbevatten), enpvaiOptionalContentAsKey(ISO 19005-2 6.9 — een optionele-inhoud configuratie-dictionary mag de/ASauto-state-sleutel niet bevatten, onlangs relevant geworden omdat PDF/A-2 optionele inhoud toestaat)
Version 1.64.0
Toegevoegd
ValidatePdfAheeft acht nieuweTPdfAValidationIssue-waarden gekregen (toegevoegde volgnummers, bestaande waarden ongewijzigd):pvaiHeaderBinaryMarkerMissing(ISO 19005-1 6.1.2 — de%PDF-x.yheader moet worden gevolgd door een%commentaar met ten minste vier bytes groter dan 127),pvaiExternalStreamRef(6.1.7 — een stream-dictionary mag geen/F,/FFilterof/FDecodeParmsbevatten),pvaiOutputIntentScheme(6.2.2 — de OutputIntent/Smoet/GTS_PDFA1zijn),pvaiInfoXmpDateMismatch(6.7.3 — InfoCreationDate/ModDatemoet ook verschijnen alsxmp:CreateDate/xmp:ModifyDate),pvaiMarkInfoMissing(6.8.2.2 — Niveau A vereist/MarkInfomet/Marked true),pvaiAnnotationApDictViolation(6.5.3 Cor.2 — de annotatie/APdictionary mag uitsluitend/Nbevatten),pvaiEmbeddedFileMissingAFRelationship(ISO 19005-3 Annex E.2 — elke geassocieerde filespec moet/AFRelationshipbevatten), enpvaiJpeg2000Violation(ISO 19005-2 6.2.8.3 — een JPEG2000 afbeelding moet 1, 3 of 4 componenten declareren)
Opgelost
ValidatePdfAgeeft geen valse positieven meer voorpvaiAnnotationFlagsViolationop documenten die een bronnaam voor lettertypen van één letter gebruiken, zoals/Font << /F 5 0 R >>; de scan op de/F-vlag wordt nu afgeschermd tot een annotatiecontext (/Subtypevan een annotatietype), wat overeenkomt met het gedocumenteerde gedrag (6.5.3)ValidatePdfAmeldt nu de PDF/A-3-vereiste voor geassocieerde bestanden per bestand: een document wordt alleen gemarkeerd wanneer een ingesloten/Type /Filespecdie verwijst naar een ingesloten stream via/EFgeen/AFRelationshipheeft, in plaats van de eerdere alles-of-niets controle over het hele document (ISO 19005-3 Annex E.2)- De verouderde
/SetState-actie is toegevoegd aan de set van verboden acties, naast/SetOCGState, zodat de PDF Reference-actienaam direct wordt opgevangen (6.6.1)
Version 1.63.0
Toegevoegd (Toegevoegd)
TPdf.MeasureTextenTPdf.MeasureTextWidthtoegevoegd: meten de gerenderde breedte en hoogte van tekst in een opgegeven lettertype en grootte zonder inhoud aan de pagina toe te voegen (in PDF-gebruikerseenheden, 1 eenheid = 1/72 inch), waardoor lay-outberekeningen en automatische regelterugloop boven opAddTextmogelijk worden; geleverd door de zelfstandige unitFPdfMeasureals class helper
Gewijzigd (Gewijzigd)
Demo\Delphi\MergePDF,Demo\CBuilder\MergePDFenDemo\Lazarus\MergePDFverbeterd voor alle drie IDE's: paginabereik per bestand, optioneel uitvoerpad, deduplicatie, uitvoerlogboek, annuleerknop en samenvatting na samenvoeging; bladwijzers en metadata worden meegenomen vanuit de eerste bron- De
CreatePDF-demo's voor alle drie IDE's bevatten nu een optie Europese tekst om tekst met accenten in het Tsjechisch, Frans, Duits, Spaans, Portugees, Pools en Turks te schrijven, om lettertypeselectie en Unicode-verwerking te controleren (het vroegere voorbeeldEuropeanTextis samengevoegd) - De voorbeelden
ExtractTextPagesenEuropeanTextzijn verwijderd: de pagina-voor-pagina tekstextractie vanExtractTextPageswordt nu gedekt door de opties voor paginabereik en paginascheidingsteken inExtractText; de meertalige rendering vanEuropeanTextis samengevoegd inCreatePDF
Version 1.62.2
Opgelost
- De C++Builder-headers (
.hpp) zijn opnieuw gegenereerd voor alle RAD Studio-versies en platformen (Win32/Win64/Win64x); ze waren afgeweken van de Pascal-bronnen, waardoor verouderde functiesignaturen en ontbrekende units via de bronverdeling bij C++Builder-gebruikers terechtkwamen
Version 1.62.1
Opgelost
- De broncompilatie op RAD Studio 12 Athens en eerder is hersteld: een
TArray<Byte>-toewijzing in het PDF/UA-validatiepad gebruikte een Delphi 13-only impliciete arrayconversie die op oudere IDE's niet compileerde
Version 1.62.0
Toegevoegd
TPdf.RenderPageThumbnailrendert elke pagina op index naar een aspect-passende bitmap zonder de huidige documentpagina, geladen pagina ofOnPageChangete wijzigen
Opgelost
TPdfThumbnailViewstuurt tijdens het tekenen niet langer dePageNumbervan het hostdocument aan; eerder werden bij elke hertekening pagina's opnieuw geladen,OnPageChangegeactiveerd en de tekstpagina weggegooid, wat een gekoppeldeTPdfViewkon verstoren en hertekenlussen kon veroorzaken. Thumbnails worden nu viaRenderPageThumbnailgerenderd zonder die neveneffecten- PDF/X-conformiteitsvalidatie inspecteert nu documenten met cross-reference streams (PDF 1.6, typisch voor PDF/X-4) en objecten die in gecomprimeerde object streams zijn opgeslagen, in plaats van dergelijke bestanden in één keer als niet-conform te bestempelen; de
GTS_PDFXVersion-markering wordt uit zowel de elementvorm als de RDF-attribuutvorm van XMP gelezen - PDF/R-validatie meldt nu
pvriInfoXmpMismatchwanneer het Info-dictionary en XMP niet overeenkomen voor Producer of Creator; het probleem was eerder wel verklaard maar nooit gemeld - Formulierinvultimers worden nu per aanvraag bijgehouden, zodat een document dat er meerdere tegelijk uitvoert (bijvoorbeeld een JavaScript-interval naast het knipperen van de veldcursor) ze allemaal behoudt in plaats van alles behalve de meest recente te verliezen
- Het tekenen van
TPdfViewen de openbare methodenRenderPage/RenderTilehouden nu de document-renderlock vast, waardoor ze worden geserialiseerd ten opzichte van het renderen op de worker-thread van dezelfdeTPdf(PDFium is niet thread-safe) - Niet-ASCII tekst die in PDF/X, PDF/R en PDF/VT-metagegevens wordt geschreven (OutputIntent-voorwaardennamen, Creator, Producer) wordt nu gecodeerd als een UTF-16BE-string volgens ISO 32000-1 §7.9.2.2 in plaats van ruwe UTF-8, die conforming readers verkeerd zouden lezen
- Conformance helpers lezen nu correct ingesloten metadatastreams waarvan
/Lengtheen indirecte referentie is, laden bronbytes metReadBufferzodat een korte read netjes faalt, en weigeren een negatievestartxref-offset in plaats van een out-of-range read te riskeren
Version 1.61.0
Gewijzigd
- Correcties in FFI/ABI-declaraties kunnen vereisen dat code die de betrokken callbacks implementeert opnieuw wordt gecompileerd: de form-fill callback
FFI_OpenFiledraagt nucdecl(Win32-stackconventie), en devalue-parameter vanFPDFAnnot_SetStringValueenFPDFAttachment_SetStringValueis nuFPDF_WIDESTRING(UTF-16LE) om overeen te komen met de PDFium-headers - Progressive-load callbacks
FX_FILEAVAIL.IsDataAvailenFX_DOWNLOADHINTS.AddSegmentnemen nusize_t-offsets, ensize_theeft pointerbreedte in Free Pascal / Lazarus Win64 (eerder afgekapt tot 32-bit), waarmee data-beschikbaarheid enoutsize_t-API-aanroepen op FPC Win64 worden opgelost
Opgelost
- Geheugenveiligheid: een use-after-free van de form-fill-timer bij het vernietigen van een
TPdfmet een actieve AcroForm-cursor; een dubbeleFPDF_CloseDocumentop het foutpad vanImportNPagesToOne; Pascal-excepties die tijdens opslaan en JPEG-insertie uit deFPDF_FILEWRITE/FPDF_FILEACCESS-callbacks over de C-grens ontsnapten; en een integer-overflow in tekstextractie bij het lezen vanaf een startindex tot het einde van de pagina TPdfFuture<T>levert zijn resultaatcallback nu betrouwbaar af; het antwoord ging eerder bijna altijd verloren en kon een vrijgegeven thread raken omdat de worker zichzelf vrijgaf voordat het in de wachtrij geplaatste antwoord werd uitgevoerd- PDF/A, PDF/X, PDF/E, PDF/R, PDF/VT en PDF/UA-output schrijven nu cross-reference entries die exact 20 bytes lang zijn, zoals vereist door ISO 32000-1 §7.5.4
- Markerinjectie voor standaarden vernietigt nu geen dictionary meer wanneer de verwijderde sleutel (bijvoorbeeld
/Trapped) het laatste item was, wat eerder de afsluitende>>opat en een misvormd object opleverde - OutputIntent ICC-profile streams verklaren nu de vereiste
/N-componenttelling voor PDF/X en PDF/VT (al aanwezig voor PDF/A); versleutelde brondocumenten worden ontsleuteld voordat PDF/X, PDF/E, PDF/R, PDF/VT en PDF/UA-markers worden geïnjecteerd, zodat de output geldig is in plaats van stilzwijgend beschadigd - De UTF-8 xpacket BOM in gegenereerde XMP wordt nu als exacte bytes uitgegeven, waarmee corruptie op Delphi-installaties waarvan de ANSI-codepagina niet Latin-1 is wordt opgelost; incrementele-updatetrailers behouden nu de
/Info-verwijzing van het document SaveAsmet compressie kapt streams waarvan/Lengtheen indirecte referentie is niet langer af, en opnieuw opgebouwde cross-reference tables gebruiken nu 20-byte entries, echte generation numbers en laten de oude/Prev-pointer vallen- Conformance-validatie leest nu correct XMP-versiemarkers in attribuutvorm voor PDF/E en PDF/X, zodat attribuut-geserialiseerde PDF/X-4-bestanden worden herkend; het vereist de exacte
PDF/E-1-identifier, leest indirecte/Length-metadatastreams correct en false-matcht niet langer een/ID- of/StructTreeRoot-sleutel van een structuur-element bij het controleren van de PDF/UA-trailer; een misvormdestartxref-offset veroorzaakt geen range error meer TPdfThumbnailView: de laatste pagina is nu bereikbaar met de scrollbalk, de huidige pagina van het hostdocument wordt hersteld nadat thumbnails zijn getekend, en de standaard mouse-leave-afhandeling wordt opnieuw verstuurd- Grijswaarden-pagina- en afbeeldingsbitmaps worden niet langer met een verkeerd palet gerenderd;
TPdfViewblijft niet langer achter met een dangling reference wanneer zijnTPdfeerst wordt vrijgegeven - Preflight-rapporten: HTML wordt opgeslagen als UTF-8 om overeen te komen met de gedeclareerde charset, en JSON-stringescaping produceert correcte
\u-sequenties voor niet-ASCII tekens in Free Pascal - Trial-builds: de trial-herinneringsdialoog verschijnt nu in plaats van onderdrukt te worden voordat hij kon tonen
TPdfStreamAdapterweigert nu streams groter dan 4 GiB met een duidelijke foutmelding in plaats van stilzwijgend de aan PDFium doorgegeven lengte af te kappen
Version 1.60.1
Gewijzigd
- AccessibilityReader-demo's voor Delphi, Lazarus en C++Builder voeren nu voorlezen uit via
TPdfReadingSession: elke pagina wordt metBuildSpokenTextFromWordssamengevoegd tot één gesproken chunk, SAPI-woordposities voedenFeedSpokenPosition, en de sessie schuift door pagina's en stuurt de woordcursor van de view aan, waarmee de handgeschreven orkestratie van elke demo is vervangen - Woordniveau-karaoke in de demo's werkt nu ook wanneer NVDA de spraakengine is:
EstimatePacingstemt de leescursor af op verstreken spreektijd, waar NVDA voorheen wel voorlas maar helemaal geen woordtracking had - Pause en Resume in de demo's werken nu ook met NVDA:
ResumeRestartsChunkleest de huidige pagina bij Resume vanaf het begin opnieuw voor, terwijl SAPI zijn native in-place pause en resume behoudt
Version 1.60.0
Toegevoegd
- Live low-vision rendering in
TPdfView: de nieuwe renderoptiesreInvertenreNightDuotonekleuren elk gerenderd paginatile opnieuw in voordat de overlays voor zoeken, selectie, lezen en woordcursor worden getekend, waarmee de bestaande bitmapkleurtransformaties in de interactieve viewer voor zowel enkelpagina- als tegenoverliggende-pagina-indelingen worden gebracht; het omschakelen van de opties veroorzaakt direct een hertekening NightDuotoneInkenNightDuotonePaperconfigureren het nachtpalet, standaard met amberkleurige tekst op een zwarte pagina;reInvertwint wanneer beide opties zijn ingesteld
Version 1.59.0
Toegevoegd
TPdfReadingSession: een spraakengine-onafhankelijke orkestratiecomponent voor voorlezen. Het bewaart de chunkcursor, woordcursor en afspeelstatus (Play/PlayFrom/Pause/Resume/Stop), gaat door de geladenTPdfSpokenText-chunks zodra de host viaTickmeldt dat de engine idle is, zet spoken-text offsets terug naar page characters en stuurt automatisch de woordcursor van een gekoppeldeTPdfViewaan; de host koppelt elke spraakengine viaOnSpeaken de cancel / pause / resume request-events, zodat de bibliotheek zelf geen spraak-API linktFeedSpokenPositionconsumeert woordposities van de engine (zoals SAPIStatus.InputWordPosition);EstimatePacingmetEstimatedWordsPerMinutestemt engines zonder positieteken af;ResumeRestartsChunkleest de huidige chunk opnieuw voor voor engines zonder native pauzeOnChunkChange,OnWordChangeenOnFinishedvuren alleen bij echte wijzigingen, en een vrijgegeven gekoppelde view ontkoppelt zichzelf automatisch, zodat hostcode flickervrij en crashveilig blijft
Version 1.58.0
Toegevoegd
EstimateSpokenWordIndexschat welk woord een spraakengine uitspreekt op basis van verstreken tijd en een woorden-per-minuut-snelheid, waarbij langere woorden proportioneel meer tijd krijgen, zodat engines die geen woordpositie rapporteren (zoals de NVDA controller client) toch de woordniveau-leescursor kunnen aansturen; de aanroeper levert de verstreken tijd, dus de routine blijft klokvrij en unit-testbaar
Version 1.57.0
Toegevoegd
- Spoken-text assembly met twee-domein mapping voor read-aloud tracking:
BuildSpokenTextFromWordsenSpokenTextAppendbouwen de string die aan een tekst-naar-spraak-engine wordt gegeven op basis van page word boxes terwijl ze een span table bijhouden, enSpokenToPageCharvertaalt een door de engine gerapporteerde spoken offset (zoals SAPIStatus.InputWordPosition) terug naar de page character index, zodat de tracking van woordniveau-highlighting correct blijft wanneer de gesproken tekst niet de volledige pagina-tekst is (overgeslagen regio's, per-eenheid lezen, uitspraakoverschrijvingen) TPdfSpokenTextenTPdfSpokenSpan-typen dragen de gesproken string plus de bron-paginabereiken waaruit deze is opgebouwd; offsets op ingevoegde scheidingstekens lossen op naar het volgende gemapte woord en offsets voorbij de gemapte runs rapporteren geen match
Version 1.56.9
Toegevoegd (Toegevoegd)
Demo\Delphi\PreflightReportvoegt een actieplanvoorbeeld toe dat niet-geslaagde standaarden, prioriteiten, volgende acties, probleemcodes en aanbevelingen samenvoegt in een herstelchecklistDemo\Delphi\PreflightReportCliaccepteertplan/actionplanals uitvoerformaat voor single-file en batch runs, waarbij dezelfde herstelchecklist naar een tekstbestand wordt geschreven
Gewijzigd (Gewijzigd)
- Beide Delphi PreflightReport-demos tonen nu pass / action / review-statusaantallen naast het totaal aantal standaarden en issues
Version 1.56.8
Gewijzigd (Gewijzigd)
ViewerInteractionLabbevat nu pagina-sprongbesturing, handmatige zoombesturing, op klik gebaseerdeDeviceToPage/PageToDevicecoördinatenregistratie en een duidelijker interactielog voor controles op selectie, zoeken, rotatie en navigatie- De readme-pagina’s van
ViewerInteractionLabdocumenteren nu de toegevoegde interactieworkflow in de lokale demo-readme-set
Version 1.56.7
Toegevoegd (Toegevoegd)
AccessibilityWorkbenchClikoppelt elke gedetecteerde bevinding aan WCAG 2.1 Success Criteria en ISO 14289-1 (PDF/UA-1) clausuleregels en toont in de rapporten een sectie over standaardencoverageAccessibilityWorkbenchCliberekent een gedocumenteerde accessibility-score van 0-100 met een vaste strafrubriek en een excellent / good / needs work / poor-band, weergegeven per bestand en als batchgemiddeldeAccessibilityWorkbenchCliaccepteertfailscore=Nom een run te laten mislukken (exit code 2) wanneer een bestand onder N scoortAccessibilityWorkbenchClischrijft een SARIF 2.1.0-log wanneer de batchsamenvattingsnaam eindigt op.sarif, met één regel per bevindingstype met WCAG 2.1- en PDF/UA-tags voor CI- en code-scanninginnameAccessibilityWorkbenchClivoegt eenversion-commando toe dat de versie van de gekoppelde PDFium Delphi Component afdrukt
Version 1.56.6
Toegevoegd (Toegevoegd)
IntakeWorkbenchCliberekent een SHA-256 forensische hash per invoerbestand (vervalt naarunavailableop compilers zonderSystem.Hash) en rapporteert deze in elk formaatIntakeWorkbenchCliaccepteertpasswords=file.txtom documenten die een wachtwoord vereisen uit een kandidatenlijst proefmatig te ontgrendelen, waarbij de overeenkomende kandidaatindex wordt vastgelegd zonder ooit de wachtwoordtekst te loggenIntakeWorkbenchCliaccepteertcopyto=dirom elk gecontroleerd bestand in een submap per risiconiveau te plaatsen, waardoor de auditor een intake-sorteerfunctie krijgtIntakeWorkbenchClischrijft een SARIF 2.1.0-log wanneer de batchsamenvattingsnaam eindigt op.sarif, met één regel per risicomarkering en één resultaat per gemarkeerd bestand voor CI- en code-scanninginnameIntakeWorkbenchClivoegt eenversion-commando toe dat de versie van de gekoppelde PDFium Delphi Component afdrukt
Version 1.56.5
Toegevoegd (Toegevoegd)
IntakeWorkbenchClileidt nu aanbevolen post-intake acties af zoals accept, request-password, manual-review, quarantine en deduplicate, en toont actietellingen in batchsamenvattingenAccessibilityWorkbenchClileidt nu aanbevolen herstelacties af zoals pass-through, remediate-tags, run-ocr, remediate-semantics en manual-review, met bijbehorende batchactietellingen
Gewijzigd (Gewijzigd)
- Beide toolniveau CLI-demos tonen de aanbevolen actie in console, tekst, HTML, JSON en CSV-uitvoer, zodat batchoperators bestanden kunnen routeren zonder extra verwerking van risicodetails of statussen
Version 1.56.4
Opgelost (Opgelost)
- Het iteratief lezen van annotaties, bookmarks of link-annotaties lekt niet langer tekststrings van het vorige item meer: de resultaatrecords van
TPdfAnnotation,TBookmarkenTLinkAnnotationworden nu gewist met initialisatie die rekening houdt met managed types in plaats van ruwe memory zeroing, waardoor documenten met veel tekstdragende annotaties niet meer langdurig procesgeheugen opdrijven - Het vernietigen van een
TPdfdat eenOnUnsupportedFeature-handler had geregistreerd, ontkoppelt die nu van de proces-brede PDFium-callback, zodat een later document laden vanuit een andereTPdf-instantie zonder eigen handler niet langer naar de vrijgegeven component kan dispatchen (use-after-free)
Version 1.56.3
Opgelost (Opgelost)
AccessibilityWorkbenchClitelt lege pagina’s niet langer mee als heuristische leesvolgordepagina’s, zodat getagde documenten met lege scheidingspagina’s hun correcte toegankelijkheidsstatus behouden; pagina’s zonder leesbare inhoud worden nu apart gerapporteerdAccessibilityWorkbenchClidetecteert table headers niet langer aan een buitenste tabel toe voorTH-cellen die tot een geneste tabel behoren, en form-field- en fontnamen worden hoofdlettergevoelig vergeleken zodat onderscheidbare velden niet worden samengevoegd- De URL-hostinventarissen van
IntakeWorkbenchCliverwijderen nu userinfo, query- en fragmentdelen, zodat een samengesteld link als[email protected]aan de echte host wordt gekoppeld enmailto:-targets hun domein bijdragen in plaats van onzichtbaar te blijven IntakeWorkbenchCliMarkdown-rapporten ontsnappen backticks in door aanvaller beheerde paden, hosts en attachmentnamen zodat rapportopmaak niet van binnenuit een document kan worden verbroken
Gewijzigd (Gewijzigd)
AccessibilityWorkbenchClirapporteert font-scan- en form-field-scanfouten als afzonderlijke tellers, markeert niet-ingebedde fonts die ook ingebedde instanties hebben, en begrenst lange fonterranden met een expliciete truncatie marker- Batchsamenvattingen van
IntakeWorkbenchClivoegen een kolom met attachment-annotation aantallen toe, en de per-pagina annotatie-opname is begrensd op 20000 annotaties per pagina met die limiet opgenomen in elk formaat
Version 1.56.2
Toegevoegd (Toegevoegd)
AccessibilityWorkbenchClicontroleert nu lettertype-insluiting, tooltips van formuliervelden, bron van leesvolgorde, documentoverzichten, tabel- en lijststructuur, verdachte alternatieve tekst en rijkere beoordelingsdetails per pagina, zodat accessibility-batchrapporten meer hersteldoelen aanwijzenIntakeWorkbenchClirapporteert nu paginascanlimieten, launch- en remote-go-to-acties, URI-hostinventarissen, aantallen annotaties, niet-ondersteunde PDFium-functies, dubbele document-id's en uitgebreidere risicovlaggen voor geautomatiseerde intake-beoordeling
Gewijzigd (Gewijzigd)
IntakeWorkbenchCliaccepteertmaxpages=Nin enkelbestand- en batchmodi om paginascans per document te beperken terwijl metadata-, attachment-, script-, XFA-, signature- en risk-rapportage volledig blijft
Version 1.56.1
Opgelost (Opgelost)
- Het laden van een oudere
pdfium.dllwaarin een nieuwere export ontbreekt mislukt nu netjes: het foutpad reset elk gebonden API-ingangspunt, zodatAssigned()-controles (bijvoorbeeld opFPDF_GetLastErrorofFPDF_GetSecurityHandlerRevision) melden dat de bibliotheek niet geladen is in plaats van de al ontladen module aan te roepen en met een toegangsschending te crashen UnloadLibrarywist nu alle PDFium-API-bindingen in plaats van alleen de optionele V8-hulpfuncties, zodat er geen verouderde functiepointers overblijven nadat de DLL is vrijgegeven
Version 1.56.0
Toegevoegd (Toegevoegd)
- Woord-voor-woord karaoke-leescursor in
TPdfView:TrackReadingWordAtkoppelt de tekenpositie van het huidige woord van een tekst-naar-spraak-engine, zoals SAPIStatus.InputWordPosition, aan de woordvakken op de pagina, markeert het woord dat die positie bevat als een afzonderlijke overlay boven het leesblok, schuift het in beeld en geeft de woordindex terug zodat het uitgesproken woord oplicht terwijl de stem verdergaat SetReadingWordenClearReadingWordzetten of wissen het gemarkeerde woord rechtstreeks vanuit eenTPdfWordBox; hetzelfde woord opnieuw zetten is een no-op, zodat woordtracking de weergave nooit laat flikkerenReadingWordColorenReadingWordFollowbepalen de kleur van de woordcursor en of de weergave automatisch naar het uitgesproken woord schuift
Version 1.55.2
Opgelost (Opgelost)
- ViewerInteractionLab geeft de werkbalkrijen nu meer verticale ruimte, zodat Open PDF, Create Sample, navigatie, zoeken en selectiebesturing niet meer overlappen bij geschaalde lettertypen
Version 1.55.1
Opgelost (Opgelost)
- ViewerInteractionLab plaatst Prev, Next en Rotate nu op de tweede werkbalkrij, waardoor de overlap bij het opstarten met Open PDF en Create Sample wordt vermeden
Version 1.55.0
Toegevoegd (Toegevoegd)
- Een brug tussen woorden en selectie voor "lees het, selecteer het"-lezen:
TPdfView.SelectWordBoxenSelectWordSpanselecteren een enkel woordvak of een bereik van woordvakken op dezelfde pagina (uitPageWordBoxes) op basis van hun tekenbereiken, zodat het woord of de regel die op dat moment wordt voorgelezen ook geselecteerd en gekopieerd kan worden WordBoxIndexAtCharIndexkoppelt een tekenindex terug aan het woordvak dat die index bevat, zodat woord-voor-woordmarkering kan meelopen terwijl een TTS-leescursor vordert
Version 1.54.0
Toegevoegd (Toegevoegd)
- Spraakvriendelijke formulierveld-accessors die het gefocuste veld rechtstreeks van de logische cursor lezen:
FocusedFormFieldValue,FocusedFormFieldNameenFocusedFormFieldDetailsopTPdfenTPdfViewrapporteren de waarde van het huidige veld, de leesbare naam (/TU-tooltip, met fallback naar/T) en de volledigeTPdfFormFieldInfo(type, flags, opties) - alles wat een spraakinterface moet uitspreken terwijl die door een formulier stapt
Opgelost (Opgelost)
FocusedFormFieldValueleest het veld nu viaFocusedFormFieldIndexin plaats van via de interactieve focus van pdfium, zodat een spraakgestuurde formulierinvoer de juiste waarde krijgt, ook zonder zichtbare cursor op het scherm (de bestaandeFocusedFormFieldTextblijft de pdfium-focus weerspiegelen en is ongewijzigd)
Version 1.53.0
Toegevoegd (Toegevoegd)
- Ondersteuning voor markering op woordniveau:
TPdf.PageWordBoxesenTPdfView.PageWordBoxessplitsen een pagina op inTPdfWordBox-records, elk met de woordtekst, het tekenbereik en een begrenzingsrechthoek in paginaruimte, zodat een toegankelijkheidslezer ieder uitgesproken woord na elkaar kan markeren door die rechthoek door te geven aanSetReadingHighlight BuildWordBoxesmaakt de tokenisatiestap apart beschikbaar en zet paginatekst om in woordvakken met tekenbereiken
Version 1.52.0
Toegevoegd (Toegevoegd)
- Low-vision renderhelpers
InvertPdfBitmap,GrayscalePdfBitmapenDuotonePdfBitmappassen kleurtransformaties ter plekke toe op een gerenderde 32-bits bitmap, zodat een toegankelijkheidslezer pagina's omgekeerd / in dark mode, in grijstinten of in een eigen tweekleurenschema kan tonen voor slechtziende gebruikers - De transformaties werken per pixel en gedragen zich identiek in VCL en Lazarus/LCL, zonder de bitmapafmetingen te wijzigen
Version 1.51.0
Toegevoegd (Toegevoegd)
- Zinsgewijze leeseenheden voor ondersteunend luisterlezen:
TPdf.ReadingUnits,TPdf.DocumentReadingUnitsenTPdfView.ReadingUnitslineariseren de leesbare inhoudsstroom naar geordendeTPdfReadingUnit-records op zinsniveau - elk record bevat de uit te spreken tekst plus het semantische type, de pagina, markeerrechthoeken en een taalcode, zodat een screenreader-app pagina voor pagina of door het hele document kan stappen, telkens één gesproken eenheid tegelijk - Semantische navigatie met
NextReadingUnitOfKind, zodat een spraakinterface naar de volgende of vorige kop, afbeelding, lijstregel of tabelcel kan springen zonder de hele stroom handmatig te scannen BuildReadingUnitszet willekeurigeTPdfContentFragmentsdirect om in leeseenheden: koppen en beschrijvingen van figuren of alt-tekst blijven intact, alinea's worden op zinsgrenzen gesplitst, decimalen blijven behouden en de leescursor is een gewone index die volledig door de aanroeper wordt beheerd
Version 1.50.0
Toegevoegd (Toegevoegd)
ValidatePdfAkan nu PDF 1.5+-documenten inspecteren die de catalogus, OutputIntent of andere woordenboeken opslaan in gecomprimeerde object streams (/Type /ObjStm). De object streams worden gedecomprimeerd en de objecten die zij bevatten worden opgelost, zodat dergelijke documenten op hun eigen merites worden gevalideerd in plaats van te worden gemeld als zouden hun PDF/A-markeringen ontbreken
Version 1.49.5
Opgelost (Opgelost)
ValidatePdfAmeldt een ontbrekendepdfaExtension:schemas-beschrijving niet langer als probleem. Het PDF/A-identificatieschema (pdfaid) is algemeen bekend, dus noch veraPDF noch PDF/A-2/-3 vereist daarvoor een extension-schema-beschrijving, en het markeren van het ontbreken ervan rapporteerde elke conforme PDF/A van derden ten onrechte als foutief. Documenten die de bibliotheek zelf produceert bevatten de beschrijving nog steeds
Version 1.49.4
Opgelost (Opgelost)
ValidatePdfAdetecteert het conformiteitsniveau nu ook wanneer de PDF/A-identifier als XML-attributen wordt geschreven (pdfaid:part="2") in plaats van als onderliggende elementen, zodat documenten in attribuutvorm niet langer met een onbekend niveau worden gemeld. Dit corrigeert ook een cascade waarbij een niet-gedetecteerd niveau de niveauspecifieke controles terug liet vallen op de strikte PDF/A-1-regels, die dan ten onrechte ingebedde bestanden en transparantie markeerden die PDF/A-2 en PDF/A-3 wél toestaan
Version 1.49.3
Opgelost (Opgelost)
ValidatePdfAinspecteert nu ook PDF 1.5+-documenten waarvan de cross-reference-gegevens een cross-reference stream vormen (bestanden zondertrailer-sleutelwoord). Het conformiteitsniveau, de trailer-/IDen de overige markeringen worden uit het woordenboek van de cross-reference stream gelezen, zodat dergelijke documenten op hun eigen merites worden gevalideerd in plaats van als volledig niet-conform te worden gemeld
Version 1.49.2
Opgelost (Opgelost)
ValidatePdfAmeldt geen onterecht probleem met niet-ingebedde lettertypen meer op documenten die al hun lettertypen inbedden. De vorige heuristiek vergeleek het aantal/FontDescriptor-tokens met de ingebedde lettertypeprogramma's, maar elk ingebed lettertype draagt twee/FontDescriptor-tokens bij (de verwijzing naar het lettertypewoordenboek plus het descriptor-object), zodat elk bestand met ingebedde lettertypen ten onrechte werd gemarkeerd. De controle meldt nu alleen nog een document dat naar lettertypen verwijst maar in het geheel geen lettertypeprogramma inbedt, overeenkomstig de bijbehorendeValidatePdfUa-correctie
Version 1.49.1
Opgelost (Opgelost)
- PDF/A-uitvoer valideert nu als conforme PDF/A-1b en PDF/A-1a met veraPDF: de ingebedde sRGB-OutputIntent-ICC-profielstream (waarnaar
/DestOutputProfileverwijst) declareert nu het vereiste aantal componenten in/N(3 voor het ingebouwde RGB-profiel), zoals voorgeschreven door ISO 19005-1 6.2.3.2. Documenten geproduceerd doorSaveAsPdfAfaalden voorheen bij strikte PDF/A-1-validatie omdat de bestemmingsprofielstream/Nwegliet; de waarde wordt afgeleid uit de header van het ICC-profiel, zodat ook een door de aanroeper aangeleverd CMYK- of Gray-profiel het juiste aantal krijgt
Version 1.49.0
Opgelost (Opgelost)
ValidatePdfUameldt niet langer ten onrechte ontbrekende XMP-identificatie op conforme getagde PDF-documenten — de PDF/UA-identifier (pdfuaid:part),dc:title, de XMP-datums en de/IDuit de trailer worden nu uit de bytes van het oorspronkelijke document gelezen in plaats van uit de opnieuw opgeslagen kopie, waarin de/MetadataXMP-stream ontbreekt en, bij cross-reference-stream-bestanden, ook de/IDuit de trailer- De controle op lettertype-inbedding van
ValidatePdfUais gecorrigeerd, zodat een document dat al zijn lettertypen inbedt niet langer wordt gemeld als zou het niet-ingebedde lettertypen bevatten; nu wordt alleen een document gemarkeerd dat naar lettertypen verwijst maar in het geheel geen lettertypeprogramma inbedt ValidatePdfUaaccepteert nu eenFormula-structuurelement waarvan de alternatieve tekst viaActualTextwordt aangeleverd in plaats van via eenAlt-vermelding (ISO 14289-1 §7.7), overeenkomstig de bestaandeFigure-regel
Version 1.48.0
Toegevoegd (Toegevoegd)
- Programmatische tekstselectie op
TPdfView:SelectTextRange(op pagina en tekenbereik) enSetSelection(op expliciete bereiken per pagina) selecteren tekst vanuit code — bijvoorbeeld om een passage te lezen en te markeren; beide tekenen opnieuw en activerenOnSelectionChangewanneer de selectie verandert.SelectionRangesleest de huidige selectie als tekenbereiken per pagina, enSelectionRectanglesgeeft de bijbehorende rechthoeken in paginacoördinaten terug voor aangepaste markering of scroll-naar
Version 1.47.0
Toegevoegd (Toegevoegd)
- Formuliernavigatie voor spraakgestuurd invullen van formulieren, zowel op
TPdfals opTPdfView:FormFieldTabOrder,FocusedFormFieldIndex,FocusFormField,FocusNextFormField,FocusPreviousFormField,ClearFormFieldFocusenFocusedFormFieldText. Deze verplaatsen een logische veldcursor over de widgetvelden van de pagina in tabvolgorde (met omloop aan de uiteinden), zodat een ondersteunende voorleesfunctie het formulier kan doorlopen, elk veld kan aankondigen viaFormFieldInfo[Index].AlternateName(de /TU-tooltip), en het kan invullen viaFormField[Index] TPdfView.OnFormFieldFocusChange-gebeurtenis, die wordt geactiveerd wanneer de veldcursor verspringt (met de nieuwe veldindex, of -1 wanneer de focus is gewist)
Version 1.46.0
Toegevoegd (Toegevoegd)
- Ondersteunende voorleesinhoudstroom:
TPdf.ReadableContent,TPdf.ReadablePageContent,TPdf.DocumentReadableContentenTPdfView.ReadableContentgeven een geordende lijst van semantischeTPdfContentFragment-items terug, elk met de uit te spreken tekst (echte glyphs, ofActualText/Alt voor afbeeldingen), een fragmentsoort (kop met niveau, alinea, afbeelding, lijstitem, tabelcel, koppeling, gewoon), taal, op 1 gebaseerde pagina, en markeringsrechthoeken per blok plus per regel. Getagde PDF-documenten worden in logische leesvolgorde gelineariseerd vanuit de structuurboom; niet-getagde pagina's vallen terug op de rendervolgorde, zodat elk document hardop voorgelezen kan worden - Gesynchroniseerde leesmarkering op
TPdfView:SetReadingHighlight,ClearReadingHighlighten de gepubliceerdeReadingHighlightColormarkeren het blok dat momenteel wordt voorgelezen, boven op de zoek- en selectie-overlays - Nieuwe publieke typen
TPdfContentFragment,TPdfContentFragments,TPdfReadableContent,TPdfContentFragmentKindenTPdfReadingOrderSource, en de nieuwe hulpfunctieClassifyStructType
Version 1.45.0
Toegevoegd (Toegevoegd)
ValidatePdfUadoorloopt nu ook de live getagde structuurboom en meldt drie hoogstwaarschijnlijke inhoudsschendingen die een scan op byteniveau niet kan detecteren: eenFigure-element zonder Alt-vermelding én zonder ActualText (ISO 14289-1, 7.3), eenFormula-element zonder Alt-attribuut (7.7) en eenNote-element zonder uniek ID (7.9). Drie nieuweTPdfUaValidationIssue-waarden maken deze zichtbaar:pvuaiFigureMissingAlt,pvuaiFormulaMissingAltenpvuaiNoteMissingId. De structuurboominspectie wordt overgeslagen voor niet-getagde documenten- Nieuwe publieke hulpfunctie
ValidatePdfUaStructureElementspast diezelfde structuurboomregels toe op een platte elementenlijst (zoals geretourneerd doorTPdf.StructureElements), zodat de controles uitgevoerd of unit-getest kunnen worden zonder een volledig document te laden
Version 1.44.5
Opgelost (Opgelost)
- De
ValidatePdfA-controle op ingesloten lettertypen (pvaiFontNotEmbedded, ISO 19005-1, 6.3.4) detecteert nu ook niet-ingesloten eenvoudige lettertypen zonder/FontDescriptor, vooral de 14 standaard Type 1-lettertypen (Helvetica, Times, Courier enzovoort) die PDF/A zonder uitzondering ingesloten vereist. Voorheen bleef zo'n lettertype onopgemerkt; de controle telt nu ook dictionaries van eenvoudige lettertypen (/Type1,/TrueType,/MMType1) mee tegenover de ingesloten lettertypeprogramma's, in lijn met de PDF/UA-fix in 1.44.3
Version 1.44.4
Opgelost (Opgelost)
ValidatePdfVTweigert nu onjuist gevormde ISO 16612-2 §6.5 DPart-bomen waarin/DPartseen platte verwijzingsarray is in plaats van het vereiste array of arrays, of waarin een leaf DPart zijn/Start-pagina als/Endherhaalt terwijl het bereik maar één pagina bevatValidatePdfVTvalideert/NodeNameList-namen nu als XML NMTOKEN-waarden na uitbreiding van PDF name#xx-escapes, zodat ongeldige namen van hiërarchieniveaus viapvviMissingDPartRootworden gerapporteerd in plaats van als bruikbare DPart-structuur te worden geaccepteerd
Version 1.44.3
Opgelost (Opgelost)
- De
ValidatePdfUa-controle op lettertype-insluiting (pvuaiFontNotEmbedded, ISO 14289-1, 7.21.4) detecteert nu ook niet-ingesloten eenvoudige lettertypen zonder/FontDescriptor, in het bijzonder de 14 standaard Type 1-lettertypen (Helvetica, Times, Courier, enzovoort) waarvoor PDF/UA geen vrijstelling van insluiting verleent. Voorheen werd een dergelijk lettertype niet opgemerkt en kon een document dat het gebruikte als conform worden gerapporteerd; de controle telt nu ook woordenboekvermeldingen van eenvoudige lettertypen (/Type1,/TrueType,/MMType1) mee ten opzichte van de ingesloten lettertypeprogramma's
Version 1.44.2
Opgelost (Opgelost)
ValidatePdfVTlaat een aanwezige maar niet herkendepdfvtid:GTS_PDFVTVersion-marker nu alspvcUnknownstaan, in plaats van deze terug te brengen naarpvcNone. Daardoor blijven ongeldige bestandsniveau-tekenreeksen zoalsPDF/VT-2ste onderscheiden van documenten zonder PDF/VT-marker; PDF/VT-2s wordt volgens ISO 16612-2 Annex A geïdentificeerd via de MIME stream header, niet via de XMP-marker van een PDF-bestand- De
/DPartRoot-controle valideert de tree semantics van ISO 16612-2 §6.5 nu strikter:/DPartRootNodeen/NodeNameListmoeten de werkelijke DPart-diepte beschrijven, DPart parent links moeten een boom vormen,/Starten/DPartssluiten elkaar uit, en de/DPartvan elke pagina moet wijzen naar de dekkende leaf DPart in dezelfde depth-first volgorde als de page tree
Version 1.44.1
Opgelost (Opgelost)
SaveAsPdfVTschrijft nu een minimale Document Part Hierarchy volgens ISO 16612-2 §6.5 wanneer de bron-PDF geen bruikbare/DPartRootheeft. De gegenereerde boom koppelt elke pagina via/DPart, behoudt een bestaande geldige hiërarchie en laat rijkere ontvanger-/DPM-metadata aan de aanroepende workflowValidatePdfVTvalideert nu de bruikbare DPart-structuur, leest PDF/VT-XMP-waarden uit zowel RDF-attributen als elementtekst, en dwingt de exacte koppeling tussen PDF/VT en de PDF/X-basis af: PDF/VT-1 vereist PDF/X-4, terwijl PDF/VT-2 PDF/X-4p, PDF/X-5g of PDF/X-5pg vereistTPdfVTSaveOptions.Conformance = pvc2schrijft geen ongeldige enkelbestand PDF/VT-2-markeringen meer. De enkelbestand-writer normaliseert de uitvoer naar PDF/VT-1 omdat PDF/VT-2 bestandsset-semantiek vereist
Version 1.44.0
Toegevoegd (Toegevoegd)
ValidatePdfUarapporteert nu ook byte-controleerbare inhoudsfouten op PDF/UA-niveau, naast de bestandsformaatmarkeringen: een lettertypeprogramma dat niet is ingesloten (ISO 14289-1, 7.21.4), een lettertype dat geen/ToUnicodeCMap heeft wanneer geen vrijgestelde eenvoudige lettertypecodering aanwezig is (7.21.7), en een document dat annotaties bevat maar geen paginatabbladsvolgorde/Tabs /Sdeclareert (7.18.3)- Drie nieuwe
TPdfUaValidationIssue-waarden —pvuaiFontNotEmbedded,pvuaiFontMissingToUnicodeenpvuaiMissingTabsOrder— worden gerapporteerd doorValidatePdfUaen in het preflight-rapport. Het zijn grove heuristieken die bedoeld zijn als preflight-aanwijzingen en geen volledige ISO 14289-1-verificatie vormen
Version 1.43.1
Opgelost (Opgelost)
SaveAsPdfUadwingt nu de verplichte catalogusvermeldingen/ViewerPreferences/DisplayDocTitle trueen/MarkInfo/Marked true/Suspects falseuit ISO 14289-1, 7.1 af, ook wanneer het brondocument deze woordenboeken al bevat met ontbrekende of tegenstrijdige waarden. Voorheen werden de markeringen alleen ingevoegd wanneer de woordenboeken volledig afwezig waren, zodat een bron die bijvoorbeeld een/ViewerPreferenceszonderDisplayDocTitleof een/MarkInfomet/Marked falsebevatte, werd omgezet naar een niet-conform bestand- Bestaande sleutels in een reeds aanwezig
/ViewerPreferences- of/MarkInfo-woordenboek worden behouden, en een woordenboek dat als indirecte verwijzing is opgegeven, wordt omgezet voordat de verplichte sleutels worden toegepast
Version 1.43.0
Toegevoegd (Toegevoegd)
ValidatePdfApast nu de PDF/A-2-/PDF/A-3-regels toe voor ingesloten en gekoppelde bestanden en voor tekst op niveau U. Ingesloten bestanden worden voor PDF/A-1 nog steeds afgewezen; voor PDF/A-3 wordt een ingesloten bestand dat de vereiste sleutel/AFRelationship(ISO 19005-3 Annex E) mist, gemarkeerd, terwijl PDF/A-2-bijlagen zijn toegestaan (hun eigen conformiteit wordt niet recursief geverifieerd). Een nieuw probleempvaiUnicodeMappingMissingmeldt een PDF/A-2u- of PDF/A-3u-document waarvan de lettertypen geen/ToUnicode-toewijzing dragen (ISO 19005-2 6.2.11.7). Transparantie en optionele inhoud worden nog steeds alleen voor PDF/A-1 gemarkeerd
Version 1.42.0
Toegevoegd (Toegevoegd)
- PDF/A-2 (ISO 19005-2) en PDF/A-3 (ISO 19005-3) worden nu ondersteund op alle drie de conformiteitsniveaus — a, b en u — door
SaveAsPdfA,ValidatePdfAen de eigenschapPdfAConformance. De opsommingTPdfAConformancekrijgtpac2a,pac2u,pac3aenpac3u(PDF/A-1 heeft geen niveau u). Bij het opslaan worden het bijbehorendepdfaid:part(2 of 3) enpdfaid:conformance(A, B of U) weggeschreven, waarbij het OutputIntent-subtypeGTS_PDFA1behouden blijft dat ISO 19005-2 om compatibiliteitsredenen handhaaft. Een verzoek voor niveau A wordt nog steeds gedegradeerd naar het bijbehorende niveau B (voor elk deel) wanneer het document de getagde structuur mist die dat niveau vereist
Version 1.41.0
Toegevoegd (Toegevoegd)
ValidatePdfAdetecteert nu, naast de structurele markeringen die het al rapporteerde, ook PDF/A-overtredingen op inhoudsniveau die niet kunnen worden hersteld door het injecteren van markeringen: JavaScript en andere verboden acties, additional actions (/AA), ingesloten bestanden,LZWDecode, transparantie (soft masks en transparency groups), optionele inhoud (/OCProperties), verboden annotatiesubtypen (FileAttachment, Sound, Movie, 3D, Screen), AcroForm/NeedAppearances trueen/XFA, lettertypen waarvan de descriptors geen ingesloten lettertypeprogramma bevatten, en een Level A-claim zonder de getagde structuur die ISO 19005-1 6.8 vereist. De controles op transparantie, optionele inhoud en ingesloten bestanden gelden alleen voor PDF/A-1 (deze functies zijn toegestaan in PDF/A-2 en PDF/A-3). NieuweTPdfAValidationIssue-waarden maken elk geval zichtbaar; de bestaande waarden blijven ongewijzigd
Version 1.40.3
Opgelost (Opgelost)
SaveAsPdfAverwijdert nu elke versleuteling van het brondocument voordat de PDF/A-uitvoer wordt geproduceerd. ISO 19005-1 6.1.3 verbiedt de trailer-sleutel/Encrypt, maar het opslaanpad behield voorheen de security-handler van de bron, zodat het opslaan van een versleuteld document als PDF/A een versleuteld, niet-conform bestand opleverde. Bij het opslaan als PDF/A wordt het document nu eerst ontsleuteld. Niet-versleutelde documenten worden hierdoor niet beïnvloed
Version 1.40.2
Opgelost (Opgelost)
- Voorkomen dat
SaveAsPdfAeen onjuiste conformiteitsclaim voor PDF/A Level A afgeeft. Wanneer Level A (pac1a) wordt gevraagd maar het brondocument de door ISO 19005-1 6.8 vereiste markeringen voor de getagde structuur mist — een/StructTreeRootin de catalogus en een/MarkInfo-dictionary met/Marked true—, wordt het opgeslagen bestand nu aangeduid als het overeenkomende Level B (pdfaid:conformance=B) in plaats van Level A te claimen. Puur visuele PDF/A-1b-uitvoer wordt hierdoor niet beïnvloed
Version 1.40.1
Opgelost (Opgelost)
- De validatie van PDF-versiecompatibiliteit aangescherpt, zodat de actie
SetOCGState(set-optional-content-group-state) als een PDF 1.5-functie wordt herkend. Opslaan naar een PDF 1.2-, 1.3- of 1.4-doel dat eenSetOCGState-actie bevat, wordt nu geweigerd om aan ISO 32000-1 (Table 198) te voldoen; voorheen kon zo'n actie ongecontroleerd in uitvoer met een lagere versie terechtkomen. De afzonderlijke, verouderde PDF 1.2-actieSetStatewordt nog steeds vanaf PDF 1.2 geaccepteerd
Version 1.40.0
Toegevoegd (Toegevoegd)
- De API
FPDFPageObj_AddExistingMark()uit PDFium gekoppeld; deze koppelt een bestaande inhoudsmarkering aan een paginaobject. Wanneer opeenvolgende paginaobjecten dezelfde markering delen, voegt de opgeslagen PDF ze samen tot één markering die ze allemaal omvat; niet-opeenvolgende objecten krijgen afzonderlijke kopieën - De API
FPDFTextObj_SetFontSize()uit PDFium gekoppeld om de puntgrootte van een bestaand tekstobject te wijzigen, als aanvulling op de reeds bestaande koppeling vanFPDFTextObj_GetFontSize()
Gewijzigd (Gewijzigd)
- De meegeleverde PDFium-runtime-DLL's (Win32 en Win64, standaard- en V8-builds) bijgewerkt naar de PDFium-snapshot van 2026-06-02
Version 1.39.53
Gewijzigd (Gewijzigd)
- De Delphi-voorbeelden
PDFViewer,SplitViewenMultiPageVieweropenen documenten nu standaard in de modusZoom to Page - De eerste weergave past nu de volledige pagina in het viewergebied voordat de gebruiker een handmatig zoomniveau kiest
TPdf.AboutInfo, Lazarus-pakketmetadata en installatieversiemetadata zijn bijgewerkt om 1.39.53 te rapporteren
Version 1.39.52
Gewijzigd (Gewijzigd)
Demo\Lazarus\CreatePDFis uitgebreid zodat de instapsample nu een PDF met twee pagina's genereert met vector paths, table content, een embedded image, een text annotation, rotated text en een duidelijkere walkthrough voor het opbouwen van documenten- Voor elke Delphi-, C++Builder- en Lazarus-demomap zijn verzorgde
README.html-pagina's toegevoegd, waarmee de laatste tekst-only demo README is vervangen door een browserleesbare gids TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.52 wordt gerapporteerd
Version 1.39.51
- De batchsamenvattingen van
Demo\Delphi\PreflightReportClizijn uitgebreid met totalen per standaardstatus voor Pass, Action required en Review over de geselecteerde standaarden - Rijen per bestand bevatten nu ook aantallen voor action-required en review in TXT / HTML / JSON / CSV-samenvattingen, zodat CI-artifacts eenvoudiger te inspecteren zijn zonder elk gegenereerd rapport te openen
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.51 wordt gerapporteerd
Version 1.39.50
- De directory-batchmodus van
Demo\Delphi\PreflightReportCliis uitgebreid zodatbatchdir=foldergevonden PDF-paden verzamelt, sorteert en daarna rapporten in een stabiele volgorde genereert - Recursieve directoryscans leveren nu reproduceerbare rapportvolgorde en samenvattingsrijen op, terwijl expliciete verwerking via
batch=list.txtde volgorde uit het lijstbestand blijft behouden TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.50 wordt gerapporteerd
Version 1.39.49
- De batchsamenvattingen van
Demo\Delphi\PreflightReportClileggen nu ook runinstellingen vast: bronsoort, bronpad, recursieve status, uitvoermap, rapportformaat, geselecteerde standaarden en de modusfailon= - JSON-samenvattingen bevatten nu een object
run, TXT- en HTML-samenvattingen tonen een sectie met runinstellingen en CSV-rijen herhalen dezelfde auditkolommen voor spreadsheet- en CI-pijplijnen TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.49 wordt gerapporteerd
Version 1.39.48
- De naamgeving van batchuitvoer in
Demo\Delphi\PreflightReportCliis uitgebreid zodat dubbele invoerbestandsnamen die éénoutdir=delen niet langer elkaars gegenereerde rapporten overschrijven - Batchruns voegen nu de suffixen
-2,-3en later toe wanneer in dezelfde run al een gegenereerd rapportpad is toegewezen, en samenvattingen leggen het uiteindelijke botsingsvrije rapportpad vast TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.48 wordt gerapporteerd
Version 1.39.47
- De batchsamenvattingen van
Demo\Delphi\PreflightReportClizijn uitgebreid zodat TXT- en JSON-uitvoer nu geaggregeerde totalen bevatten voor totaal aantal bestanden, verwerkte bestanden, mislukte bestanden, issues en matches opfailon= - CSV-samenvattingen blijven een pure rijtabel voor bestaande gebruikers, terwijl HTML-samenvattingen dezelfde geaggregeerde metriek in de dashboardkop blijven tonen
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.47 wordt gerapporteerd
Version 1.39.46
Demo\Delphi\PreflightReportCliis uitgebreid metsummary=batch.html/.htmzodat batchruns naast TXT / CSV / JSON-manifests ook een browserleesbaar dashboard kunnen genereren- HTML-samenvattingen tonen totalen voor verwerkt, mislukt, issues en matches op
failon=, en sommen daarna elke invoer op met rapportlinks, status, tellingen en fouttekst TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.46 wordt gerapporteerd
Version 1.39.45
Demo\Delphi\PreflightReportCliis uitgebreid metbatchdir=folderenrecursivezodat scripts PDF-mappen direct kunnen scannen zonder eerst een lijstbestand te schrijven- De directory-batchmodus hergebruikt het gedrag van
outdir=,summary=,standards=enfailon=uit de lijstgebaseerde batchmodus, terwijl een niet-recursieve scan alleen de gekozen map doorzoekt enrecursiveook submappen meeneemt TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.45 wordt gerapporteerd
Version 1.39.44
Demo\Delphi\PreflightReportCliis uitgebreid metsummary=batch.csv|json|txtzodat batchruns naast rapporten per bestand ook een machineleesbaar manifest kunnen schrijven- Batchsamenvattingen bevatten nu per invoer het invoerpad, rapportpad, de status, het aantal standaarden, het aantal geslaagde standaarden, het aantal issues, de matchstatus voor
failon=en fouttekst voor CI-jobs en externe scripts TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.44 wordt gerapporteerd
Version 1.39.43
Demo\Delphi\PreflightReportCliis uitgebreid metbatch=list.txtenoutdir=reportszodat scripts in één run preflight-rapporten kunnen genereren voor een lijst met PDF-bestanden- De batchmodus slaat lege regels en commentaarregels met
#over, leidt iedere rapportnaam.preflight.<ext>af van de invoer-PDF, gaat na fouten per bestand verder en vat verwerkte en mislukte bestanden samen voordat hij afsluit TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.43 wordt gerapporteerd
Version 1.39.42
Demo\Delphi\PreflightReportCliis uitgebreid metfailon=none|issues|action|reviewzodat CI-jobs gegenereerde preflightresultaten kunnen omzetten in deterministische exitcodes- De CLI geeft nu exitcode 2 terug wanneer een gekozen regel in
failon=overeenkomt nadat het rapportbestand en de optionele PDF met bijgevoegd rapport zijn gegenereerd, terwijl runtimefouten exitcode 1 blijven geven TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.42 wordt gerapporteerd
Version 1.39.41
Demo\Delphi\PreflightReportCliis uitgebreid metattach=output.pdfzodat een gegenereerd preflight-rapport als documentniveau-bijlage in een nieuwe PDF-kopie kan worden ingesloten- De CLI bewaart het gegenereerde TXT / HTML / Markdown / JSON / CSV-rapportbestand op schijf en weigert het terug in het oorspronkelijke invoer-PDF-pad te hangen, zodat het risico op onbedoeld overschrijven kleiner wordt
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.41 wordt gerapporteerd
Version 1.39.40
Demo\Delphi\PreflightReportCliis toegevoegd als Delphi-consolemaatje voor scriptbare generatie vanFPdfPreflightReportzonder een viewer te openen- De CLI ondersteunt het maken van een voorbeeld zonder argumenten plus invoer- en uitvoerargumenten, een optioneel wachtwoord, de uitvoerformaten
text/html/md/json/csven filtering metstandards=voor PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R en PDF/VT TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.40 wordt gerapporteerd
Version 1.39.39
FPdfPreflightReportis uitgebreid metTPdfPreflightReport.ToMarkdownenSaveMarkdownToFilezodat preflight-rapporten kunnen worden geëxporteerd als issue-tracker-vriendelijke Markdown- De voorbeelden
PreflightReportvoor Delphi, C++Builder en Lazarus zijn bijgewerkt met omschakeling van Markdown-preview en acties voor Save MD naast de bestaande TXT / HTML / JSON / CSV-workflow TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.39 wordt gerapporteerd
Version 1.39.38
- De voorbeelden
SecurityAuditvoor Delphi, C++Builder en Lazarus zijn uitgebreid met export van JSON-auditrapporten naast de bestaande workflow voor opslaan / kopiëren als TXT - Het JSON-rapport bevat
format,generatedAt,summary,findingCounten gestructureerde rijenfindingsmet velden voor severity, area en detail TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.38 wordt gerapporteerd
Version 1.39.37
FPdfPreflightReportis uitgebreid metTPdfPreflightReport.ToCsvenSaveCsvToFilezodat preflight-rapporten als spreadsheetvriendelijke CSV kunnen worden geëxporteerd- De voorbeelden
PreflightReportvoor Delphi, C++Builder en Lazarus zijn bijgewerkt met omschakeling van CSV-preview en Save CSV-acties naast de bestaande workflow voor TXT / HTML / JSON TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.37 wordt gerapporteerd
Version 1.39.36
FPdfPreflightReportis uitgebreid metTPdfPreflightReport.IssueCategoryCountsplus herbruikbare typesTPdfPreflightIssueCategoryCountenTPdfPreflightIssueCategoryCountsvoor het groeperen van marker-level issues per categorieTPdfPreflightReport.ToText,ToHtmlenToJsonzijn bijgewerkt zodat gegenereerde PreflightReport-uitvoer nu samenvattingen van issuecategorie-aantallen bevat naast rijen per standaard en gedetailleerde issue-aanbevelingenTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.36 wordt gerapporteerd
Version 1.39.35
- De uitgebreide sample
PrintDialogis in Delphi, C++Builder en Lazarus hernoemd naarPrintPreferences, zodat de demonaam nu aansluit op de workflow voor PDF-auteurafdrukvoorkeuren, N-up-printen, filteren op oneven / even pagina's, grijstinten, celranden en duplexmapping TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.35 wordt gerapporteerd
Version 1.39.34
Demo\Delphi\PrintPDFis uitgebreid met slepen-en-neerzetten voor het laden van PDF's, en de bestaande workflow vanDemo\CBuilder\PrintPDFis nu gedocumenteerd naast de Delphi- en Lazarus-voorbeelden van PrintPDFTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.34 wordt gerapporteerd
Version 1.39.33
Demo\CBuilder\SplitViewis toegevoegd, waarmee de SplitView-samplematrix voor Delphi, C++Builder en Lazarus compleet isTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.33 wordt gerapporteerd
Version 1.39.32
Demo\Lazarus\SplitViewis toegevoegd en brengt zij-aan-zijvergelijking van PDF's naar Lazarus met lay-outs met twee of drie panelen, navigatie op de actieve view, gesynchroniseerde opdrachten, zoomvoorinstellingen en rotatieTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.32 wordt gerapporteerd
Version 1.39.31
Demo\Lazarus\PrintPDFis toegevoegd en brengt de standaardworkflow voor het afdrukken van PDF's naar Lazarus, inclusief voorvertoningsnavigatie, paginabereiken, kopieën, collatiestand, voortgang en annulerenTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.31 wordt gerapporteerd
Version 1.39.30
Demo\Lazarus\FontPropertiesis toegevoegd, waarmee de FontProperties-samplematrix voor Delphi, C++Builder en Lazarus compleet isTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.30 wordt gerapporteerd
Version 1.39.29
Demo\CBuilder\FontPropertiesis toegevoegd en brengt inspectie van tekens en fontmetadata op indexniveau naar C++Builder naast het Delphi-voorbeeldTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.29 wordt gerapporteerd
Version 1.39.28
Demo\Delphi\ExtractTextPagesis toegevoegd, waarmee de samplematrix voor tekstextractie per pagina voor Delphi, C++Builder en Lazarus compleet isTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.28 wordt gerapporteerd
Version 1.39.27
Demo\Lazarus\PrintDialogis toegevoegd, waarmee de PrintDialog-samplematrix voor Delphi, C++Builder en Lazarus compleet isTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.27 wordt gerapporteerd
Version 1.39.26
Demo\CBuilder\PrintDialogis toegevoegd en brengt de workflow voor N-up-printen en afdrukvoorkeuren van de PDF-auteur naar C++Builder naast het Delphi-voorbeeldTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.26 wordt gerapporteerd
Version 1.39.25
Demo\CBuilder\ViewerInteractionLabis toegevoegd, waarmee de ViewerInteractionLab-samplematrix voor Delphi, C++Builder en Lazarus compleet is- De bibliotheek-buildworkflow en Win64-pakketuitvoer voor C++Builder zijn bijgewerkt zodat viewerinteractiemethoden van
TPdfViewcorrect linken in Win64-demo's TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.25 wordt gerapporteerd
Version 1.39.24
Demo\Lazarus\ViewerInteractionLabis toegevoegd en brengt de gerichte viewerinteractie-workflow naar Lazarus naast het Delphi-voorbeeldTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.24 wordt gerapporteerd
Version 1.39.23
Demo\Lazarus\SearchAndSelectis toegevoegd, waarmee de SearchAndSelect-samplematrix voor Delphi, C++Builder en Lazarus compleet isTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.23 wordt gerapporteerd
Version 1.39.22
Demo\CBuilder\ContentExtractionLabenDemo\Lazarus\ContentExtractionLabzijn toegevoegd en brengen de workflow voor contentextractie met meerdere categorieën naar alle ondersteunde demo-IDE'sTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.22 wordt gerapporteerd
Version 1.39.21
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportenDemo\CBuilder\PreflightReportzijn uitgebreid met een selector voor het previewformaat zodat gebruikers tekst- of JSON-uitvoer kunnen bekijken voordat rapporten worden opgeslagenTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.21 wordt gerapporteerd
Version 1.39.20
- JSON-export is toegevoegd aan
FPdfPreflightReportviaTPdfPreflightReport.ToJsonenSaveJsonToFile, met machineleesbare samenvattingen, status / prioriteit per standaard, vervolgstappen en issuetails Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportenDemo\CBuilder\PreflightReportzijn bijgewerkt met Save JSON-acties naast TXT / HTML-exportTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.20 wordt gerapporteerd
Version 1.39.19
FPdfPreflightReportis uitgebreid metTPdfPreflightStatus, issuecategorieën, prioriteit per standaard en guidance voor vervolgstappen in TXT / HTML-rapportenDemo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportenDemo\CBuilder\PreflightReportzijn bijgewerkt om status, prioriteit, issueaantal en volgende actie in het samenvattingsraster te tonenTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.19 wordt gerapporteerd
Version 1.39.18
Demo\Lazarus\SecurityAuditis toegevoegd en maakt de demo-matrix voor de alleen-lezen auditworkflow van PDF-risico-oppervlakken compleet voor Delphi, C++Builder en Lazarus- Het Lazarus-voorbeeld inventariseert permissies, bijlagen, JavaScript-acties, URI / Launch-linkannotaties, weblinks, handtekeningen, XFA-status, beschikbaarheid van V8 / XFA-helpers en callbacks voor unsupported features, en slaat daarna de lijst met bevindingen op of kopieert die als TXT-rapport
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.18 wordt gerapporteerd
Version 1.39.17
Demo\CBuilder\SecurityAuditis toegevoegd en brengt de alleen-lezen auditworkflow voor PDF-risico-oppervlakken naar C++Builder naast het bestaande Delphi-voorbeeld- Het C++Builder-voorbeeld inventariseert permissies, bijlagen, JavaScript-acties, URI / Launch-linkannotaties, weblinks, handtekeningen, XFA-status, beschikbaarheid van V8 / XFA-helpers en callbacks voor unsupported features, en slaat daarna de lijst met bevindingen op of kopieert die als TXT-rapport
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.17 wordt gerapporteerd
Version 1.39.16
Demo\CBuilder\SearchAndSelectis toegevoegd en brengt de zelfstandige SearchAndSelect-viewerworkflow naar C++Builder naast het bestaande Delphi-voorbeeld- Het C++Builder-voorbeeld maakt PDF's aan of opent ze, toont matches van alle pagina's met previews van pagina / tekenindex, ondersteunt navigatie met Previous / Next en dubbelkliknavigatie, en markeert matches op de huidige pagina met
HighlightSearchText - Het voorbeeld maakt ook
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangeen spread-DisplayMode-opties beschikbaar; versie 1.39.16 wordt nu gerapporteerd door metadata
Version 1.39.15
Demo\CBuilder\WatermarkStampis toegevoegd, waarmee de demo-matrix voor herbruikbare Form XObject-watermerken en stempelworkflows voor Delphi, Lazarus en C++Builder compleet is- Het C++Builder-voorbeeld maakt doel- en stempel-PDF's aan, hergebruikt de stempelpagina via
CreateXObjectFromPage, past transformaties metTPdfMatrixtoe en slaat gecentreerde watermerken, hoekstempels en paginanummerlabels op TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.15 wordt gerapporteerd
Version 1.39.14
Demo\Lazarus\WatermarkStampis toegevoegd en brengt de herbruikbare Form XObject-workflow voor watermerken en stempels naar Lazarus- Het Lazarus-voorbeeld maakt doel- en stempel-PDF's aan, hergebruikt de stempelpagina via
CreateXObjectFromPage, past transformaties metTPdfMatrixtoe en slaat gecentreerde watermerken, hoekstempels en paginanummerlabels op TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.14 wordt gerapporteerd
Version 1.39.13
Demo\CBuilder\PreflightReportis toegevoegd, waarmee de demo-matrix voor de herbruikbare workflow vanFPdfPreflightReportvoor Delphi, Lazarus en C++Builder compleet is- Het C++Builder-voorbeeld gebruikt
FPdfPreflightReport.hppom standaardsamenvattingen, TXT-preview van rapporten, TXT / HTML-rapportbestanden en Open Last Report-gedrag te genereren TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.13 wordt gerapporteerd
Version 1.39.12
Demo\Lazarus\PreflightReportis toegevoegd en brengt de preflight-rapportworkflow voor PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R en PDF/VT naar Lazarus- Het Lazarus-voorbeeld kan een PDF openen of aanmaken, doelstandaarden selecteren, samenvattingsrijen en TXT-rapportuitvoer previewen, TXT / HTML-rapporten opslaan en het meest recent opgeslagen rapport openen
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.12 wordt gerapporteerd
Version 1.39.11
Demo\Delphi\SearchAndSelectis uitgebreid met een zoekresultatenlijst voor alle pagina's waarin paginanummer, tekenindex en previewtekst worden vastgelegd- Navigatie met Previous / Next match en springen via dubbelklik op resultaten is toegevoegd, terwijl bestaand gedrag van
HighlightSearchTextop de huidige pagina behouden blijft TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.11 wordt gerapporteerd
Version 1.39.10
Demo\Delphi\SecurityAuditis uitgebreid met acties voor Save Report en Copy Report die de huidige samenvatting en bevindingenrijen exporteren als TXT-auditrapport- De demo wist nu de exportstatus van rapporten wanneer het auditpaneel wordt gereset, zodat gekopieerde of opgeslagen rapporten overeen blijven komen met de zichtbare bevindingen
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.10 wordt gerapporteerd
Version 1.39.9
Demo\Delphi\ContentExtractionLabis uitgebreid met acties voor het opslaan van de bron-PDF, het kopiëren van rapporten naar het klembord en selecties voor alle / geen categorieën- De demo maakt het huidige rapport nu ongeldig wanneer categorieselecties veranderen, zodat TXT / JSON-export de zichtbare extractieomvang weerspiegelt
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.9 wordt gerapporteerd
Version 1.39.8
Demo\Delphi\ContentExtractionLabis toegevoegd als uniforme sample voor contentextractie van documentmetadata, paginatekst, paginaobjecten, afbeeldingen, bijlagen, links, annotaties, bladwijzers en metrics voor fonts / tekens- Het voorbeeld kan een bestaande PDF openen of een synthetische PDF maken met tekst-, afbeeldings-, bijlage- en annotatie-inhoud, en vervolgens samenvattingsrijen en gedetailleerde TXT / JSON-rapporten genereren
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.8 wordt gerapporteerd
Version 1.39.7
Lib\FPdfPreflightReport.pasis toegevoegd als herbruikbare rapporthelper dieValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRenValidatePdfVTsamenbrengt in één objectTPdfPreflightReportDemo\Delphi\PreflightReportis toegevoegd als workflowsample dat een PDF opent of maakt, doelstandaarden selecteert, samenvattingsrijen en issue-aanbevelingen previewt en TXT- of HTML-rapporten opslaat- De gegenereerde rapporten beschrijven expliciet de ingebouwde marker-level validatiegrens, zodat applicaties ze kunnen combineren met speciale content-level preflighttools wanneer dat nodig is
TPdf.AboutInfo, Lazarus-pakketmetadata, lijsten met pakketprojecten en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.7 wordt gerapporteerd
Version 1.39.6
Demo\Delphi\SearchAndSelectis toegevoegd als gerichte viewersample voor zoekmarkering, tekstselectie, preview van geselecteerde tekst, kopiëren, wissen en spread-weergavemodi- Het voorbeeld demonstreert
HighlightSearchText, zoekopties voor hoofdlettergevoelig / heel woord,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardenClearSelectionzonder nieuwe bibliotheek-API toe te voegen TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.6 wordt gerapporteerd
Version 1.39.5
Demo\Delphi\ViewerInteractionLabis uitgebreid tot een viewer-UX-sample in SearchAndSelect-stijl metHighlightSearchText, opties voor hoofdlettergevoelig / heel woord, preview van geselecteerde tekst en bestaande selectie- / klembordbedieningDemo\Delphi\PrintDialogis uitgebreid om afdrukvoorkeuren van de PDF-auteur te inspecteren:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlingen zichtbare duplexmapping viaSetPdfPrintPaperHandlingDevModeDemo\Delphi\SecurityAuditis toegevoegd als alleen-lezen sample voor het risico-oppervlak, die permissies, bijlagen, document-JavaScript, URI / Launch-links, weblinks, handtekeningen, XFA-status en beschikbaarheid van V8 / XFA-helpers opsomtTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.5 wordt gerapporteerd
Version 1.39.4
Demo\CBuilder\ImageToPDFenDemo\Lazarus\ImageToPDFzijn toegevoegd, waarmee de ImageToPDF-samplematrix voor Delphi, C++Builder en Lazarus compleet is- De nieuwe voorbeelden demonstreren selectie van meerdere afbeeldingen, preview van de gekozen afbeelding, één PDF-pagina per afbeelding, paginaformaat A4 staand / liggend, gecentreerde schaling van afbeeldingen, voortgang per afbeelding en het openen van de gegenereerde PDF na het opslaan
TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.4 wordt gerapporteerd
Version 1.39.3
Demo\CBuilder\BatchExportis toegevoegd en brengt de workflow voor het exporteren van meerdere PDF-bestanden naar JPG naar C++Builder naast de bestaande Delphi- en Lazarus-voorbeelden- Het voorbeeld demonstreert
LoadCustomDocument,IPdfCancellationTokenSource, streaming-invoer viaTFileStream, voortgang per bestand en per pagina, annuleren, invoer voor DPI / kwaliteit / wachtwoord en het openen van de uitvoermap na voltooiing TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.3 wordt gerapporteerd
Version 1.39.2
Demo\Delphi\WatermarkStampis toegevoegd als uitvoerbaar Form XObject-workflowsample dat een doel-PDF en herbruikbare stempel-PDF maakt en daarna gecentreerde watermerken, stempels rechtsboven en paginanummerlabels op elke pagina toepast- Het voorbeeld demonstreert
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixenFPDFPageObj_SetMatrixzonder nieuwe bibliotheek-API toe te voegen Docs\en-us\Examples.htmlis bijgewerkt om het huidige patroon metTPdfMatrix.Handlete gebruiken bij het doorgeven van matrices aanFPDFPageObj_SetMatrixTPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.2 wordt gerapporteerd
Version 1.39.1
Demo\Delphi\ViewerInteractionLabis toegevoegd als gerichteTPdfView-sample voor weergavemodi, fit-modi, paginakleuren, rotatie, tekstselectie door gebruikers, klembordacties en coördinatieterugkoppeling viaDeviceToPageDemo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLabzijn toegevoegd zodat Lazarus-gebruikers de workflow voor validatie en markeruitvoer van PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R en PDF/VT kunnen uitvoeren- De standaardunits zijn opgenomen in
Lib\37.0\PDFiumPas.dprojenLib\FPC\PDFiumLaz.lpk, en de Delphi-build vanSplitViewis gerepareerd door een dubbele import vanWinapi.ShellAPIte verwijderen - Blokkerende fouten in Delphi-demo-batchbuilds in
BatchExport,PDFViewer,MultiPageViewerenSplitViewzijn opgelost zonder het runtimegedrag te wijzigen - Compatibiliteit van C++Builder-demo-batchbuilds in
PDFViewerenMultiPageVieweris hersteld doornullptrvoor de huidige projectmodus te vervangen doorNULL TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.1 wordt gerapporteerd
Version 1.39.0
Demo\Delphi\StandardsLabis toegevoegd als uitvoerbare standards-workflowsample die een PDF laadt of maakt,ValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRenValidatePdfVTuitvoert en gedetecteerde conformiteit, pass/fail-status en issueaantallen in één raster toont- De opslaanknoppen van StandardsLab roepen
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRenSaveAsPdfVTaan, waardoor markeruitvoer voor PDF-standaarden zichtbaar wordt zonder een eigen testharnas te schrijven TPdf.AboutInfo, Lazarus-pakketmetadata en metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.39.0 wordt gerapporteerd
Version 1.38.0
- Zoek- en tekstselectie-overlays van
TPdfViewgebruiken nu echte alphablending in plaats van logisch maskerschilderen, zodat de pagina-inhoud onder markeringen behouden blijft SetPdfPrintPaperHandlingDevModeis toegevoegd omTPrintPaperHandlingte mappen op Windows-waarden vanDEVMODE.dmDuplex:DMDUP_SIMPLEX,DMDUP_HORIZONTALenDMDUP_VERTICALTPdfView.SmoothScrollanimeert nu line/page-scrollbaropdrachten in timer-gestuurde segmenten; thumb tracking blijft directTPdf.AboutInfoen metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.38.0 wordt gerapporteerd
Version 1.37.0
TPdfheeft nu een renderlock per instantie dieRenderPage,RenderTile,RenderPageProgressive, het opnieuw laden van pagina's en paden voor documentvrijgave serialiseert. Rendering vanuit workers via een gedeelde component is nu praktisch, terwijl applicaties mutatie en levensduur van documenten nog steeds zelf coördineren- De zero-copy bitmapwrapper weigert nu bottom-up
TBitmap-DIB-layouts en valt terug op een door PDFium beheerde buffer voordat de gegevens worden teruggekopieerd, waarmee stride-corruptie en access-violation-fouten in VCL-rendertests verdwijnen - Het selectiegedrag van
TPdfViewis aangescherpt:AllowUserTextSelectionbegrenst alleen gebruikersinvoer, selectie-API's op codeniveau blijven tekenen, enSelectAllvolgt de werkelijk zichtbare spread zodat de cover page niet langer pagina 2 selecteert. De tests voor Delphi, Lazarus en C++Builder zijn overeenkomstig uitgebreid TPdf.AboutInfoen metadata van het installatieprogramma zijn bijgewerkt zodat versie 1.37.0 wordt gerapporteerd
Version 1.36.0
- Tekstselectie voor eindgebruikers is geactiveerd in
TPdfView- de propertyAllowUserTextSelection, die sinds v1.17.0 was gereserveerd, stuurt nu een volledige pipeline voor slepen en selecteren aan. Links klikken op een teken schakelt naar selectiemodus, terwijl links klikken op leeg gebied blijft pannen zoals voorheen. De form-fill-widget houdt voorrang, dus klikken op een formulierveld focust nog steeds dat veld in plaats van een selectie te starten - Dubbelklik selecteert het woord, driedubbelklik selecteert de regel,
Ctrl+Aselecteert de huidige pagina en in spread-weergavemodi beide pagina's, enCtrl+Ckopieert de selectie naar het Windows-klembord alsCF_UNICODETEXT Shift+Left/Shift+Rightbreiden de selectie teken voor teken uit, ook naar de aangrenzende pagina in spread-modus;Shift+Home/Shift+Endbreiden uit tot de visuele regelrand en gebruiken de vakhoogte van het startteken als tolerantiewaarde voor regelclusters, zodat regels met gemengde fontgroottes correct gegroepeerd blijven- Wanneer de muis boven tekst zweeft verandert de cursor naar
crIBeam; buiten tekst keert de standaardcursor terug. Terwijl een tekstselectie met slepen bezig is zorgt slepen naar een dead zone van 20 pixels aan een rand van de viewer voor automatisch scrollen, zodat de selectie voorbij de huidige viewport kan doorlopen zonder eerst de muisknop los te laten - Selectie over meerdere pagina's werkt in spread-weergavemodi (
dmTwoPageContinuous,dmTwoPageContinuousWithCover): een sleepbeweging die op de linkerpagina begint en op de rechterpagina eindigt selecteert het aaneengesloten bereik over beide pagina's.SelectedTextvoegt de segmenten per pagina samen met CR/LF zodat de tekst na teruglezen leest als normale inhoud met meerdere regels - Er is een nieuwe published property
SelectionColormet als standaardclHighlight, de selectiekleur van Windows - los vanHighlightColor, dat zoekresultaten geel kleurt. Zoekmarkeringen en een actieve selectie met slepen kunnen nu tegelijk zichtbaar zijn zonder kleurconflict - De nieuwe published event
OnSelectionChangevuurt alleen wanneer de gematerialiseerde selectiebereiken echt veranderen, nooit bij identieke herhaling, zodat hostapplicaties die direct aan statusbalken of knopstaten kunnen koppelen zonder extra debounce - Nieuwe publieke API op
TPdfView:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAllenCopySelectionToClipboard. Dit zijn toegangspunten op codeniveau en ze blijven altijd werken ongeachtAllowUserTextSelection; de vlag begrenst alleen gebruikersinvoer zodat kioskhosts selectie voor gebruikers kunnen uitschakelen maar nog steeds werkbalkknoppen kunnen bouwen boven dezelfde API - Een standaard popupmenu voor rechtsklikken met
Copy/复制wordt automatisch gekoppeld wanneer de host geen eigenPopupMenuheeft toegewezen, zodat "tekst selecteren, rechtsklikken, kopiëren" direct werkt. Het opschrift wordt gekozen tussen Engels en Chinees viaSysLocale.PriLangID; hosts die volledige lokalisatie of een rijker menu nodig hebben wijzen gewoon hun eigenPopupMenutoe en dan wordt de standaard onderdrukt - De selectie wordt automatisch gewist bij overgangen van
SetPdf,SetPageNumber,SetActive(False)enDisplayMode, waarbijOnSelectionChangeprecies één keer vuurt wanneer de vorige selectie niet leeg was. Het form-fill-subsysteem houdt voorrang - terwijl een formulierveld wordt bewerkt geven alle selectiesneltoetsen de focus terug zodat het veld zelfCtrl+C,Ctrl+AenShift+arrowskan afhandelen - De regressiesuites voor Delphi en Lazarus zijn uitgebreid naar 202 tests elk, en de C++Builder-suite naar 159 tests, met dekking voor standaardwaarden, round-trip, publiek API-gedrag, wissen bij statusverandering, slepen met de muis, klik versus sleep, wisselen naar de IBeam-cursor, dubbelklik op woord, driedubbelklik op regel, sneltoetsen, automatisch koppelen van het standaard-popupmenu en cross-page selectie in spread-modus
Version 1.35.0
- Ondersteuning voor injectie van PDF/VT-markeringen is toegevoegd: TPdf.SaveAsPdfVT promoveert het huidige document naar een bestand dat voldoet aan PDF/VT-1 of PDF/VT-2. PDF/VT bouwt voort op PDF/X-4, dus de injector schrijft de volledige set PDF/X-4-markeringen, waaronder XMP
pdfxid:GTS_PDFXVersion = "PDF/X-4", Info/GTS_PDFXVersion (PDF/X-4)en/Trapped, catalogus/OutputIntentsplus de PDF/VT-specifieke eigenschappen - De PDF/VT-specifieke injectie dekt XMP
pdfvtid:GTS_PDFVTVersionenpdfvtid:GTS_PDFVTModDatedie synchroon blijft metxmp:ModifyDate, plus een pdfaExtension:schemas-beschrijving die zowel de pdfxid- als de pdfvtid-namespace declareert viahttp://www.npes.org/pdfx/ns/id/enhttp://www.npes.org/pdfvt/ns/id/. De trailer bevat een array/ID - TPdf.SaveAsPdfVTToStream is toegevoegd voor in-memory PDF/VT-uitvoer, plus een verkorte standaardoptie
TPdf.SaveAsPdfVT(FileName)die PDF/VT-1 maakt met de meegeleverde sRGB IEC61966-2.1 OutputIntent van 3144 bytes en/Trapped /False - TPdf.ValidatePdfVT is toegevoegd: deze controleert een open PDF op PDF/VT-conformiteitsmarkeringen, waaronder XMP
pdfvtid:GTS_PDFVTVersion,GTS_PDFVTModDate, gelijkheid tussenpdfvtid:GTS_PDFVTModDateenxmp:ModifyDate, de onderliggende identifierpdfxid:GTS_PDFXVersion, catalogus/DPartRoot,/OutputIntentsmet/DestOutputProfile, encryptiestatus en aanwezigheid vanxmp:CreateDate/ModifyDate - De property TPdf.PdfVTConformance is toegevoegd en geeft het conformiteitsniveau van het momenteel geopende document terug zonder dat ValidatePdfVT expliciet hoeft te worden aangeroepen
- Nieuwe types in unit FPdfPdfvt: TPdfVTConformance, TPdfVTTrappedState, TPdfVTValidationResult, TPdfVTValidationIssue en TPdfVTSaveOptions
- De Document Part Hierarchy per
DPartRoot/DParten/DPartRootblijft applicatieniveau-structuur die afhangt van de workflow voor variabele data. SaveAsPdfVT genereert daarom geen DPart-boom; ValidatePdfVT rapporteert een ontbrekende root alspvviMissingDPartRootzodat aanroepers PDF/VT-bestanden via een aparte DPart-stap kunnen leiden - De string van TPdf.AboutInfo is bijgewerkt zodat de huidige productversie wordt gerapporteerd
Version 1.34.0
- Ondersteuning voor injectie van PDF/R-1-markeringen (ISO 23504-1:2020) is toegevoegd: TPdf.SaveAsPdfR promoveert het huidige document naar een bestand dat voldoet aan PDF/R-1, de PDF-subset voor transport van rasterbeelden zoals gebruikt voor gescande documenten. De injectie dekt de vereisten op bestandsformaatniveau die via naverwerking kunnen worden toegevoegd — het unieke versie-identificatiecommentaar
%PDF-raster-1.0tussen de trailer dictionary en het startxref-keyword (§5), de catalogus dictionary gereduceerd tot de whitelist van §6.3 (alleen Version / ViewerPreferences / PageLayout / PageMode / AcroForm / Metadata blijven over), de Document Information Dictionary gereduceerd tot de whitelist van §6.4.3 (alleen Creator / Producer / CreationDate / ModDate), een catalogus /Metadata XMP-stream met de vier items uit §6.4.4 Table 1 (xmp:CreatorTool / pdf:Producer / xmp:CreateDate / xmp:ModifyDate) en een trailer /ID array - TPdf.SaveAsPdfRToStream is toegevoegd voor in-memory PDF/R-uitvoer, plus een verkorte standaardoptie
TPdf.SaveAsPdfR(FileName)voor het gebruikelijke geval - TPdf.ValidatePdfR is toegevoegd en controleert een open PDF op PDF/R-1-conformiteitsmarkeringen (het footercommentaar
%PDF-raster-x.y, de headerversie, afwezigheid van /Type /ObjStm, whitelist-naleving van de catalogus en van de Info dictionary, aanwezigheid van een XMP-metadatastream en trailer /ID) en geeft TPdfRValidationResult terug met het gedetecteerde conformiteitsniveau en de gevonden problemen - De property TPdf.PdfRConformance is toegevoegd en geeft het conformiteitsniveau van het momenteel geopende document terug (prc1, prcNone of prcUnknown) zonder dat ValidatePdfR expliciet hoeft te worden aangeroepen
- Nieuwe types in de nieuwe unit FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue en TPdfRSaveOptions.
TPdfRSaveOptions.Defaultzet StripInfoOptionalEntries en StripCatalogOptionalEntries op True, zodat de injector standaard een catalogus en Info dictionary produceert die aan §6.3 / §6.4.3 voldoen; aanroepers kunnen deze op False zetten om bronitems te behouden (de uitvoer voldoet dan niet aan die PDF/R-clausules, maar de overige markeringen blijven aanwezig) - Contentvereisten blijven de verantwoordelijkheid van de bron-PDF: de Contents-structuur per pagina (§6.5.1), de MediaBox-vorm
[0 0 w h](§6.5.3), de filterbeperkingen (§6.2.2 — alleen FlateDecode, CCITTFaxDecode bitonaal en DCTDecode 8-bit gray/RGB), afwezigheid van object streams (§6.2.4) en de striplayout volgens §6.6. Deze zijn niet via naverwerking af te dwingen — PDF/R is structureel een veel strengere subset dan de andere PDF/x-standaarden en vereist dat de bronbytes correct worden gegenereerd. ValidatePdfR rapporteert de problemen op bestandsformaatniveau die deze unit kan detecteren; combineer het met een PDF/R-validator van de TWAIN Working Group voor volledige controles op contentniveau - De string van TPdf.AboutInfo is bijgewerkt zodat de huidige productversie wordt gerapporteerd
Version 1.33.0
- Ondersteuning voor injectie van PDF/X-markeringen is toegevoegd: TPdf.SaveAsPdfX promoveert het huidige document naar een bestand dat voldoet aan PDF/X-1a:2001, PDF/X-3:2002 of PDF/X-4. De injectie dekt markeringen op bestandsformaatniveau die via naverwerking kunnen worden toegevoegd, waaronder een XMP-metadatastream met
pdfxid:GTS_PDFXVersionenpdfxid:GTS_PDFXConformance, een herschreven Document Information Dictionary met/GTS_PDFXVersion,/GTS_PDFXConformanceen/Trapped, een bijgewerkte catalogus met/OutputIntents [N 0 R]die verwijst naar een OutputIntent-dictionary met/S /GTS_PDFX, en een trailer-array/ID - TPdf.SaveAsPdfXToStream is toegevoegd voor in-memory PDF/X-uitvoer, plus een verkorte standaardoptie
TPdf.SaveAsPdfX(FileName)die PDF/X-4 maakt met de ingebouwde sRGB IEC61966-2.1 OutputIntent van 3144 bytes - TPdf.ValidatePdfX is toegevoegd en controleert een open PDF op PDF/X-conformiteitsmarkeringen, waaronder de pdfxid-identifier in XMP en gelijkheid met de waarde in de Info-dictionary, de beschrijving van het pdfxid-extensieschema, de array /OutputIntents met /DestOutputProfile, aanwezigheid van een titel, trailer /ID, encryptiestatus en aanwezigheid van xmp:CreateDate / xmp:ModifyDate
- De property TPdf.PdfXConformance is toegevoegd en geeft het conformiteitsniveau van het momenteel geopende document terug zonder dat ValidatePdfX expliciet hoeft te worden aangeroepen. De XMP-versiestring wordt geparseerd om de drie conformiteitsniveaus van elkaar te onderscheiden
- Nieuwe types in unit FPdfPdfx: TPdfXConformance, TPdfXTrappedState, TPdfXValidationResult, TPdfXValidationIssue en TPdfXSaveOptions.
TPdfXSaveOptions.Defaultricht zich op PDF/X-4 met sRGB OutputIntent en/Trapped /False; aanroepers kunnenConformanceoverschrijven, een CMYK-blob aanleveren viaIccProfileDataofOutputCondition/OutputConditionIdentifier/RegistryNameaanpassen voor een specifieke ICC-registratie - Contentvereisten zoals ingesloten fonts, geen JavaScript, geen zichtbare annotaties, OPI-verbod en transparantieregels voor PDF/X-1a / PDF/X-3 blijven de verantwoordelijkheid van de documentauteur en de renderpipeline van PDFium
- De string van TPdf.AboutInfo is bijgewerkt zodat de huidige productversie wordt gerapporteerd
Version 1.32.0
- Ondersteuning voor injectie van PDF/E-1-markeringen (ISO 24517-1:2008) is toegevoegd: TPdf.SaveAsPdfE promoveert het huidige document via naverwerking met een incrementele update naar een bestand dat voldoet aan PDF/E-1. De injectie dekt de vereisten op bestandsformaatniveau die via naverwerking kunnen worden toegevoegd — een XMP-metadatastream met
pdfe:ISO_PDFEVersion = "PDF/E-1"plus de bijbehorende pdfaExtension:schemas-beschrijving, een herschreven Document Information Dictionary met het door §5 verplichte item/ISO_PDFEVersion (PDF/E-1), de Info-XMP-brugblokken overgenomen uit ISO 19005-1 §6.7 via §13.1 (dc:title / dc:creator / dc:description / pdf:Producer / pdf:Keywords / xmp:CreateDate / xmp:ModifyDate / xmp:MetadataDate / xmp:CreatorTool) en een trailer-/IDarray zoals vereist door §6.2 - TPdf.SaveAsPdfEToStream is toegevoegd voor in-memory PDF/E-uitvoer, plus een verkorte standaardoptie
TPdf.SaveAsPdfE(FileName)voor het gebruikelijke geval - TPdf.ValidatePdfE is toegevoegd en controleert een open PDF op PDF/E-1-conformiteitsmarkeringen (aanwezigheid van XMP pdfe:ISO_PDFEVersion en gelijkheid met de waarde in de Info-dictionary, de pdfe-extensieschema-beschrijving, het /ISO_PDFEVersion-item in de Info-dictionary, trailer /ID en aanwezigheid van xmp:CreateDate / xmp:ModifyDate) en geeft een gestructureerd resultaat terug met het gedetecteerde conformiteitsniveau en de gevonden problemen
- De property TPdf.PdfEConformance is toegevoegd en geeft het conformiteitsniveau van het momenteel geopende document terug (pec1, pecNone of pecUnknown) zonder dat ValidatePdfE expliciet hoeft te worden aangeroepen
- Nieuwe types in de nieuwe unit FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue en TPdfESaveOptions
- Het herschrijven van de Info-dictionary is een primeur voor de PDF/x-naverwerkingsroute van PDFium Delphi Component — het bestaande Info-object wordt herschreven met hetzelfde objectnummer (zodat de xref-subsectie en de /Info-verwijzing in de trailer geldig blijven) en als de brontrailer geen /Info-item heeft wordt een nieuwe Info-dictionary gesynthetiseerd. PDFium zelf schrijft bij elke SaveAs-uitvoer een Info-dictionary, dus het gebruikelijke geval is de herschrijfroute
- Contentvereisten (fontinsluiting, ToUnicode CMaps, verboden XObjects / ExtGState-keys / XFA-formulieren enzovoort) blijven de verantwoordelijkheid van de documentauteur — SaveAsPdfE voegt de markeringen op bestandsformaatniveau toe maar wijzigt de pagina-inhoud niet en verwijdert geen verboden onderdelen
- De string van TPdf.AboutInfo is bijgewerkt zodat de huidige productversie wordt gerapporteerd
Version 1.31.0
- Ondersteuning voor injectie van PDF/UA-1-markeringen is toegevoegd: TPdf.SaveAsPdfUa promoveert het huidige document naar een bestand dat voldoet aan PDF/UA-1. De injectie dekt vereisten op bestandsformaatniveau die via naverwerking kunnen worden afgedwongen, waaronder een XMP-metadatastream met
pdfuaid:part = 1, verplichtdc:title, catalogus/MarkInfo << /Marked true /Suspects false >>en/ViewerPreferences << /DisplayDocTitle true >>, catalogus/Langen een trailer-array/ID - TPdf.SaveAsPdfUaToStream is toegevoegd voor in-memory PDF/UA-uitvoer, plus een verkorte standaardoptie
TPdf.SaveAsPdfUa(FileName)voor het gebruikelijke geval - TPdf.ValidatePdfUa is toegevoegd en controleert een open PDF op PDF/UA-1-conformiteitsmarkeringen, waaronder StructTreeRoot, /Lang, /MarkInfo /Marked true met /Suspects = false, /ViewerPreferences /DisplayDocTitle true, de XMP-identifier pdfuaid:part, aanwezigheid van dc:title, trailer /ID en encryptiestatus
- De property TPdf.PdfUaConformance is toegevoegd en geeft het conformiteitsniveau van het momenteel geopende document terug zonder dat ValidatePdfUa expliciet hoeft te worden aangeroepen
- Nieuwe types in unit FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue en TPdfUaSaveOptions
- Lege velden voor Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language in TPdfUaSaveOptions worden automatisch gevuld vanuit FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage, zodat bestaande aanroepers met één regel kunnen opslaan
- Contentvereisten zoals volledige StructTreeRoot-tagging, Figure Alt-tekst, ToUnicode CMaps en fontinsluiting blijven de verantwoordelijkheid van de documentauteur; SaveAsPdfUa voegt alleen bestandsformaatmarkeringen toe en wijzigt de pagina-inhoud niet. ValidatePdfUa rapporteert een ontbrekende StructTreeRoot als
pvuaiMissingStructTreeRootzodat aanroepers niet-getagde documenten naar een aparte taggingpipeline kunnen sturen - De string van TPdf.AboutInfo is bijgewerkt zodat de huidige productversie wordt gerapporteerd
Version 1.30.0
- PDF/A-1b-uitvoer voldoet nu aan de ISO 19005-1-eisen (met Cor.1:2007) voor equivalentie tussen Document Information Dictionary en XMP: elk Info dictionary-item dat PDFium in de basis-PDF schrijft wordt gespiegeld naar het XMP-pakket, waaronder Title (dc:title), Author (dc:creator), Subject (dc:description volgens Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) en ModDate (xmp:ModifyDate). Ook xmp:MetadataDate wordt geschreven
- De trailer van een PDF/A-document bevat nu altijd een /ID array (harde eis uit ISO 19005-1 6.1.3). Wanneer TPdf.SaveAsPdfA een document verwerkt waarvan de bron al een file identifier heeft, worden de bestaande permanente en changing ID's van 16 byte hergebruikt; anders wordt een deterministische fallback-ID van 16 byte afgeleid uit de bronbytes
- De geïnjecteerde XMP bevat nu de pdfaid-extensieschema-beschrijving die ISO 19005-1 6.7.8 (vervangen door Cor.1) vereist — pdfaid wordt behandeld als een extensieschema ten opzichte van XMP Specification 2004, dus alle conforme bestanden moeten de property-namen, waardetypes en categorieën ervan declareren in de pdfaExtension:schemas-container
- TPdfASaveOptions heeft vijf nieuwe optionele velden gekregen: Producer, CreationDate, ModDate (PDF-datums in de vorm “D:YYYYMMDDHHmmSSOHH'mm'”), DocumentId en InstanceId (bytestrings van 16 byte voor de trailer /ID array). TPdf.SaveAsPdfA / SaveAsPdfAToStream vullen ontbrekende velden automatisch vanuit FPDF_GetMetaText en FPDF_GetFileIdentifier, zodat bestaande aanroepers zonder wijzigingen blijven werken
- TPdf.ValidatePdfA / TPdf.PdfAConformance rapporteren nu drie extra problemen: pvaiMissingTrailerId (geen /ID in de trailer), pvaiMissingXmpDates (xmp:CreateDate of xmp:ModifyDate ontbreekt) en pvaiMissingExtensionSchema (pdfaid-extensieschema-beschrijving ontbreekt)
- Non-ASCII-tekens in Title, Author, Subject, Keywords, Creator en Producer worden nu als UTF-8 gecodeerd in het XMP-pakket (XMP Specification vereist UTF-8), waardoor meertalige metadata hun round-trip via SaveAsPdfA behouden
- De string van TPdf.AboutInfo is bijgewerkt zodat de huidige productversie wordt gerapporteerd
Version 1.29.0
- De meegeleverde PDFium-DLL's (Win32 en Win64, zowel de standaard- als de V8-builds) zijn ververst naar de PDFium-snapshot van 2026-05-22, met daarin de fixes voor de FPDFText_SetText / FPDFText_SetCharcodes-crashpaden en diverse interne verhardingen uit het PDFium-project
- FPDF_SUBSET_NEW_FONTS, de nieuwe save-vlag van PDFium, is beschikbaar gesteld in FPdfPageOps.pas, zodat FPDF_SaveAsCopy-aanroepers automatisch subsetting van ingesloten fontbestanden kunnen vragen voor nieuw toegevoegde tekstobjecten. De bestaande constanten FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL en FPDF_REMOVE_SECURITY worden nu gedefinieerd in de bit-shift-vorm van PDFium (de oude numerieke waarde 3 blijft behouden als FPDF_REMOVE_SECURITY_DEPRECATED voor binaire compatibiliteit)
- De enum FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) en het bijbehorende veld m_FontLibraryType op FPDF_LIBRARY_CONFIG zijn toegevoegd in FPdfView.pas, zodat applicaties die PDFium initialiseren met de Skia-renderer nu bij het opstarten de fontbackend kunnen kiezen
- De signatuur van TFPDFPage_InsertObject is bijgewerkt naar de PDFium C-export: de functie geeft nu FPDF_BOOL terug (TRUE bij succes, FALSE als page_object NULL is of de ownership-overdracht mislukt) in plaats van void. Bestaande aanroepers van PDFium Delphi Component compileren ongewijzigd verder, omdat Delphi / FPC het negeren van een functiewaarde toestaan
- De TPdf.AboutInfo-string is gecorrigeerd zodat deze de huidige productversie rapporteert (stond nog op v1.27.0 sinds de documentatie-only release v1.28.0)
Version 1.28.0
- De documentatie in de API-reference is aanzienlijk uitgebreid: elke entry voor property, method, event en globale functie heeft nu een Description van drie alinea's, een Remarks-lijst, een meerregelig Delphi Example en een uitgebreider See Also-blok — goed voor 200+ pagina's die eerst mager waren, waaronder alle TPdf-counters, metadata-getters, font- en character-accessors, properties op paginaniveau, geïndexeerde records, methoden op documentniveau en het volledige state / display / event-oppervlak van TPdfView
- De helplayout is bijgeschaard naar de visuele basislijn van losLab: h1/h2-groottes gelijkgetrokken, de API-navigatiegrid-stijlen gebundeld in de gedeelde StyleSheet en de per-pagina inline CSS-overrides op Navigation.html verwijderd
- De documentatie wordt nu geleverd met een helperscript (Docs\Build-Expand-Entries.ps1) dat de verrijking van de entry-pagina's opnieuw genereert vanuit één datatabel, voor herhaalbaar onderhoud
Version 1.27.0
- Ondersteuning voor het maken van PDF/A-1b is toegevoegd: TPdf.SaveAsPdfA slaat elk open document op als een bestand dat voldoet aan PDF/A-1b door de basis-PDF na te verwerken met een incrementele update die een XMP-metadatastream, een sRGB ICC OutputIntent en een bijgewerkte documentcatalogus injecteert — allemaal zonder extra DLL-API's. Werkt op elk platform dat PDFium Delphi Component ondersteunt
- TPdf.SaveAsPdfAToStream is toegevoegd voor in-memory PDF/A-uitvoer
- TPdf.ValidatePdfA is toegevoegd en controleert een open PDF op PDF/A-conformiteit (XMP pdfaid-markeringen, OutputIntent met ingesloten ICC-profiel, encryptie) en geeft een gestructureerd resultaat terug met het gedetecteerde conformiteitsniveau en een set specifieke gevonden problemen
- De property TPdf.PdfAConformance is toegevoegd en geeft het conformiteitsniveau van het momenteel geopende document terug (pac1b, pac1a, pac2b, pac3b, pacNone of pacUnknown) zonder dat ValidatePdfA expliciet hoeft te worden aangeroepen
- Nieuwe geëxporteerde types: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue en TPdfASaveOptions (in de nieuwe unit FPdfPdfa.pas)
- SaveAsPdfA ondersteunt een eigen ICC-profiel via TPdfASaveOptions.IccProfileData; als dit leeg blijft wordt automatisch het ingebouwde profiel sRGB IEC61966-2.1 (HP/Microsoft, 3144 bytes) gebruikt
- De monolithische HTML-reference is vervangen door een herstructureerd webhelpsysteem: 302 afzonderlijke API-entrypagina's (één per property, method, event en globale functie) voor TPdf en TPdfView, elk met een volledige beschrijving, parametertabel, Delphi-codevoorbeeld en See Also-links
- Navigation.html is toegevoegd: een omvattende navigatie-index van één pagina voor de API, ingedeeld in zes secties (TPdf properties/methods/events, TPdfView properties/methods/events, globale functies) met een flex-grid van 5 kolommen om snel te scannen
- TPdf.html en TPdfView.html zijn herbouwd als compacte overzichtspagina's per component, die de type-reference-secties behouden (Types, Constants, Global Variables) en doorlinken naar de afzonderlijke entrypagina's voor alle members
- Volledige tekstzoekfunctie is toegevoegd, aangedreven door Search.js met incrementele matching aan de clientzijde over alle 312 geïndexeerde pagina's
- Alle navigatiebalkens op de hele site wijzen nu naar Navigation.html
Version 1.26.0
- Demo/Lazarus/BatchExport is toegevoegd, de LCL-port van de Delphi BatchExport-demo uit v1.14.0. Dezelfde featureset: PDF -> JPG-export van meerdere bestanden met algemene voortgang per bestand, actuele voortgang per pagina, invoervelden voor DPI / kwaliteit / wachtwoord en een coöperatief annuleerbare batch die op IPdfCancellationToken steunt. Na een geslaagde extractie wordt de uitvoermap geopend in de bestandsbeheerder van het platform
Version 1.25.0
- Herbruik van Form XObject-pagina's is toegevoegd aan TPdf, wat workflows mogelijk maakt voor watermerken, template-overlays en “één pagina op vele stempelen”: CreateXObjectFromPage vervaardigt vanuit elke pagina van een ander document een herbruikbare handle; InsertFormObjectFromXObject plaatst EEN kopie van de ingepakte pagina op de huidige pagina. Geeft de ingevoegde FPDF_PAGEOBJECT terug zodat de aanroeper die kan positioneren / schalen / roteren met FPDFPageObj_SetMatrix en de TPdfMatrix-helpers uit v1.9.0
- De nieuwe Pascal-klasse TPdfXObject wikkelt de FPDF_XOBJECT-handle van PDFium en sluit deze automatisch weer af in de destructor, waardoor het handmatige FPDF_CloseXObject-ritueel vervalt
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 147 cases en de C++Builder-suite naar 123 cases, met dekking voor handle-aanmaak en de contracten bij het invoegen van page-objecten
Version 1.24.0
- TPdf.RenderPageProgressive is toegevoegd — een annuleerbare variant van RenderPage die de progressieve rendering-loop van PDFium aanstuurt en tussen iteraties een IPdfCancellationToken uit v1.7.0 polt, zodat lange high-DPI-renders halverwege een pagina kunnen afbreken in plaats van de aanroeper te blokkeren tot ze klaar zijn
- Geeft een TPdfProgressiveStatus-waarde terug: prsDone, prsCancelled of prsFailed. Geef AToken = nil mee om in één keer tot het einde te renderen zonder ooit te pauzeren (prsCancelled is dan uitgesloten)
- Gebruikt dezelfde zero-copy snelroute die in v1.21.0 werd geïntroduceerd — PDFium rendert rechtstreeks in de DIB van de doel-TBitmap. Dezelfde legacy-fallback geldt wanneer de DIB niet kan worden ingepakt
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 145 cases en de C++Builder-suite naar 121 cases, met dekking voor nil-token (werkt af), vooraf geannuleerd token (prsCancelled) en pixelequivalentie met de synchrone RenderPage op een live token
Version 1.23.0
- Zes nieuwe TPdfView-methoden zijn toegevoegd die de tekstselectie in form-widgets en Undo/Redo van PDFium aan applicaties blootstellen: GetSelectedFormText geeft de momenteel geselecteerde tekst in de gefocuste form-widget terug; SelectAllFormText selecteert elk teken; FormUndo / FormRedo / FormCanUndo / FormCanRedo bedienen de bewerkingsgeschiedenis van de gefocuste widget. De onderliggende PDFium-API's waren al gebonden maar hadden geen entry point op hoog niveau. Alle zes breken veilig en direct af wanneer de view inactief is of het document geen AcroForm-widget gefocust heeft
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 142 cases en de C++Builder-suite naar 119 cases, met dekking voor het no-form-no-focus-contract van elke nieuwe methode
Version 1.22.0
- Wrappers voor paginacompositie zijn toegevoegd aan TPdf: ImportPagesByIndex neemt een nulgebaseerde indexarray om specifieke pagina's uit een brondocument te kopiëren; ImportNPagesToOne geeft een gloednieuwe TPdf terug waarvan de pagina's N-up-samenvoegingen van dit document zijn; MovePages herschikt pagina's ter plekke. De onderliggende PDFium-API's waren al gebonden maar hadden geen Pascal-vriendelijk entry point
- ImportPagesByIndex accepteert een lege array om elke bronpagina te importeren (equivalent aan nil meegeven op C-ABI-niveau)
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 136 cases en de C++Builder-suite naar 115 cases, met dekking voor subset-import, import van het hele document, pagina-herschikking en N-up-samenvoeging
Version 1.21.0
- De renderprestaties zijn verbeterd door TPdf.RenderPage / TPdf.RenderTile (en de bijbehorende TPdfView-helpers) over te schakelen op een zero-copy uitvoerroute. PDFium schrijft nu rechtstreeks in de DIB-buffer van de doel-TBitmap in plaats van in een interne buffer die daarna rij voor rij werd gekopieerd, wat per render één geheugenkopie van width x height x 4 bytes bespaart. De verbetering is het duidelijkst bij hoge DPI (thumbnailpanelen, export in afdrukkwaliteit, batch-export)
- De legacy per-scanline-route blijft als veiligheidsfallback bestaan voor het onwaarschijnlijke geval dat de doel-DIB niet kan worden ingepakt (extreme afmetingen, ongebruikelijke stride, OOM). Het gedrag is byte-identiek tussen beide routes, alleen is de fallback trager
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 132 cases en de C++Builder-suite naar 112 cases, met dekking voor de pf32bit-upgrade van de bitmap van de aanroeper, dimensies round-trip en een sanitytest voor de stride van een grote bitmap
Version 1.20.0
- Markering van zoekresultaten is toegevoegd aan TPdfView: HighlightSearchText(Text, MatchCase, MatchWholeWord) scant de huidige viewpagina en geeft het aantal gevonden treffers terug, waarbij bij elke hertekening een masker in HighlightColor over elke treffer wordt getekend. ClearHighlight verwijdert de markeringen; bij het wisselen naar een andere pagina worden ze automatisch gewist omdat treffers paginaspecifiek zijn
- HighlightColor staat standaard op clYellow en is published, zodat applicaties de markering kunnen thematiseren naar hun UI-palet
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 129 cases en de C++Builder-suite naar 109 cases, met dekking voor de standaardkleur, kleur round-trip, “echte woordtreffers uit de fixture” tegen de sample.pdf-string en het contract “ontbrekend woord geeft nul treffers”
Version 1.19.0
- De property FitMode is toegevoegd aan TPdfView met vier waarden: pfmNone (handmatige zoom), pfmActualSize (100%), pfmFitPage (de hele pagina past in de viewport) en pfmFitWidth (de paginabreedte valt samen met de viewportbreedte). De actieve fit-modus wordt automatisch opnieuw toegepast bij Resize en wanneer de huidige pagina verandert, zodat lange documenten met gemengde paginaformaten perfect ingelijst blijven
- Zoom rechtstreeks instellen annuleert de actieve fit-modus (FitMode valt terug naar pfmNone), conform de standaardconventie van PDF-viewers waarbij het typen van een zoomwaarde je uit Fit Page / Fit Width laat vallen
- Standaard is pfmNone, zodat bestaande applicaties hun expliciete zoomgedrag behouden
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 124 cases en de C++Builder-suite naar 106 cases, met dekking voor de standaardwaarde, modus round-trip, fit-page die op een geladen document een echte zoom produceert en manual-zoom-cancels-fit-mode
Version 1.18.0
- De property PageColor is toegevoegd aan TPdfView, waarmee de achtergrond van de gerenderde PDF-pagina wordt losgekoppeld van de Color van het omringende control. Standaard is clWhite, dus PDF-pagina's renderen nu als papierwit ongeacht het thema van de hostapplicatie. Dark-mode-viewers kunnen het scrollgebied donker houden terwijl de echte PDF-pagina wit blijft (of elke kleur die de applicatie kiest)
- Gedragswijziging: applicaties die TPdfView.Color instelden om de PDF-pagina te herkleuren moeten voortaan PageColor instellen. De standaardervaring verbetert voor het gebruikelijke geval (witte pagina's op gethematiseerde control-achtergronden) zonder enige codewijziging
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 120 cases en de C++Builder-suite naar 103 cases, met dekking voor de standaardwaarde en kleur round-trip
Version 1.17.0
- Vergrendelschakelaars voor gebruikersinvoer zijn toegevoegd aan TPdfView, zodat applicaties die de viewer inbouwen in kiosks, previewpanelen of alleen-lezencontexten navigatiegebaren kunnen uitschakelen zonder subclassing: AllowUserPageChange regelt de nieuwe sneltoetsen PgUp / PgDn / Ctrl+Home / Ctrl+End; ChangePageOnMouseScrolling regelt de nieuwe paginasprongen bij wiel omhoog / wiel omlaag; AllowUserTextSelection is gereserveerd voor de toekomstige tekstselectie door met de muis te slepen. Alle drie staan standaard op True, dus bestaande applicaties upgraden zonder gedragsverandering
- Paginanavigatie met het muiswiel slaat Ctrl+wiel over, zodat applicaties Ctrl+wiel kunnen blijven reserveren voor zoom
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 118 cases en de C++Builder-suite naar 101 cases, met dekking voor standaardwaarden en toggle round-trip
Version 1.16.2
- De TPdfView-regressiedekking is uitgebreid voor annotatielinkkliks wanneer de viewerpagina verschilt van de gekoppelde TPdf-pagina, met een echte headless muisklikroute in Delphi, Lazarus en C++Builder
- De Delphi- en Lazarus-suites draaien nu elk 114 cases en C++Builder draait nu 99 cases
Version 1.16.1
- De linkklik-afhandeling van TPdfView is opgelost, zodat automatische annotatie- en weblinkacties de pagina gebruiken die de viewer toont, ook wanneer de gekoppelde TPdf-component op een andere pagina staat
- TPdfThumbnailView is verhard tegen zwevende Pdf-verwijzingen wanneer de gekoppelde TPdf-component wordt vernietigd
- Regressiedekking voor de levensduur van thumbnailverwijzingen is toegevoegd; de Delphi- en Lazarus-suites draaien nu elk 113 cases en C++Builder draait nu 98 cases
- README, testdocumentatie, de search/index-inhoud van HTML Help en de gegenereerde C++-pakketuitvoer zijn gesynchroniseerd met de integratie-updates van v1.7.0 tot en met v1.16.0
Version 1.16.0
- Een nieuwe Delphi PrintDialog-demo (Demo/Delphi/PrintDialog) is toegevoegd, gericht op N-up-printen (1 / 2 / 4 / 9 pagina's per vel) met filtering op oneven / even pagina's, grijswaardenrendering en optionele celranden van 1 pixel. Het is een bewust kleine aanvulling op de bestaande PrintPDF-demo, die al preview, recente bestanden, zoom en schaling dekt
Version 1.15.0
- Een nieuw component TPdfThumbnailView (unit FPdfThumbnail) is toegevoegd dat per rij één pagina-thumbnail rendert in een schuifbaar zijpaneel, met hover- en selectiemarkering plus navigatie door te klikken. Ontworpen om naast een TPdfView te staan zodat eindgebruikers door een lang document per pagina kunnen bladeren
- Het component wordt geregistreerd op het palettabblad losLab naast TPdf en TPdfView; kernproperties: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor en het event OnPageClick
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 112 cases en de C++Builder-suite naar 97 cases, met dekking voor standaardwaarden, thumbnailgrootte round-trip, klemmen op extreme waarden, kleur round-trip en het toewijzen van event handlers
Version 1.14.0
- Een nieuwe Delphi BatchExport-demo (Demo/Delphi/BatchExport) is toegevoegd die laat zien hoe je in één keer veel PDF-bestanden naar JPG converteert, met TPdf.LoadCustomDocument voor streaming-laden, IPdfCancellationToken voor coöperatieve annulering en voortgangsbalken per bestand (totaal) plus per pagina. De demo gebruikt één TPdf-instantie per bestand (PDFium zelf is niet thread safe) en opent na een succesvolle extractie de uitvoermap in Explorer
Version 1.13.0
- Een UI-overlay voor asynchroon renderen is toegevoegd aan TPdfView via drie nieuwe properties: AsyncRendering, LoadingText en LoadingColor. Als AsyncRendering True is tekent het single-page paint-pad een kleine “Loading...”-indicator over de gerenderde pagina, zodat applicaties die hun eigen worker inzetten voor lange renders een consistente visuele cue delen
- De standaardwaarden behouden het bestaande gedrag: AsyncRendering staat op False, dus applicaties die niet meedoen zien geen visuele verandering
- De documentatie verduidelijkt dat PDFium zelf niet thread safe is — het renderen echt naar een worker verplaatsen vereist dat de aanroeper één TPdf per worker aanhoudt; de komende batch-exportdemo laat dat patroon zien
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 106 cases en de C++Builder-suite naar 93 cases, met dekking voor standaardwaarden en de round-trip van de drie properties
Version 1.12.0
- Klikgestuurde linkafhandeling is toegevoegd aan TPdfView. De nieuwe property LinkOptions regelt het automatische gedrag voor de vier PDF-linkactietypes: goto (paginasprong), URI (ShellExecute), launch (ShellExecute) en embedded GotoR (gereserveerd). Standaard staan loAutoGoto en loAutoOpenURI aan; loAutoLaunch en loAutoEmbeddedGoto blijven uit, zodat een verdwaalde klik geen willekeurig programma kan starten
- De events OnAnnotationLinkClick en OnWebLinkClick zijn toegevoegd, die vuren vóór elke automatische actie en applicaties de link laten inspecteren, als Handled markeren of omleiden (bijvoorbeeld naar een beveiligingsprompt)
- Linkklikdetectie draait alleen wanneer het gebaar een klik is in plaats van een sleep, met een vers MouseDown-anker zodat panningsgebaren ongewijzigd door de bestaande scrollroute blijven lopen
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 102 cases en de C++Builder-suite naar 91 cases, met dekking voor de standaard LinkOptions, set round-trip en het toewijzen van event handlers
Version 1.11.0
- Visuele verfijning is toegevoegd aan TPdfView: de properties PageShadowSize, PageShadowColor en PageBorderColor tekenen een optionele drop shadow onder de paginarechthoek en een rand van één pixel eromheen. De standaardwaarden behouden de vlakke look van voorheen (PageShadowSize = 0; de rand wordt getekend in de standaardkleur clBlack maar valt samen met de standaard witte achtergrond tot aanroepers de kleuren aanpassen)
- De property SmoothScroll is toegevoegd als opt-in-vlag voor toekomstige incrementele scrollanimatie; de property werkt vandaag al als round-trip en is zó aangesloten dat applicaties de voorkeur kunnen bewaren, terwijl de renderkant nog het bestaande directe scrollgedrag gebruikt
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 98 cases en de C++Builder-suite naar 89 cases, met dekking voor standaardwaarden, property round-trip en de klem op negatieve schaduwgrootte
Version 1.10.0
- Directe afbeeldingsinvoeging is toegevoegd via nieuwe overloads TPdf.AddImage en TPdfView.AddImage die een bestandspad of een TBitmap accepteren, naast de bestaande op TPicture gebaseerde AddPicture. AddImage(FileName) herkent elk formaat dat bij de grafische units van VCL of LCL is geregistreerd (BMP, PNG via de unit PngImage, JPG enzovoort) en volgt dezelfde pipeline als AddPicture, zodat het gedrag identiek is
- AddImage(TBitmap) slaat de TPicture-tussenstap over, wat het eenvoudiger maakt voor aanroepers die al een TBitmap hebben uit rendering- of batchgeneratiewerk
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 92 cases en de C++Builder-suite naar 84 cases, met dekking voor bitmapinvoeging, page-object bounds, het weigeren van een nil bitmap en het laden van BMP-bestanden
Version 1.9.0
- Ondersteuning voor transformatiematrices op hoog niveau is toegevoegd via de nieuwe klasse TPdfMatrix in de unit FPdfMatrix. TPdfMatrix wikkelt FS_MATRIX van PDFium in een OO-API voor Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew en Multiply, geschikt om transformaties samen te stellen voordat ze naar FPDFPageObj_SetMatrix en vergelijkbare PDFium-API's gaan
- TPdfMatrix.Multiply maakt eerst correct een momentopname van de zes matrixelementen voordat de nieuwe rijwaarden worden berekend, waarmee een latent probleem is verholpen waarbij alternatieve Pascal-implementaties binnen dezelfde aanroep eerdere elementen overschrijven en voor elke compositie verder dan puur transleren verkeerde resultaten opleveren
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 88 cases en de C++Builder-suite naar 81 cases, met dekking voor identity, reset, translate / scale / flip, de compositievolgorde bij post-multiplicatie en de Multiply-regressiecase
Version 1.8.0
- Laden van streams op verzoek is toegevoegd via de nieuwe methode TPdf.LoadCustomDocument(AStream, AOwnsStream) en de helperklasse TPdfStreamAdapter, gebouwd op FPDF_LoadCustomDocument van PDFium. PDFium leest blokken uit de meegegeven TStream nu alleen wanneer dat nodig is, zodat zeer grote of externe PDF's geen voorafgaande in-memory kopie meer vereisen
- Optioneel stremeigendom is toegevoegd: met AOwnsStream = True gaat de levensduur van de TStream over naar TPdf, die hem vrijgeeft wanneer UnloadDocument draait
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 79 cases en de C++Builder-suite naar 75 cases, met dekking voor streaming-laden via TFileStream, opschoning van owned streams en het contract dat een extern owned stream een unload overleeft
Version 1.7.0
- Coöperatieve annuleerprimitieven voor async werk zijn toegevoegd in de nieuwe unit FPdfAsync, met IPdfCancellationToken / IPdfCancellationTokenSource en een herbruikbare PdfNoCancellationToken-singleton, zodat langlopende render- en exportworkflows netjes annuleren vanuit de UI kunnen ondersteunen
- Een lichtgewicht helper TPdfFuture<T> is toegevoegd die een worker op een achtergrondthread draait en de TPdfFutureResult<T>-envelop terugpost naar de hoofdthread, met onderscheid tussen succes, annulering en falen
- De Delphi- en Lazarus-regressiesuites zijn uitgebreid naar elk 76 cases en de C++Builder-suite naar 73 cases, met gedeelde dekking voor annuleerstatus, idempotent annuleren, callback fan-out en registratie na annulering
Version 1.6.10
- TPdf.PrintPageRanges is toegevoegd als toegang op hoog niveau tot de PDF viewer preference print page range en geeft one-based paginabereiken terug voor applicatiecode
- TPdf.SetFormFieldFlags / SetFormFieldFlagsAt en bijbehorende TPdfView-helpers zijn toegevoegd, zodat applicaties AcroForm-veldvlaggen via de publieke API kunnen bijwerken, inclusief dekking voor de password- en multi-select-vlaggen
- De ABI-dekking van de PDFium-binding is verhard voor Windows-grootte FPDF_DWORD, FPDF_FILEACCESS-callbacks en V8 embedder slot-velden
Version 1.6.9
- Bindings op laag niveau voor Skia-rendering zijn toegevoegd voor de nieuw geëxporteerde API's FPDF_RenderPageSkia en FPDF_FFLDrawSkia in de meegeleverde standaard- en V8-PDFium-DLL's
- De publieke binding-dekkingscontroles zijn uitgebreid, zodat het laden van de standaard- en V8-DLL nu de Skia render entry points verifieert naast de bestaande V8/XFA-capabilityprobes
Version 1.6.8
- TPdf.SetTextPositions en TPdfSingleArray zijn toegevoegd om per-teken posities in te stellen op bestaande tekstobjecten via de nieuw geëxporteerde API FPDFText_SetPositions
- FPDFText_SetPositions is gepromoveerd tot vereiste binding voor de huidige meegeleverde PDFium-DLL's, waarbij tegelijk is bevestigd dat de Skia render entry points onbeschikbaar blijven omdat de DLL's die nog steeds niet exporteren
- De Delphi-, C++Builder- en Lazarus-regressiesuites zijn uitgebreid naar elk 65 cases met dekking voor tekstposities
Version 1.6.7
- TPdf-toegang op hoog niveau is toegevoegd voor de JavaScript name-tree acties van het document, met namen en scripts van acties via JavaScriptAction en JavaScriptActions
- TPdf.FileIdentifier is toegevoegd om de permanente en changing trailer-ID's te lezen als binaire TBytes zonder de PDFium-terminatorbyte
- TPdf.PageBox, GetPageBox en SetPageBox zijn toegevoegd voor MediaBox, CropBox, BleedBox, TrimBox en ArtBox op de huidige pagina
- Bevestigd dat de huidige meegeleverde PDFium-DLL's op runtime alleen de Skia render entry points onbeschikbaar laten, omdat die exports ontbreken
- De Delphi-, C++Builder- en Lazarus-regressiesuites zijn uitgebreid naar elk 64 cases met dekking voor document-JavaScript, trailer-ID en page box
Version 1.6.6
- Runtime-ondersteuning is toegevoegd voor de meegeleverde V8-enabled PDFium-DLL. EnableV8Engine vóór het laden zetten selecteert nu pdfium.v8.dll uit de DLLs\Win32- of DLLs\Win64-boom en stelt de V8/XFA-only-bindings beschikbaar zodra de geladen DLL die aanbiedt
- V8FeaturesAvailable, XfaBStrHelpersAvailable en GetRecommendedV8Flags zijn toegevoegd, plus optionele bindings op laag niveau voor FPDF_BStr_*, FPDF_GetRecommendedV8Flags en FPDF_GetArrayBufferAllocatorSharedInstance
- FPDFText_SetPositions is optioneel gemaakt, zodat PDFium Delphi Component blijft laden met PDFium-DLL's die die experimentele tekstpositie-setter niet exporteren
- De Delphi-, C++Builder- en Lazarus-regressiesuites zijn uitgebreid naar elk 61 cases met capability-dekking voor de standaard-DLL en de V8-DLL