PDFium Delphi Component versionsinformation
Versionshistorik för användarsynliga funktioner, korrigeringar, visarförbättringar, dokumentgenerering, PDF/A-utdata, rendering och dokumentationsuppdateringar i PDFium Delphi Component.
Senaste utgåva
- Senaste version: 3.137.1; Utgivningsdatum:
Version 3.137.1
Fixat (Fixed)
- OpenSSL:s onlinekontroller av återkallning bevarar föregående CRL-status, -orsak, nativt fel och berört certifikat när OCSP-bevis eller responder saknas, så att diagnostiken för utgångna CRL:er förblir korrekt
Version 3.137.0
Tillagt (Added)
- Nativa Free Pascal/LCL-byggen stödjer Linux Qt6 och macOS Cocoa med plattformsanpassad teckensnittsuppslagning, privat temporärlagring, dokumentinläsning, redigering, formulär, sparning och rendering
- macOS Keychain-signering stödjer uppslag i lokal nyckelring och avgränsad offlineexport av certifikatkedjan, med nativa Free Pascal- och Delphi-signerings- och tidsstempeltransporter
- Parallell rendering rapporterar varje arbetares faktiska modulsökväg, initieringsadress och urladdningsresultat, och avvisar nativa laddare som återanvänder en befintlig PDFium-image
Fixat (Fixed)
- Unix-bindningarna för PDFium bevarar LP64-unsigned-long-bredder i callbacks och buffertar, inklusive anpassade strömavläsningar över 4 GiB
- Nativ LCL-rendering respekterar bitmappens byteordning och kanalupplägg och bevarar färger i Cocoa-utdata och rendering mot enhetskontext
- Bitmap-, tile- och progressiv rendering bevarar alfa för transparent bakgrund för clNone och clDefault oberoende av den nativa frågan om sidtransparens
- Signering identifierar certifikatens algoritmer för publik nyckel korrekt, inklusive EC-nycklar; macOS CMS-verifiering bevarar oberoende resultat för yttersignatur och tidsstempel och rapporterar explicit om RSA-PSS-verifiering inte stöds
- PAdES-validering av tidsstämplar kräver en kritisk, exklusiv id-kp-timeStamping-EKU; OpenSSL utvärderar enkla TSA-kedjor utan att felaktigt tillämpa ett S/MIME-certifikatändamål
- Atomiska filcommits i Unix behåller den nya inkrementella baslinjen när en katalogspolning misslyckas efter ersättning, och exponerar undantaget för committad utdata samt resultatet med ofullständig varaktighet
Ändrat (Changed)
- Delphi POSIX-futures accepterar standardtrådprioritet och avvisar begäranden om prioritet som inte stöds innan en arbetare startas
Version 3.136.0
Tillagt (Added)
- Valfria LittleCMS ICC-transformeringar och dokumentfärgkonvertering använder originaltext, vektorer och 8- eller 16-bitars bildkomponenter, bevarar valda spotfärger och rapporterar explicit om innehåll som inte stöds
- Komplex svartning bevarar innehåll som stöds i kapslade Form XObjects, fyllda krökta banor och roterade, speglade eller skeva bilder, med ändliga geometribudgetar och detaljerade borttagningsrapporter
- Läsning av aktiva objekt exponerar oberoende budgetar för objektkropp och komprimerade objektströmmar innan materialisering och avkodning
Säkerhet (Security)
- Svartning vägrar Tagged-ersättningstext, XFA, lager för valfritt innehåll, textklippning och overifierbara målningstillstånd, inklusive operatorer uppdelade över innehållsströmmar, och förhindrar export av semantik för känsligt innehåll som inte stöds
Version 3.135.0
Tillagt (Added)
- Jämförelse av annoteringar och AcroForm-widgets rapporterar egenskapsändringar oberoende av sidpixlar, med stabila namn, explicita sidmappningar, tvetydighetsrapporter och före/efter-gränser för överlägg
- Tabellceller stödjer blandade textstilar och bilder med alternativ text, valfri fortsättning över sidor via spännande celler, delsummorader och fortsättningsetiketter samtidigt som Tagged PDF-relationerna bevaras
Fixat (Fixed)
- Generering av Tagged-layout initierar det nativa biblioteket innan kapabiliteterna kontrolleras, så att det kan bli den första operationen på en ny dokumentkomponent
- Flera ersättningar i ett textobjekt anpassas en gång mot dess ursprungliga gränser, vilket driver igenom den totala minsta horisontella skalan och undviker onödiga mellanliggande redigeringar
Version 3.134.0
Tillagt (Added)
- Navigationssammanslagning bevarar namngivna mål och interna sidlänkar genom valda, omsorteraade och upprepade sidor, med explicita kollisionspolicyer och transaktionell verifiering
- Ersättning av formaterad text lägger till verifierade källplaner, oberoende förhandsvisningar, återanvändning av nativa teckensnitt, explicit återgång, avgränsad horisontell anpassning och återställning efter misslyckade eller avbrutna redigeringar
- OpenSSL-signering accepterar explicit konfigurerade privata nycklar och certifikatkedjor för RSA-PSS, RSA PKCS#1 v1.5 och ECDSA, inklusive standarduppslagning av signerare utanför Windows
- OpenSSL-verifiering lägger till autentiserat offlinebevis och avgränsat onlinebevis för OCSP, identiteter för fallerande certifikat och valfri diagnostik för varje CMS-signerare
- FPC macOS-verifieraren via Security.framework rapporterar oberoende utfall för kryptografi, kedjetillit och återkallning, med explicita trust anchors och tillhandahållet OCSP-bevis
Fixat (Fixed)
- Extraktion av URI från länkannoteringar levererar hela den nativa bufferten, inklusive avslutstecknet, så att giltiga mål returneras korrekt
Version 3.133.0
Tillagt (Added)
- Transaktionell sammanslagning av AcroForm stödjer valda sidor, avvisning av fält, namnbyte, namnrymder och kompatibla delade text-/valfält, med isolerade resurser, utseenden och beräkningsordning
- Valfri streckkodsleverantör genererar Code128, QR, DataMatrix och PDF417 och känner igen gråskalebilder, med explicita nativa beroenden och ändliga bearbetningsbudgetar
Fixat (Fixed)
- FormField läser ärvda föräldravärden och committar textredigeringar konsekvent över delade widgets, med bestående värden vid sparning/återöppning och kontroller av skrivskydd
- Regenerering av utseende för ärvda textwidgets återställer deras föräldravärden utan att lämna kvar ett skuggwidgetvärde, och lyckad fältilldelning ogiltigförklarar delade sidcachar
Version 3.132.0
Tillagt (Added)
- Valfri sidjustering identifierar infogade, borttagna och flyttade sidor, med avgränsade Unicode-textändringar, sammanhängande visuella regioner och exporterbara jämförelseöverlägg
- Transaktionell sammanslagning av navigering bevarar dispositionshierarkin, stilarna, URI-åtgärderna och de ommappade målen genom valda, upprepade och omsorterade sidimporter
- Valfri Tesseract OCR-leverantör stödjer explicit beroendediagnostik, Unicode-ordgeometri, avbrytning och igenkänningsbudgetar, med sparning av sökbart lager och verifiering vid återöppning
Säkerhet (Security)
- RSA-PSS-policyn utvärderar kompletta signatur- och begränsade parametrar för publik nyckel och avvisar felformad DER samt inkompatibla begränsningar för hash, mask, salt eller trailer
Fixat (Fixed)
- Verifieringen av dispositionssparing avvisar inte längre lövbokmärken på grund av en skillnad i expanderat tillstånd som bara gäller grenar
Version 3.131.0
Tillagt (Added)
- WatermarkStamp accepterar nu mål- och stämpel-PDF:er, ett sidintervall för målet samt utdata med enbart sidnummer, med proportionell placering för blandade sidstorlekar
- MergePDF förhandsvisar nu varje indatas valda sidor och målintervall före sammanslagning, och stödjer en enda indata för sidutdrag
Fixat (Fixed)
- MergePDF validerar varje källa före import och stannar vid oläslig indata, ogiltiga intervall, misslyckade importer eller avbrytning i stället för att spara en ofullständig sammanslagning
- WatermarkStamp bevarar sina käll- och mallfiler och sparar sidnumren pålitligt även när båda stämpelöverläggen är avstängda
Ändrat (Changed)
- Varje nativ demokatalog har fokuserats kring 22 kompletta arbetsflöden, och SecurityAudit och XfdfLab har flyttats till Miscellaneous, med korrigerade projektsökvägar och navigering
Borttaget (Removed)
- Den fasta genomgången i AnnotationsLab har tagits bort; skapande, inspektion och utbyte av annoteringar täcks fortfarande av XFDF- och innehållsextraktionsexemplen samt API-testerna
Version 3.130.0
Ändrat (Changed)
- Varje nativ demokatalog har kuraterats kring 24 kompletta arbetsflöden, med nio fokuserade API-ämnen under Miscellaneous och separat vägledning för att välja en första demo
- Fokuserade exempel för annoteringar, tillgänglighet, typsnitt, navigering, textexport, rendering av sidbilder, utskriftsinställningar, interaktion och XFA finns kvar med egen källkod och medföljande indata
Borttaget (Removed)
- De minimala projekten CJKTextLab och RTLTextLab har tagits bort; Unicode-skrivning är fortfarande tillgänglig i CreatePDF, och API:erna för formad text är fortfarande dokumenterade i API-referensen
Fixat (Fixed)
- Korrigerade C++Builder-genomgången av tillgänglighets-API:erna som misslyckades när dess uppläsningsskript exporterades
- Korrigerade C++Builder-annoteringsexemplet som använde felaktiga arrayoffsets för markeringskoordinater
Version 3.129.0
Ändrat (Changed)
- Alla nativa demoer gjordes självbärande: exempelogiken flyttades in i de projekt som använder den, showcase-PDF:er paketerades med de relevanta visnings- och extraktionsprojekten, och katalogen Demo/Shared togs bort
- Offlinerundturer, direkta förhandsvisningar, redigerbara formulär, ifyllda rapporter, bilagor, navigering, utskriftsinställningar och statisk XFA-inspektion fungerar fortfarande när projekten kopieras var för sig
- FontProperties öppnas nu med faktiska typsnitts- och teckenmått redan visade, och analyserar omedelbart det första textobjektet efter att ett annat dokument öppnats
Fixat (Fixed)
- Upplevelseradens placering och bakgrund i PDFViewer enhetliggjordes mellan de nativa varianterna, och FontProperties släpper nu sin koppling till visaren innan programmet stängs
Version 3.128.0
Tillagt (Added)
- En sexsidig demo-showcase för offline-bruk har lagts till, med riktig text, vektordiagram, inbäddade bilder, en tabell, AcroForm-fält, bokmärken, länkar, annoteringar och bilagor
- Enklicksupplevelser för textsökning, tvåsidiga layouter, nattläsning, dokumentinspektion och formulärutforskning har lagts till i alla nativa PDFViewer-varianter
Ändrat (Changed)
- CreatePDF öppnar nu en direkt förhandsvisning med två sidor, redigerbar metadata och innehållsalternativ, riktiga bild- och annoteringsobjekt och en valfri Unicode-sida innan resultatet sparas
- Fokuserade exempel för visning, sökning, extraktion, formulär och navigering öppnas nu med ifyllda arbetsflöden; bilage-, utskriftsinställnings- och statiska XFA-exempel innehåller verkliga funktionsspecifika data
Fixat (Fixed)
- Korrigerade visarens livscykel och fokushantering under uppstart, dokumentbyte, omgenerering av förhandsvisning och nedstängning
- Korrigerade värderedigeraren i Lazarus-versionen av FormFill som förblev inaktiverad efter att det första fältet markerades vid uppstarten
- Korrigerade SearchAndSelects dokumentbindning och extraktionsrapporter som hoppade över formulärfält på senare sidor eller försökte läsa filhuvuden som inte finns för genererade exempel i minnet
Version 3.127.0
Ändrat (Changed)
- MultiPageViewer-demona använder visarens inbyggda API:er för textmarkering och urklipp, vilket håller markeringen konsekvent mellan sidlayouterna och tar bort det separata markeringsläget vid dubbelklick
- Exempelguiden kopplar alla 35 demoämnen till sina skilda arbetsflöden, och konsolvecxemplen för tillgänglighet, intake och förhandskontroll i Delphi och Lazarus delar sina Pascal-implementeringar
Tillagt (Added)
- XfdfLab kan spara PDF:en efter XFDF-import: Delphi-GUI:n erbjuder Save PDF, och konsolvarianterna tar emot en explicit andra sökväg för utdata
Fixat (Fixed)
- C++Builder- och Lazarus-demona för MultiPageViewer öppnas utan formuläregenskaper som saknar stöd, och alla MultiPageViewer-demona kopplar från sitt dokument innan formuläret stängs
- Arbetsbänken för tillgänglighet i Lazarus genererar JPEG-miniatyrbilder av sidorna till sin HTML-granskningsrapport
- ExtractImages-demona skapar ett tvåsidigt exempel som innehåller riktiga inbäddade bildobjekt, så att standardflödet för extraktion producerar fyra bilder
- Konsolvecxemplet för XFDF tur och retur bevarar annoteringarnas innehåll och författardata och avvisar motstridiga eller redan befintliga sökvägar för PDF-utdata innan något skrivs
Version 3.126.2
Fixat (Fixed)
- Fullständig XFA-visning fungerar med standardinställningarna för textmarkering, ersätter markerad text vid tangentbordsinmatning, respekterar skrivskyddade fält och avstängda formulärhändelser samt uppdaterar visade sidhandtag efter dynamiska layoutändringar
- Windows V8-biblioteken avvisar felformulerade XDP-attribut, dubbletter av attribut, ogiltig namespace-användning och felmatchade XML-deklarationer innan den sparade XFA-strömmen ändras
Säkerhet (Security)
- Signaturrevisionsanalysen bevarar ägarskapet för sidinnehållet när widgets och appearance-objekt refererar till samma objektgraf, vilket hindrar senare sidredigeringar från att godtas som tillåtna formulär- eller annoteringsuppdateringar under DocMDP
- FieldMDP-lås förblir effektiva när ett låst fält och en annotering delar samma indirekta värdeobjekt
Version 3.126.1
Fixat (Fixed)
- Dynamisk XFA-ompaginering uppdaterar nu
TPdf.PageCountochOnXfaPageCountChangedmed det faktiska totala sidantalet efter att sidor lagts till eller tagits bort, så att värdprogrammets navigering hålls synkroniserad med formulärlayouten - De uppdaterade Windows V8-biblioteken uppdaterar geometrin för inmatningswidgets efter dynamiska XFA-layoutändringar, vilket håller text och träffområden för inmatning justerade när fält flyttas till en annan sida
Version 3.126.0
Tillagt (Added)
- De uppdaterade V8-biblioteken för Win32 och Win64 bevarar XML-kommentarer och processing instructions utanför aktiva dataset och formulärpaket vid sparande av single-stream XFA-dokument som stöds, inklusive UTF-8- och UTF-16-indata
Fixat (Fixed)
- Single-stream XFA-sparande avvisar ogiltig UTF-8- eller UTF-16-kodning, ofullständiga taggar, ogiltiga entity-referenser och felformulerade processing instructions i stället för att tyst skriva om sådana indata; konstruktioner som inte stöds i aktiva datapaket, DTD-deklarationer och XMLDSig ger fortfarande ett explicit sparfel
- Visarens kopiera, klipp ut och formulärklistra försöker kort igen när en annan tråd eller applikation håller Windows-urklippet, så att tillfällig konkurrens hinner klinga av; ett misslyckat klipp ut bevarar fortfarande fältets ursprungliga text
Version 3.125.3
Fixat (Fixed)
- De uppdaterade vanliga
pdfium.dll-biblioteken för Win32 och Win64 rapporterar nu fel när den sista buffrade PDF-skrivningen misslyckas, i linje med korrigeringen som tidigare levererades i V8-biblioteken
Version 3.125.2
Fixat (Fixed)
- De uppdaterade Windows V8-biblioteken bevarar redigerad XFA-text genom sparande och återöppnande, inklusive tomma värden, ursprungliga blanksteg, radbrytningar och kompletterande Unicode-tecken, för paketarrayer och single-stream XDP-dokument som stöds
- Exportfel för XFA-paket och fel i den sista buffrade skrivningen rapporterar nu sparfel i de uppdaterade V8-biblioteken, utan att rensa dokumentets modifieringstillstånd; single-stream-dokument som innehåller XML-konstruktioner eller XML-signaturer som inte stöds avvisas
- De uppdaterade V8-biblioteken bevarar ett värdprograms explicit angivna V8-plattform och isolate genom PDFium-initiering och nedrivning
- En explicit sökväg i
LibraryNameväljer nu exakt den runtimen i båda motorlägena, inklusiveEnableV8Engine=True; saknas den explicita sökvägen misslyckas inläsningen i stället för att läsa in ett annat medföljande bibliotek
Version 3.125.1
Fixat (Fixed)
ValidatePdfFilesParallelkorrumperar inte längre den delade PDFium-motorn: arbetstrådar öppnade och granskade tidigare dokument parallellt, vilket fick vissa dokument att misslyckas med inläsningsfel eller åtkomstöverträdelser och kunde krascha processen eller förstöra senare PDF-operationer; PDFium-delen av varje dokument bearbetas nu en i taget medan regelutvärderingen fortfarande körs parallellt- Ett dokument som inte kan öppnas under batchvalidering rapporterar nu det faktiska inläsningsfelet i stället för ett efterföljande meddelande om "inget aktivt PDF-dokument"
Version 3.125.0
Tillagt (Added)
PdfLibraryConfigurationSupportErroranger huruvida enTPdfLibraryConfigurationkan användas med en PDFium-build med givna Skia- och Fontations-funktioner
Fixat (Fixed)
- Att begära
prpSkiapå en PDFium-build utan Skia, ellerpfbpFontationspå en build utan Fontations, får nu biblioteksinläsningen att kastaEPdfErrori stället för att träffa en nativ kontroll som stoppade processen eller lämnade PDFium halvinitierat; konfigurationen förblir osealerad så att applikationen kan välja andra inställningar och läsa in igen
Version 3.124.0
Ändrat (Changed)
- PAdES-valideringen tillämpar nu ETSI TS 119 312-signatursviterna på RSA-signaturer i stället för att acceptera varje RSA-algoritm:
AlgorithmPolicyStatusärpcsInvalidför MD2-, MD4- och MD5-digests ochpcsIndeterminateför SHA-1 och 112-bitars digests som SHA-224, som inte längre godtas för aktuell validering; SHA-1-signaturer behåller sitt övergripande integritetsresultat och flaggas för granskning i stället för att avvisas - En RSA-signatur vars
digestAlgorithmskiljer sig från den digest som signaturalgoritmen fastställer (till exempel sha256WithRSAEncryption över en SHA-1-digest) rapporteras nu somppeiSignatureAlgorithmMismatchoch underkänns på integritet, liksom RSA-signaturalgoritmer på en signerarnyckel som inte är RSA - RSA-signaturer vars signerarcertifikat inte kan hittas rapporterar nu
pcsIndeterminate, i linje med det befintliga ECDSA-beteendet; okända digests och RSA-OID:er som inte är signaturalgoritmer rapporterarpcsUnsupported - RSA PKCS #1 v1.5-signaturer med SHA3-digests och den äldre OIW-identifieraren sha1WithRSASignature känns nu igen som RSA
Version 3.123.0
Tillagt (Added)
PdfNativeRendererTypeanger vilken renderare enTPdfRendererPreferenceväljer för en given PDFium-build, därprpDefaultlöses till Skia för runtimes med Skia aktiverat och till AGG annars
Fixat (Fixed)
- Att aktivera
BrotliEnabledellerIsolatePerDocumentiConfigurePdfLibrarybyter inte längre rendering från Skia till AGG när renderarinställningen lämnas påprpDefault; de medföljande runtimes med Skia aktiverat behåller nu sin standardrenderare, så att sidutdata inte längre ändras av dessa orelaterade alternativ
Version 3.122.2
Fixat (Fixed)
- Free Pascal- och Lazarus-builds skickar nu filnamn och lösenord till PDFium som UTF-8 i alla inläsningsvägar (fil, minne, egen ström och progressiv inläsning), så att dokument i mappar med kinesiska, japanska eller andra namn som inte är ASCII, och krypterade dokument med lösenord som inte är ASCII, öppnas även när programmet inte använder Lazarus UTF-8-strängläget
Version 3.122.1
Fixat (Fixed)
LastLoadReportersätts nu vid varje misslyckad inläsning: en misslyckadActive:= True, som lämnar komponenten inaktiv utan att kasta något undantag, och misslyckade direkta anrop avLoadDocumentellerLoadCustomDocumentrapporterarplsFailedmed feltexten, så att batchkod som återanvänder en endaTPdfinte längre ser den föregående filen rapporterad som inläst- Hjälpsidan för
Activebeskriver nu det faktiska felbeteendet (inget undantag, komponenten förblir inaktiv, detaljer iLastLoadReport) och attFileNamebara kan ändras medan komponenten är inaktiv
Version 3.122.0
Tillagt (Added)
EPdfAssocFilesErroriFPdfAssocFilesanger varförInjectAssociateFilesinte kunde injicera: ingen läsbar trailer eller katalog i källan, eller enTargetPagesom är negativ eller namnger en sida som inte finns; målströmmen lämnas oändrad
Ändrat (Changed)
SaveAsWithAssociateFilesochSaveAsWithAssociateFilesToStreamkastar nuEPdfErrornärTAssocFilesOptions.TargetPageligger utanför0..PageCount; sådana värden bifogades tidigare till dokumentkatalogen i stället, i strid med det dokumenterade beteendet
Fixat (Fixed)
SaveAsWithAssociateFilesochSaveAsWithAssociateFilesToStreamreturnerar nuFalsenär det sparade dokumentet inte kan tolkas för injicering, i stället för att skriva det oändrat och returneraTrueutan de begärda filernaSaveAsWithAssociateFilestrunkerar inte längre en befintlig målfil innan utdata har producerats; ett avvisat eller misslyckat spara lämnar filen orörd
Version 3.121.4
Fixat (Fixed)
- Associerade filer på sidnivå (
TAssocFilesOptions.TargetPage) bifogas nu till sidan på den positionen i dokumentets sidordning; filer kunde tidigare hamna på en annan sida när sidobjekt lagrats i filen i en annan ordning än de visas, till exempel efter att sidor sorterats om eller lagts in
Version 3.121.3
Fixat (Fixed)
- Associerade filer som sparas med
SaveAsWithAssociateFilesbehåller nu kinesiska, japanska och andra filnamn och beskrivningar som inte är ASCII intakta:/UFoch/Descskrivs som Unicode-PDF-textsträngar i stället för att konverteras via systemets ANSI-kodsida (Delphi) eller skickas ut som råa UTF-8-byte (Free Pascal) - Det äldre
/F-filnamnet är nu alltid portabelt utskrivbart ASCII, med tecken som inte är ASCII ersatta av_, så att läsare som avkodar/Fmed sin egen kodsida inte längre visar mojibake
Version 3.121.2
Fixat (Fixed)
- Associerade filer kodar nu MIME-typer som giltiga PDF-namn, så att värden som
text/plaininte längre ger felaktigt utformade embedded-file-dictionaries eller blockerar PDF/A-3-valideringen
Version 3.121.1
Fixat (Fixed)
- Att läsa en annotering och skriva tillbaka ändringar skapar inte längre tomma rollover- och down-appearance-strömmar när dessa strömmar saknas, vilket bevarar PDF/A-kraven på annoteringarnas appearance
Version 3.121.0
Tillagt (Added)
- OpenSSL CMS-verifieringen kan hämta HTTP(S)-AIA-mellancertifikat och CRL:er när
OnlineRetrievalär aktiverat, med delad timeout och gränser för både requeststorlek och svarstorlek; hämtade certifikat förblir obetrodda tills den konfigurerade förtroendekedjan validerar dem - Online-hämtningen använder WinHTTP på Windows och tillgänglig libcurl på FPC Unix, bevarar HTTPS-certifikatvalideringen och exponerar transportkonfigurationer som inte stöds via den befintliga kapacitetsdiagnostiken
Fixat (Fixed)
- Återuppbyggnaden av klassiska korsreferenser allokerar sin utdatastabell en gång och fyller objektplatserna direkt, vilket undviker kvadratiskt arbete vid stora, glesa objektnummer samtidigt som parserns resursgränser och de senaste objektgenerationerna bevaras
- PDF/X-1a-utdata kräver en strukturellt giltig ICC v2 CMYK-skrivarprofil i stället för att tyst bädda in standard-RGB-profilen; ogiltiga profiler misslyckas innan en befintlig målfil öppnas för ersättning
- PDF/X-1a-valideringen kontrollerar den inbäddade profilen och dess fyrkomponentsdeklaration, och preflight-rapporterna identifierar ogiltiga utdataprofiler; standardetiketterna för output condition följer den tillhandahållna profilen medan explicita anroparetiketter bevaras
Version 3.120.4
Fixat (Fixed)
- Batchläget i tabellextraktionsdemon bearbetar alla PDF-filer i mappen igen: den delade dokumentinstansen hölls aktiv över filerna, så andra och senare filer kastade ett tilldelningsfel och rapporterades som misslyckade; varje dokument får nu sin egen instans i Delphi-, Lazarus- och C++Builder-utgåvorna
- Vattenstämpeldemons exempeldokument behåller sina sidor i skapandeordning (1, 2, 3, 4) i stället för att flytta första sidan till slutet via ett insert-at-index-anrop
- XFA- och XFDF-demon rapporterar en misslyckad dokumentöppning som ett meddelande i stället för ett ohanterat undantag, bilagedemon kan starta ett nytt dokument när ett redan är laddat, och Lazarus-visaren frigör bitmappen den sparar
- Delphi-utskriftsdemon tillämpar nu kontrollerna för orientering, duplex, gråskala, kvalitet och DPI på utskriftsjobbet, respekterar antalet kopior som valts i utskriftsdialogen, hoppar över sidor som inte går att rendera och återställer förhandsgranskningen efter utskriften
- Interaktiva demor vars inläsare sväljer öppningsfel visar inte längre ett vilseledande inläst läge, extraktionsutdatafilerna har en UTF-8-BOM, CJK- och RTL-konsoldemon växlar konsolen till UTF-8 innan extraherad text skrivs ut, och konfidensinmatningen tolkar decimaltal oberoende av systemets regioninställningar
- PAdES-tidsstämpeltestet verifierar nu på riktigt att valideraren når nivå B-T efter injektion av signaturtidsstämpel, med ett självkonsistent ByteRange-testdokument
- API-täcknings- och PDF/A-testerna behandlar inte längre ett godtyckligt inläsningsfel som ett miljöhoppp när pdfium.dll är laddad, och ett nytt regressionstest täcker dekryptering av dokument vars strängvärden serialiserats som literala strängar av tredjepartsverktyg
Version 3.120.3
Fixat (Fixed)
EncryptDocumentBytestappar inte längre alla objekt i basrevisionen när käll-PDF:en sparats inkrementellt: den klassiska korsreferenskedjan gås nu igenom via/Prevnyaste först med senaste posten vinnande, källan avvisas när den redan är krypterad, ettstream-nyckelord måste stänga en dictionary innan det behandlas som strömdata, och det sista objektets omfattning avgränsas av källans xref i stället för den förstaendobji dess bytes- Krypterade dokument vars strängvärden serialiserats som literala strängar, skapade av tredjepartsverktyg, dekrypteras nu i stället för att misslyckas med ett autentiseringsfel
- PDF/E-markörinjektionen numrerar inte längre den syntetiserade Info-dictionaryn identiskt med den inbäddade ICC-profilströmmen när källans trailer saknar
/Info, vilket fick den inkrementella xref:en att peka/DestOutputProfilepå fel objekt - PDF/X-valideringen jämför XMP-värdet
pdfxid:GTS_PDFXVersionmed omgivande blanksteg borttrimmat, så regelrätt utfylld elementform-XMP rapporterar inte längre en falsk Info-avvikelse - PDF/UA-valideringen känner igen attributformulärs-XMP:n
pdfuaid:part, expanderar objektströmmar före sina byteskanningar som de övriga standardsvalidatorerna, kontrollerar krypteringens/P-bit för korsreferensströmsdokument också, och kräver ett icke-tomtdc:title-värde; markörinjektionen emitterar inte längre en tom titelpost - PDF/VT-markörinjektionen samlar inte längre in och skriver om varje sidobjekt två gånger när källan bär en trasig DPart-hierarki som underkändes i valideringen efter att sidlistan redan fyllts
- Signering på PAdES-nivå B-T eller högre utan
TsaUrlutlöser nu ett undantag i stället för att tyst producera en B-B-signatur, och B-LTA-dokumenttidsstämpeln härleder sin egen nonce i stället för att skicka anroparens igen - Injektionen av CMS-signaturtidsstämpel avvisar indata med flera signerare i stället för att tyst kasta varje SignerInfo efter den första, SignedData-versionen blir 3 med ett subjectKeyIdentifier-sid,
certReq FALSEutelämnas från tidsstämpelbegäranden enligt DER, och ett WinHTTP-transportfel mitt i brödtexten rapporteras som ett transportfel i stället för en avkortad DER-brödtext - Inbäddning av systemtypsnitt löser upp det faktiska TrueType Collection-ansiktet för det begärda familjenamnet och extraherar det som ett fristående typsnitt, så att ett anrop som begär ett annat ansikte än det första i en
.ttc(till exempel NSimSun) inte längre bäddar in och renderar ansikte 0 BuildToUnicodeCMapparar glyfer med surrogatparcharacter rätt och emitterar kompletterande mappningar som bfchar-poster, i stället för att förskjuta varje post efter det första astrala tecknet- Insättning av formgiven text, CID-text och OCR kontrollerar sidinsättningsresultatet innan objektet registreras för återrullning, så att en misslyckad insättning inte längre kan lämna ett hängande handtag som skulle förstöras två gånger
- Detektering av stream-nyckelordet i kompressorn och ToUnicode-reparationen accepterar det ensamma CR-radslut som ISO 32000-1 7.3.8.1 tillåter
Ändrat (Changed)
- Trial-Win64x C++Builder-paketbygget tar bort en inaktuell COFF-
PDFiumPas.libsom lämnats av en tidigare fullständig bygge, så att de två importbiblioteksvarianterna inte kan skeppas tillsammans, FULL-installationsprogrammet utesluter lokala utvecklingsfiler (packagefiles.xml, statusdokument) ur sin säkerhetsnätregel, och demobyggena efter installationen låser IDE-roten via variabelnPDFiumPas_BDS_ROOT, som byggscripsten faktiskt läser
Version 3.120.2
Fixat (Fixed)
- Text placerad med
AddText,SetText, layoutgenereringen och OCR-söklagret extraheras nu med sina exakta kodpunkter såväl ur det aktiva dokumentet som efter en sparning: mellanslag kommer inte längre tillbaka som U+00A0 och bindestreck inte längre som U+00AD med det aktuella PDFium-bygget - Systemtypsnitt bäddas in som CID-fonts nycklade på kodpunkt, med ett CID per Unicode-tecken och en explicit
CIDToGIDMap, så att en glyf som delas av flera tecken (mellanslag och hårt mellanslag, bindestreck och mjukbindestreck, Omega och Ohm-tecknet) återspeglas troget för vart och ett i valfri visare; typsnitt utan en Unicode-cmap-subtabell behåller den tidigare inbäddningsvägen
Version 3.120.1
Fixat (Fixed)
- Dokument sparade med subset-fonts förstör inte längre sin extraherade text vid ominläsning: den ToUnicode-CMap som pdfium serialiserar kunde mappa ett CID till två olika kodpunkter (mellanslag som U+00A0, bindestreck som U+00AD), och varje fullständig sparning reparerar nu de motsägelsefulla mappningarna på plats medan CMap-strukturen lämnas byte-identisk, så att PDFium-läsaren, MuPDF och qpdf alla extraherar de ursprungliga tecknen
- Inkrementella sparningar, sparsamma uppdateringar och korsreferensströmsdokument skrivs aldrig om av reparationen och passerar oförändrade; filer utan motsägelsefull mappning kopieras byte för byte
- Det incheckade testmönstret
sample.pdfregenererades via den reparerade sparvägen, och inläsningspolicy-testerna hittar nu xref-poster dynamiskt i stället för att hårdkoda fasta offset
Version 3.120.0
Tillagt (Added)
- Bokmärken rapporterar sin konturtextstil:
TBookmark.Stylebär kursiv- och fetflaggorna som läses via den nyaFPDFBookmark_GetStyle-bindningen, ochBookmarkStyleFeaturesAvailabletalar om ifall den inlästa pdfium.dll exporterar den - Bilagor exponerar sin PDF 2.0-relation för associerade filer:
AttachmentRelationship[], fältetRelationshipiTPdfAttachmentMetadataoch iTPdfAnnotationAttachmentläser namnet/AFRelationshipvia den nyaFPDFAttachment_GetAFRelationship-bindningen, skyddad avAttachmentRelationshipFeaturesAvailable GetObjectRenderedStrokePatternrastrerar tiling-mönstret som ett sökvägsobjekt streckas med till en bitmap som anroparen äger via den nyaFPDFPageObj_GetRenderedStrokePattern-bindningen;StrokePatternRenderingFeaturesAvailablerapporterar exportenTPdfLibraryConfiguration.IsolatePerDocumentmappar till flagganm_IsolatePerDocumentiFPDF_LIBRARY_CONFIGversion 7, så att V8-byggen kan ge varje dokument sitt eget isolate;ConfigurePdfLibraryavvisar flaggan tillsammans med en explicitV8Isolate
Ändrat (Changed)
- Alla 476 publika exporter i de aktuella PDFium-huvuderna är bundna; de tre nya ingångspunkterna binds med tolerant inläsning, så att distributioner med en äldre pdfium.dll fortsätter fungera och motsvarande funktioner rapporterar tomma resultat eller
nil
Version 3.119.1
Fixat (Fixed)
- Windows offline-tillitsvalidering begränsar också återkallningshämtningen till cachad data, vilket hindrar underförstådda CRL- eller OCSP-nätverksbegäranden när onlinehämtning är avstängd
- Windows-återkallningsfel bevarar det oberoende kedjetillitsfelet och exponerar återkallningsorsaker och nativ diagnostik till PAdES-resultat och evidensrapporter
Version 3.119.0
Tillagt (Added)
- PAdES-tillitsvalideringen och evidensrapporterna exponerar separata återkallningsorsaker och nativa fel för dokumentsignaturer och tidsstämplar, inklusive JSON-fält och tillagda CSV-kolumner
Version 3.118.0
Tillagt (Added)
- CMS-verifieringsresultaten exponerar
RevocationReasonochRevocationError, med OpenSSL-diagnostik för utgångna, otillgängliga och ogiltiga lokala CRL:er
Fixat (Fixed)
- OpenSSL rapporterar uttryckligen återkallade certifikat som ogiltiga när kedjetilliten lyckas och den lokala CRL-verifieringen bekräftar återkallningen, medan separata signatur- och tillitsresultat bevaras
Version 3.117.1
Fixat (Fixed)
- Sparningar med explicit version accepterar giltiga flersidiga formulär med prediktor komprimerade korsreferensströmmar i stället för att felaktigt rapportera en felformad korsreferenssektion
Version 3.117.0
Tillagt (Added)
- Tabellidentifieringen läser ramar och skuggning ritade som fyllda rektanglar: en fylld ruta som inte är tjockare än den nya
MaxRulingThicknessblir en linje och en större fylld ruta bidrar med sina kanter, så att tabeller exporterade från Word, Google Docs och webbläsare nu hittas som linjerade rutnät med sammanslagna rubrikrader i stället för blankstegsfragment.DetectFilledRulingsstänger av beteendet - Linjekoordinater snäpps in inom
RulingSnapToleranceinnan rutnäten byggs ihop, vilket förenar per-cell-ramdelar, dubbla ramar och skuggade celler åtskilda av ett litet mellanrum till en tabell - Linjer inuti form XObjects deltar i identifieringen via de kombinerade objektmatriserna, styrt av
IncludeFormXObjects ExtractDocumentTableslänkar ihop fortsättningsfragment som slutar där sidans innehåll slutar och återupptas där nästa sidas innehåll börjar, inte bara fragment som nuddar sidkanterna, och behåller en enskild rad som spillt över som en del av sin kedja- TableExtractionLab exponerar
DetectFilledRulingsi sin alternativpanel i Delphi-, Lazarus- och C++Builder-varianterna
Ändrat (Changed)
- Blankstegsidentifieringen ignorerar ord som redan tillhör ett linjerat rutnät och kräver att varje kolumngräns är en textfri korridor över de rader den skiljer åt, så marginaljusterade stycken och punktlistor rapporteras inte längre som tabeller
- En fortsättningskandidat vars första rad är en cell över hela bredden behandlas som en ny tabell med rubrik i stället för som resten av den föregående
MinRowsaccepterar 1 för linjerade rutnät; blankstegsidentifieringen behåller sitt minimikrav på två rader, och standardbudgeten förMaxRulingSegmentshöjs till 16384 eftersom per-cell-ramrutor anländer i betydligt större antal än ritade rutnätslinjer- Celltexten byggs upp rad för rad från överlappande ordlådor, så att ord vars glyflådor skiljer sig i höjd behåller sin ordning från vänster till höger
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata rapporterar 3.117.0
Version 3.116.4
Tillagt (Added)
- TableExtractionLab får mappvis batchbearbetning:
Batch folderkörExtractDocumentTablesöver varje PDF i en vald mapp, listar tabellantal per dokument, markerar dokument utan textlager för OCR och ser till att skadade eller låsta filer inte avbryter körningen Export all CSVskriver varje detekterad tabell som<document>-<n>-page<p>-t<i>.csvunder en undermapptablesvid batchkörningar, eller bredvid det laddade dokumentet för en enstaka fil- En väljare för identifieringspresenter exponerar avstämda
TPdfTableExtractionOptions: Default, Compact columns (MinColumnGap4 medAlignmentTolerance5 för täta exporter från ordbehandlare) och Compact + wide rows (MaxRowGapFactor6 för radavstånd 1.5-2x) - Dokument som inte ger någon tabell med Default-preseten försöks en gång till med Compact columns i både enstaka dokument och batchextraktion, och batchraderna redovisar vilken preset som gav resultatet
Fixat (Fixed)
- Batchextraktionen öppnar varje dokument i sin egen
TPdf-instans i stället för att läsa in en delad komponent igen, vilket tar bort tysta inläsningsfel som dök upp som fel om inaktiva komponenter mitt i en mappkörning
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata rapporterar 3.116.4
Version 3.116.3
Ändrat (Changed)
- TableExtractionLab-exemplet i alla tre verktygskedjor skriver nu sitt genererade exempeldokument till
TableExtractionSample.pdfbredvid demoprogramfilen i stället för att bara behålla det i minnet; när mappen inte är skrivbar faller labben tillbaka till det tidigare minnesbaserade beteendet och rapporterar det i statusraden TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar 3.116.3
Version 3.116.2
Fixat (Fixed)
- Biblioteket slutade kompilera på äldre Delphi-utgåvor. 64-bitars tick-hjälpfunktionen och XML-kodekarna för betrodd lista och produktion anropade
GetTickCount64ochCP_UTF8från RTL-units som bara nyare kompilatorer har dem i; reflow-HTML-skrivaren bäddade in en CSS-strängliteral som överskrider gränsen på 255 element som dessa kompilatorer lägger på en enda literal; och sammanslagningen av XFA-datamängder gjorde tilldelningar mellanTBytesoch ett vanligt dynamiskt arrayfält, vilket kompilatorer före XE7 avvisar. Äldre kompilatorer binder nuGetTickCount64från kernel32 och deklarerarCP_UTF8lokalt när RTL inte gör det; stilmallen levereras som sammanfogade korta literaler och paketets payload kopieras elementvis
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar 3.116.2
Version 3.116.1
Tillagt (Added)
Demo\Delphi\TableExtractionLab,Demo\CBuilder\TableExtractionLabochDemo\Lazarus\TableExtractionLabgör tabellidentifiering till ett enda arbetsflöde. Labben bygger ett exempeldokument med en linjerad tabell med sammanslagna rubrikceller, en tabell utan linjer som är justerad med blanksteg och en lång tabell som bryts över en sidgräns, kör sedanExtractTablesellerExtractDocumentTablesoch listar rader, kolumner, span, rubrikflaggor, identifieringsläge, konfidens och fortsättningsgrupper- Labben exporterar den valda tabellen via
TPdfTable.ToCsvochTPdfTable.ToJson, ändrarDetectRuledTables,DetectWhitespaceTables,DetectContinuationsochMinConfidencefrån alternativpanelen och kopierar hela rapporten till urklipp TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata rapporterar 3.116.1
Version 3.114.21
Fixat (Fixed)
- PDF/A-validering rapporterade en extern filreferens för varje dokument som innehöll en annotering. ISO 19005-1 §6.1.7 förbjuder
/F,/FFilteroch/FDecodeParmsi en strömobjektordbok, men kontrollen sökte i hela filen efter de namnen, och/Fär också annoteringsflagnyckeln som §6.5.3 kräver att varje annotering bär. Kontrollen söker nu bara inuti strömobjektordböcker
Version 3.114.20
Fixat (Fixed)
- RSASSA-PSS-signaturer bar felformade algoritmsparametrar i alla tre signeringsbackends. RFC 4055 kräver att alla fyra fält i RSASSA-PSS-params medföljer; saltlängden skrevs som ett naket heltal, som en parser läser som början på ett annat fält, och det avslutande fältet skrevs ut trots att dess värde är detsamma som det standardvärde DER kräver ska utelämnas. En verifierare misslyckades antingen med att tolka parametrarna eller föll tillbaka till standardsaltet på 20 byte medan signaturen använde 32, så PSS-signaturer avvisades. PKCS#1 v1.5- och ECDSA-signaturer påverkades inte
Version 3.114.19
Fixat (Fixed)
- En begäran om tidsstämpel med annan digest än SHA-256 byggde en förfrågan som deklarerade den algoritmen men bar en SHA-256-digest, vilket en tidsstämpelauktoritet antingen avvisar eller, värre, tidsstämplar som den är. Endast SHA-256 beräknas, så alla andra identifierare avvisas nu rakt av; en tom identifierare väljer fortfarande SHA-256 som standard. PDF Viewer-exemplet för Lazarus och C++Builder band också en hanterare för bokmärkesexpansion som dess formulärfil namnger men som dess kod inte definierar, vilket misslyckas när formuläret läses in; hanteraren är portad från Delphi-exemplet
Version 3.114.18
Fixat (Fixed)
- XFA Lab- och XFDF Lab-exemplen för Delphi samt XFA Lab-exemplet för Lazarus misslyckades vid uppstart. Var och en bygger sina kontroller i formulärets create-hanterare, men formulärresursen fanns varken med eller var länkad, så att skapandet av huvudformuläret gav ett resource-not-found-fel och hanteraren kördes aldrig. Alla tre medför nu formulärfilen och direktivet som bäddar in den
Version 3.114.17
Fixat (Fixed)
- Två inbyggda resurser hanterades felaktigt när en operation misslyckades halvvägs. En miniatyrbildsrendering som misslyckades frigjorde målbitmappen innan den inbyggda renderingen stängdes, och när renderingen ritade rakt ner i själva bitmappens pixlar läste nedrivningen minne som redan hade frigjorts. En misslyckad bitmap-allokering i
AddBitmaplämnade bildobjektet den just hade skapat utan ägare och utan något sätt att nå det igen
Version 3.114.16
Fixat (Fixed)
- Läsning av FDF-text gav fel tecken över
0x7E. PDFDocEncoding-tabellen i ISO 32000-1 bilaga D.2 börjar på0x80med bullet-tecknet, men mappningen startade den på0x7F, så hela blocket fram till0x9Fvar förskjutet ett steg: en dagger lästes som en bullet, ett em dash som en ellipsis och så vidare ner till zcaron, som föll bort helt. Eurotecknet på0xA0saknades också och kom tillbaka som ett obrytbart blanksteg. Fältnamn och fältvärden i importerad FDF avkodas nu korrekt
Version 3.114.15
Fixat (Fixed)
- Förtroendevalidering av ett dokument vars trailer eller katalog inte kan läsas skrev förbi slutet på en array. Efterlevnadssteget ger upp utan att registrera några signaturer i det fallet, medan insamlaren som körs sedan arbetar direkt på byteströmmen och fortfarande kan hitta signaturordböcker, så det skrevs en post per hittad ordbok in i en array som inte innehöll någon. Antalet begränsas nu till vad efterlevnadssteget producerade
Version 3.114.14
Fixat (Fixed)
- Att köra en PDF/A-reparationsplan tillämpade steg som planeraren hade blockerat. Ett steg är blockerat när dokumentet bär signaturer, steget skulle ogiltigförklara dem och anroparen inte tillät det; utföraren kontrollerade bara stegets säkerhetsnivå, som inte uttrycker villkoret, så ett signerat dokument kunde få sina signaturer ogiltigförklarade av en automatisk reparation som planen redan avvisat. Blockerade steg hoppas nu över och räknas som överhoppade
Version 3.114.13
Fixat (Fixed)
- Att lägga till en signaturtidsstämpel till ett CMS-värde vars certifikatuppsättning var större än 127 byte, vilket är varje verkligt certifikat, korrumperade resultatet. Hjälpfunktionen som lokaliserar början på en nästlad struktur gick baklänges över längdoktetterna och tog den sista för den första, så utsnittet den skar började långt före strukturen den frågades efter. Huvudlängden härleds nu ur innehållslängden, något DER anger entydigt. Självkontrollerna missade det eftersom deras fixture-certifikat var små nog att använda kortformen
Version 3.114.12
Fixat (Fixed)
- Signerade attribut avsändes i den ordning de byggdes i stället för sorterade efter sina kodningar, vilket X.690 §11.6 kräver av en DER SET OF. En verifierare som omkodar attributuppsättningen innan den hashar den, som både OpenSSL och BouncyCastle gör, beräknade därför en annan digest och rapporterade en korrekt PAdES-signatur som ogiltig. Signaturer som detta bibliotek producerar verifieras nu i dessa stackar; validering via Windows-lagret påverkades inte eftersom den hashar byte i den form de tas emot
Version 3.114.11
Fixat (Fixed)
- En negativ DER INTEGER bredare än två innehållsbyte kodades med fel värde. Skrivaren emulerar ett aritmetiskt skifte genom att återinföra talets tecken efter ett logiskt skifte, men masken den använde satte alla bitar över lågbytet i stället för endast den byte som skiftet lämnat ledigt, så den magnitud som fortfarande hölls i de återstående delarna av värdet skrevs över. Värdet -100000 kodades till exempel som -34464. Noncevärden i tidsstämpelförfrågningar och alla andra signerade heltal av den storleken kodas nu korrekt
Version 3.114.10
Fixat (Fixed)
- PDF/A-validering rapporterade aldrig den konstanta alfa-delen av transparensregeln i ISO 19005-1 §6.4. Hjälpfunktionen bygger sin söknyckel genom att sätta ett solidus framför, och anroparen skickade med en också, så den sökte efter
//CAoch matchade inget. Båda alfa-kontrollerna accepterade också bara exakt texterna1och1.0, vilket flaggade/CA 1.00med fullt opak alfa som överträdelse; ett värde på ett känns nu igen oavsett stavning
Version 3.114.9
Fixat (Fixed)
- URI-åtgärden på sidnivå returnerade förvanskad text. Sökvägen kommer tillbaka från det inbyggda lagret som UTF-8-byte och skrevs rakt in i en bred sträng, vilket parar ihop byte till 16-bitars kodenheter och lämnar resten av bufferten fylld med vilket minne som råkade finnas där.
GetPageActionURIavkodar nu byte på samma sätt som hanteringen av åtgärden på dokumentnivå redan gjorde
Version 3.114.8
Säkerhet (Security)
- På andra mål än Windows kom de slumpmässiga byte bakom varje krypteringsnyckel, salt och initieringsvektor från körtidens PRNG, vars frö är en konstant om inte programmet anropar
Randomize. Varje process producerade alltså samma filkrypteringsnyckel, samma/UE- och/OE-salter, samma/Perms-byte och samma AES-GCM-noncevärden, vilket gör krypterad utdata från ett Free Pascal-bygge på Linux eller macOS trivial att återställa och återanvänder en GCM-nonce med fast nyckel. Dessa byte kommer nu från/dev/urandom, och en otillgänglig kärnpool kastar undantag i stället för att falla tillbaka, som en otillgängligCryptGenRandomredan gjorde på Windows
Version 3.114.7
Fixat (Fixed)
- En felformad objektström kunde få komprimerings- och reparationsingångarna att läsa förbi slutet av den avkodade bufferten. Medlemsoffseten en ström deklarerar kontrolleras nu för intervall och stigande ordning så snart huvudet är tolkat, ett deklarerat medlemsantal större än vad huvudet kan rymma avvisas innan något minne reserveras, och varje medlems byte-intervall valideras innan dess avslutande blanksteg trimmas i stället för efteråt
Version 3.114.6
Fixat (Fixed)
- Externalisering av inlinebilder gav en oanvändbar bild-XObject. Ordboken skrevs med ett löst solidus före sin första nyckel, vilket öppnade ett tomt namn och sköt varje nyckel över på föregående nyckels värde, och inline-förkortningstabellen mappade Decode till
Gi stället förD, så en/D-array tappades och DeviceGray-värdeförkortningen togs för en nyckel. Bilder som lyfts ut ur en innehållsström bär nu en välformad ordbok och behåller sin Decode-array
Version 3.114.5
Fixat (Fixed)
- HarfBuzz-shapern tilldelade klusterlängder till fel glyfer i runs från höger till vänster och gav glyfer som delar ett kluster, till exempel diakritiska tecken och ligaturkomponenter, längden ett. Varje glyfs
ClusterLengthspänner nu från dess klusterstart till nästa kluster i logisk ordning, i båda riktningarna, så att tecken-till-glyf-mappning för arabisk och hebreisk text stämmer med vad Uniscribe-backend rapporterar
Version 3.114.4
Fixat (Fixed)
- libcurl-tidsstämpeltransporten skickade sina numeriska alternativ och läste HTTP-statuskoden som 32-bitars tal, medan libcurl tar och returnerar en C
long, som är 64 bitar på Linux och macOS. Statusfrågan kunde skriva över de fyra byte intill sitt mål på stacken, och alternativvärdena berodde på vad den övre halvan av registret råkade innehålla. Båda använder nu plattformenslong-bredd, såFPdfTsaFpcär felfri på LP64-mål
Version 3.114.3
Fixat (Fixed)
- PKCS#11-backend kopierade råa byte från en tokenobjektetikett rakt in i en sträng, vilket på Delphi landar UTF-8-byte på UTF-16-kodenheter. Ett certifikat som valts via
TPdfPkcs11Options.CertificateLabelkunde därför aldrig matcha, ochEnumerateCertificatesrapporterade förvrängdLabelText. Etiketter avkodas nu som den UTF-8 som standarden definierar, och PIN-koden som lämnas tillC_Loginkodas som UTF-8 i stället för att smalnas av via värdens kodsida, så en PIN med tecken utanför ASCII når tokenen intakt
Version 3.114.2
Fixat (Fixed)
- macOS Keychain-signeraren frågade
SecKeyIsAlgorithmSupportedom fel operation när den bestämde om en nyckel accepterar RSASSA-PSS: frågan namngav dekrypteringsoperationen i stället för signering, så svaret var alltid nej och varje RSA-signatur föll tyst tillbaka till PKCS#1 v1.5. En nyckel som stöder PSS signerar nu med PSS somTPadesSignerOptions.PaddingSchemebegär, och operationsargumentet skickas med den bredd ramverket deklarerar
Version 3.114.1
Fixat (Fixed)
- Nästlade parentespar i text från höger till vänster löstes till fel riktning. UAX #9-regeln BD16 behandlar par i den ordning deras öppningsparenteser framträder, och ett par som löses av N0 blir det föregående starka sammanhanget för ett par som öppnas efter det; paren behandlades i stället i den ordning deras avslutande parenteser avslutade dem, så ett inre par kunde följa bokstaven det omsluter i stället för sammanhanget som det yttre paret etablerat. Text som en arabisk eller hebreisk mening med en parentetisk inskjutning med en nästad parentes läggs nu upp som en läsare förväntar sig
Version 3.114.0
Tillagt (Added)
FPdfCryptoSslverifierar PDF-signaturer och tidsstämpeltoken genom OpenSSL, vilket stänger den sista plattformsluckan i signaturvalidering: Linux hade ingen CMS-verifieringsbackend alls.ConfigureSslCmsVerifierinstallerar den, libcrypto löses upp efter namn vid körtid så att ingenting länkas mot den, och både 1.1- och 3.x-serierna binder- Signaturen och certifikatkedjan utvärderas i separata pass, så en korrekt signatur under en kedja som inte når ett förtroendeankare rapporteras som en giltig signatur med ogiltigt förtroende i stället för som en trasig signatur
ConfigureSslTrustAnchorslägger till DER-förtroendeankare i systemarkivet, ochConfigureSslCrlstillhandahåller de CRL:er en återkallningskontroll kan rådfråga. Återkallning räknas som kontrollerad bara när en CRL faktiskt finns, eftersom OpenSSL inte hämtar några på egen hand; utan tillhandahållna CRL:er rapporterar resultatet unsupported i stället för att släppa igenom en okontrollerad kedjaSslAvailable,SslMissingSymbols,SslLibraryPath,SslLibraryVersionochSslAbiLayoutrapporterar vad som band och vad som inte gjorde det, ochConfigureSslLibraryPathpekar backend på ett specifikt bibliotek när plattformens standardvärden inte hittar något
Version 3.113.0
Tillagt (Added)
TPdfKeychainCmsVerifierverifierar PDF-signaturer och tidsstämpeltoken på macOS genomCMSDecoderoch SecTrust, så signaturvalidering inte längre är enbart för Windows.ConfigureKeychainCmsVerifierinstallerar den, och samma unit täcker nu båda halvorna av macOS-stödet på samma sätt somFPdfCryptoWingör för Windows- Återkallningskontroll efterlevs: när det begärs läggs en återkallningspolicy till den grundläggande X.509-policyn, och att stänga av onlinehämtning begränsar utvärderingen till cachade svar. Förloppskontrollpunkter utlöses för stegen signatur, kedja, onlinehämtning och återkallning exakt som Windows-backend rapporterar dem
KeychainVerificationAvailablerapporterar verifieringsstöd skilt från signering, eftersom de två behöver olika ramverkssymboler och den ena kan finnas utan den andra
Version 3.112.0
Tillagt (Added)
FPdfCryptoMacsignerar PAdES med en macOS Keychain-identitet, motsvarigheten till Windows certifikatarkiv: certifikatet och dess privata nyckel kommer från Keychain och signaturen produceras avSecKeyCreateSignature, så nyckeln lämnar aldrig systemets nyckellager.ConfigureKeychainSignerProviderinstallerar den, och ingen modul behöver distribueras vid sidan av programmet som en PKCS#11-tokenbackend skulle behöva- Signeraren följer certifikatet: en EC-nyckel signerar ECDSA, en RSA-nyckel signerar RSASSA-PSS, och där PSS inte är tillgängligt – en äldre macOS eller en nyckel som inte accepterar det – faller paddingen tillbaka till PKCS#1 v1.5 och den emitterade AlgorithmIdentifier anger det i stället för att påstå PSS
KeychainMissingSymbolslistar alla ramverkssymboler som inte kunde lösas upp, så en distribution som rapporterar backend som otillgänglig kan skilja ett saknat ramverk från ett namn som denna bindning fått fel
Version 3.111.0
Tillagt (Added)
ConfigurePadesCmsVerifierinstallerar den CMS-verifieringsbackend som PAdES-valideraren använder, så signatur- och tidsstämpelverifiering inte längre är bunden till Windows.IPdfCmsVerifierdeklarerar de två operationer en backend svarar på – fristående för en PDF-signatur, bifogad för en tidsstämpeltoken – ochPadesCmsVerificationAvailablerapporterar om någon backend finns
Ändrat (Changed)
- Posterna för verifieringsresultat och alternativ har flyttats till
FPdfCryptosomTPdfCmsVerify*.TWinCmsVerify*-namnen finns kvar som alias, så befintlig kod fortsätter fungera och en inkopplad backend talar samma typer som Windows-backend - Windows-beteendet är oförändrat: utan någon installerad verifierare används fortfarande CryptoAPI, och förloppskontrollpunkterna, återkallningsalternativen och de inbyggda felkoderna är desamma. Där ingen backend svarar rapporterar varje omdöme unsupported i stället för att lämnas okontrollerat
Version 3.110.0
Tillagt (Added)
FPdfPkcs11signerar PAdES med en nyckel som stannar inne i en PKCS#11-token.ConfigurePkcs11SignerProviderinstallerar den som signeringsbackend, modulen läses in vid körtid via en sökväg så att ingenting länkas, och samma kod fungerar för Windows, Linux och macOS. Den tokenuppräkning som gränssnittetIPdfPkcs11SignerProviderdeklarerar är implementerad tillsammans med den: slots, tokens och de certifikat som var och en håller- Signering utanför Windows behöver inte längre en värdlevererad provider för det vanliga fallet: en tokenmodul plus
TPdfPkcs11Optionsräcker. RSA PKCS#1 v1.5, RSASSA-PSS och ECDSA produceras alla genom token FPdfSha1lägger till SHA-1 för ett enda syfte: att matcha ett certifikat mot det tumavtryck somTPadesSignerOptionsbär. Windows löste det inne i certifikatarkivet; en token lämnar tillbaka certifikatbyte och överlåter matchningen till anroparen. Det är inte en signeringsdigest och PAdES-stacken fortsätter signera SHA-256 genomgående
Ändrat (Changed)
- Certifikat-DER-hjälpfunktionerna som läser en algoritm-OID för publik nyckel, extraherar utfärdare och serienummer och slår in en rå ECDSA-signatur på nytt har flyttats från Windows-backend till
FPdfCms, där varje signeringsbackend kan nå dem
Version 3.109.0
Ändrat (Changed)
- Den inbyggda biblioteksladdaren fungerar inte längre bara på Windows.
LibraryNamefår som standardpdfium.dll,libpdfium.soellerlibpdfium.dylibför målet, V8-bygget letas upp under det matchande namnet och inläsning och symbolbindning går genom den portabla laddaren på Free Pascal. Windows-beteendet är oförändrat, inklusive distributionslayouten för Win32 och Win64 och diagnostiken vid arkitekturmismatch - Distributionskataloger på andra mål följer
<cpu>-<os>-stavningen som de kompilerade unit-filerna redan använder, så attDLLs/x86_64-linux/libpdfium.soligger bredvidLib/FPC/x86_64-linux. Reserven till systemkatalogen gäller fortfarande bara på Windows; på andra plattformar täcker laddarens sökvägsökning det
Version 3.108.0
Tillagt (Added)
TPdfHarfBuzzTextShaperformger tvåriktad text och text i komplexa skript på Free Pascal-mål utan Uniscribe. Den löser inbäddningsnivåerna medFPdfBidi, delar upp runs per skript, formger varje run med libharfbuzz och placerar runs i visuell ordning. Installera den medConfigureTextShaper; libharfbuzz slås upp vid körning ochHarfBuzzAvailablerapporterar ärligt om den saknas- Formaren räknar inte upp typsnitt. Uniscribe läser typsnittets binärdata ur en device context, vilket inte har någon portabel motsvarighet, så värdprogrammet skickar med en
TPdfFontDataResolversom mappar ett typsnittsnamn till typsnittsfilens byte och som låter den policyn ligga där den hör hemma
Version 3.107.0
Tillagt (Added)
FPdfBidiimplementerar Unicode Bidirectional Algorithm (UAX #9) i ren Pascal:PdfResolveBidiLevelsreturnerar en inbäddningsnivå per UTF-16-kodenhet,PdfBidiVisualOrdertillämpar L2-omordningen ochPdfBidiClassOfexponerar Bidi_Class för en kodpunkt. Reglerna P2-P3, X1-X10, W1-W7, N0-N2, I1-I2 och L1-L2 omfattas, inklusive isolate-initierare och BD16-parentespar- Uniten är kompilator- och plattformsneutral, vilket är det som gör att tvåriktad text kan läggas ut där Uniscribe inte finns tillgängligt. En formningsmotor löser glyfer för en run vars riktning redan är känd, så detta är den bit som måste bestämma riktningen först
Version 3.106.0
Tillagt (Added)
ConfigureTextShaperinstallerar den textformningsbackend som hela biblioteket routar igenom, medActiveTextShaper,ActiveTextShaperNameochClearTextShapervid sidan om. BådeShapePdfTextochTPdf.AddShapedTextanvänder nu den installerade formaren i stället för att skapa en Uniscribe-formare direkt, så att ett värdprogram kan tillhandahålla sin egen motor och ett test en deterministisk
Ändrat (Changed)
FPdfTextShapingkompilerar på mål utanför Windows: Uniscribe-backend är nu plattformsförval i stället för den enda implementationen, och den är begränsad till Windows-bygget. Där ingen backend finns tillgänglig rapporterar formningens startpunkter det i stället för att kompilera fel
Version 3.105.1
Säkerhet (Security)
- Ett tidsstämpelsvar avgränsas nu till 4 MB på båda transporterna. En TSA som fortsatte skicka kunde tidigare låta mottagarbufferten växa utan gräns, vilket gjorde ett signeringsanrop till obegränsad minnestillväxt
Version 3.105.0
Tillagt (Added)
- RFC 3161-tidsstämpling fungerar på Free Pascal-mål utanför Windows: den nya libcurl-backend postar TimeStampReq och läser TimeStampResp, så
PadesTsaAvailablerapporterar True och PAdES B-T, B-LT och B-LTA kan hämta tokens där. libcurl slås upp vid körning och är inte något byggtidsberoende; när den saknas rapporterar backenden otillgänglig precis som WinHttp-backend gör. Windows fortsätter att använda WinHttp och påverkas inte - Signering på de målen kräver fortfarande nyckelmaterial som biblioteket inte äger: leverera det via
ConfigurePadesSignerProvidermed enIPadesSignerProvider(ellerIPdfPkcs11SignerProviderför tokenbaserade nycklar), eftersomFPdfCryptoWinbara finns för Windows
Version 3.104.1
Tillagt (Added)
- XFA-inspektionslabben finns nu även som exempel för Lazarus, så att XFA-funktionsproberna, paketlistningen, paketexporten och
OnXfaRuntimeMissing-reserven kan provas från LCL-bygget
Version 3.104.0
Ändrat (Changed)
- Biblioteket kompilerar utan undvikbara diagnostikmeddelanden på Free Pascal 3.2: intern tidsmätning läser millisekundtick från
GetTickCount64i stället för det föråldrade 32-bitsanropet, de föråldrade SSE-kontrollordsaccessorerna har ersatts medGetMXCSRochSetMXCSR, offsetbasen för innehållsfingeravtrycket är explicit typad så att den inte längre utlöser en range check vid kompileringen, och scanline-adresser jämförs som teckenlösa pekare när en bitmap kontrolleras för top-down-layout
Version 3.103.1
Fixat (Fixed)
- Dokumentmetadata som förs in i XMP behåller sina icke-ASCII-tecken på Free Pascal: titlar, författare, ämnen, nyckelord och skaparnamn som når
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRochSaveAsPdfVTkonverteras nu via strängens codepage i stället för att kopieras byte för byte, så att metadatapaketet förblir giltig UTF-8 som ISO 19005-1 6.7.2 kräver, även när värdprogrammet inte kör på en UTF-8-codepage - XFDF-export, round-trips för produktionsmetadata och XML-tolkning av trusted lists använder samma codepage-korrekta konvertering, så att text som rör sig mellan
TBytesochstringinte längre beror på värdprogrammets codepage
Version 3.103.0
Tillagt (Added)
TPdfEuropeanTrustedListtolkar autentiserade europeiska trusted lists, läser om kontrollsummerade cachar genom samma autentiserare, accepterar uppdateringskällor från anroparen, exponerar aktuella trust anchors och utvärderar kvalificerade signaturtjänster vid en begärd valideringstidTPadesTrustValidationOptions.QualifiedTrustEvaluatortillämpar en offline-policy för kvalificerat förtroende på varje validerad undertecknare utan att lägga till nätverksåtkomst i PAdES-valideraren
Version 3.102.0
Tillagt (Added)
BeginIncrementalSaveochCommitIncrementalSavelägger nu till autentiserade revisioner i AES-256-krypterade dokument samtidigt som den ursprungliga/Encrypt-referensen, säkerhetsparametrarna, exakta objektgenerationer och tidigare byte bevaras
Ändrat (Changed)
- Överlagringen för filcommit spolar nu beständigt till disk och återöppnar strikt en sidofil i samma katalog, verifierar dess revisionsgräns och ersätter målet atomiskt samtidigt som sessionen rullas tillbaka efter varje fel
Version 3.101.0
Ändrat (Changed)
SaveAsRedactedbevarar nu säkra delar av delvis överlappande text, rektangulära path-objekt och axelriktade bilder och tar sedan bort resursnamn som inte längre refereras av sida, Form XObject, pattern, appearance eller kapslade resursomfång
Version 3.100.0
Ändrat (Changed)
OptimizeImagesväljer nu box-, bilinear-, bicubic-, Lanczos- eller bilevel-resampling utifrån skala, innehållsklass, uppmätt detaljrikedom och anroparens kvalitetsnivå, med alfa-medveten filtrering och en strikt arbetsminnesbudget
Version 3.99.0
Tillagt (Added)
GraftPdfAcroFormimporterar hierarkiska AcroForm-fält, widgets, appearances, beräkningsordning, standardresurser, actions och värden genom explicita sidmappningar och kollisionspolicyerTPdfCrossDocumentGraftMapåteranvänder importerade indirekta objekt efter källidentitet och bevarar samtidigt cykler, delade referenser, exakta källgenerationer och transaktionellt felbeteende
Version 3.98.0
Tillagt (Added)
TPdfOutlineEditorskapar, flyttar, tar bort, utformar, expanderar och ändrar mål för bokmärkesposter, mappar om explicita destinationer genom sidplansresultat och lägger till en oberoende verifierad inkrementell revision
Version 3.97.0
Tillagt (Added)
TPdfTreeEditorläser, validerar, uppdaterar, balanserar, delar, sammanfogar, serialiserar och sparar inkrementellt godtyckliga PDF NameTree- och NumberTree-strukturer samtidigt som återanvändbara indirekta referenser och råa postvärden bevaras
Version 3.96.0
Tillagt (Added)
TPdfParserResourceBudgettillhandahåller en trådsäker processpolicy för rekursion, tokens, objekt, avkodade byte, expansionsförhållande, allokering och deadlines över egna PDF-parsers, med oföränderliga ögonblicksbilder per operation och konfigurerbara standardvärden
Version 3.95.0
Ändrat (Changed)
ValidatePdfXvaliderar nu aktiva PDF/X-ordböcker, metadata, output intents, typsnitt, förbjudna funktioner, transparens, färgrymder och sidboxar genom avgränsade sparse-läsningar på okrypterade dokument med giltig xref
Version 3.94.0
Ändrat (Changed)
ValidatePdfRvaliderar nu aktiva PDF/R-ordböcker, sidor, bildfilter, metadata och sidfotsmarkörer genom avgränsade sparse- och fönsterläsningar på okrypterade dokument med giltig xref
Version 3.93.0
Ändrat (Changed)
ValidatePdfEvaliderar nu aktiva PDF/E-ordböcker, metadata, output intents, formulär och förbjudna funktioner genom avgränsade sparse-läsningar på dokument med giltig xref
Version 3.92.0
Ändrat (Changed)
ValidatePdfVTutför nu avancerad analys av omfång, synlighet, inkapsling och användning av kapslade Form för återkommande XObject via avgränsade sparse-läsningar på dokument med giltig xref
Version 3.91.0
Tillagt (Added)
TPdfSparseDictionaryReaderkan lösa ett objekts aktiva generation och avkoda en direkt ström inom en byte-gräns som anroparen anger
Ändrat (Changed)
ValidatePdfVTanvänder nu avgränsade sparse-läsningar för kontroller av PDF/VT-metadata, DPart, OutputIntent, Info, sidor och vanliga ordböcker på den normala sökvägen med giltig xref
Version 3.90.0
Tillagt (Added)
TPdfSparseDictionaryReaderhåller ett sparse xref- och objektströmsindex öppet för upprepade avgränsade läsningar av indirekta objektsordböcker
Ändrat (Changed)
InjectPdfVTMarkersvaliderar och bevarar nu en befintlig PDF/VT DPart-hierarki med avgränsade källäsningar, medan felformade hierarkier fortsätter genom reservvägen med återuppbyggnad
Version 3.89.0
Tillagt (Added)
ReadPdfSparsePageDictionariesreturnerar sidobjektidentiteter och avgränsade ordboksbyte i sidträdsordning via sparse-objektindexet
Ändrat (Changed)
InjectPdfVTMarkerssyntetiserar nu PDF/VT DPart-hierarkin och lägger till markörobjekt med avgränsade källäsningar när den sparade PDF:en inte redan innehåller en DPart-hierarki
Version 3.88.0
Tillagt (Added)
ReadPdfSparseCatalogSubDictläser en direkt eller indirekt katalogunderordbok via sparse-objektindexet och används av PDF/UA-markörinjektion förMarkInfoochViewerPreferences
Ändrat (Changed)
InjectPdfUaMarkersslår nu upp katalogensMarkInfoochViewerPreferencesvia sparse-uppslag och lägger till PDF/UA-revisionen med avgränsade källäsningar på den normala xref-sökvägen
Version 3.87.0
Tillagt (Added)
AppendPdfSparseUpdateskriver en sparse-revision strömvis ovanpå en sparad PDF: källbyte oförändrade, objektkroppar från anroparen på registrerade offset och ett enda inkrementellt xref-/trailerblock som kedjas via/PrevNormalizePageViewRectnormaliserar två mappade hörn i sidrymden till den synliga rektangel som begränsas av sidan, eller rapporterar att inget av sidan är synligt- PDF/E-markörinjektion syntetiserar ett nytt Info-objekt med
/ISO_PDFEVersionnär källdokumentet saknar en Info-ordbok
Ändrat (Changed)
- PDF/E-, PDF/X- och PDF/R-markörinjektion slår nu upp katalogen, Info och trailern via sparse-uppslag och lägger till revisioner via
AppendPdfSparseUpdatemed avgränsade källäsningar på den normala xref-sökvägen - Formulärifyllnings-callbacken
FFI_GetPageViewRectrapporterar nu den del av sidan som faktiskt är synlig i den anslutnaTPdfViewi stället för alltid hela sidboxen, med fall tillbaka till sidmåtten för headless-dokument TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.87.0
Fixat (Fixed)
- Path-segmentens kontrollpunkter, som har exponerats sedan bindningen
FPDFPath_GetBezierControlPoints, fylldes aldrig: den inbyggda exporten svarar bara för ändpunktindexet för varje kubisk bezier med tre poster, så frågan görs nu en gång per kurva och alla tre poster bär kurvans kontrollpunkter
Version 3.86.0
Tillagt (Added)
ReadPdfSparseRevisionInfoexponerar avgränsade uppgifter om senaste revision, katalog, kryptering, dokument-ID och taggad struktur för strömpostprocessorerComposePdfSparseUpdateIdbevarar eller härleder dokumentidentifierare för inkrementella uppdateringar utan att materialisera hela käll-PDF:en
Ändrat (Changed)
InjectPdfAMarkersslår nu upp katalogen och trailern via sparse-uppslag, kopierar stora indata i avgränsade delar och lägger till PDF/A-revisionen utan att allokera en byte-array i källstorlek på den normala xref-sökvägen- PDF/A-markörinjektion bevarar klassisk utdatastil eller xref-strömsstil, katalog- och Info-generationer, traileridentifierare, beteendet att vägra kryptering och reglerna för nedgradering till Level A
Version 3.85.0
Tillagt (Added)
SanitiseActiveContentPdfStreamaccepterar en anroparägd rensningsarbetsyta för anpassad avgränsad eller diskbaserad lagring
Ändrat (Changed)
- Sanitering av aktivt innehåll uppdaterar nu katalogen och trailern via sparse-uppslag, avgränsade parserfönster och intervallkopiering i fast storlek i stället för att läsa in hela PDF:en i en enda byte-array på den normala xref-sökvägen
TPdf.SaveAsSanitisedtillämparSaveMemoryLimitochSaveTemporaryDirectorypå sin rensningsarbetsyta och rapporterar dess spilldiagnostik
Fixat (Fixed)
StripMetadata=Truetar nu bort en/Info-referens i trailern även när katalogen saknar en/Metadata-post
Version 3.84.0
Ändrat (Changed)
TPdf.PdfVersionåteranvänder nu PDFiums parsertillstånd viaFPDF_GetFileVersioni stället för att tolka om hela käll-PDF:en- Versionsfrågor läser som mest PDF-huvudets åtta byte för att hindra en felformad katalogdeklaration från att nedgradera den effektiva versionen
Version 3.83.0
Ändrat (Changed)
PageLabelledPdfStreamlöser nu och uppdaterar katalogen genom avgränsade strömfönster och det glesa lazy-objektindexet- Utdata av sidetiketter kopierar stora käll-PDF:er i intervall med fast storlek i stället för att allokera en komplett dokumentbytearray på den normala xref-vägen
Version 3.82.0
Ändrat (Changed)
ApplyDefaultOpenActionläser nu klassiska, xref-ström-, hybrid- och objektströmsrevisioner via ett gles lazy-objektindex, inklusive dokument med mycket höga objektnummer- Standardbearbetningen av open action använder fönster med fast storlek och avgränsad intervallkopiering i stället för att läsa in hela PDF:en i en enda bytearray
Version 3.81.0
Tillagt (Added)
PostProcessSavedPdfaccepterar tre sökbara arbetsytor som ägs av anroparen för egna minnestak och diskbaserad bearbetning
Ändrat (Changed)
TPdf.SaveAstillämparSaveMemoryLimitochSaveTemporaryDirectorypå varje arbetsyta för efterbearbetning av sparad PDF och inkluderar deras spill i diagnostiken- Nativ inkrementell xref-strömreparation använder fönster med fast storlek för svans och ordböcker med avgränsad intervallkopiering i stället för bytearrayer över hela filen och upprepade reallokeringar av hela filen
Version 3.80.0
Tillagt (Added)
ReadAttachmentMetadatafångar bilagnamn, beskrivningar, MIME-subtyper, avkodade storlekar och läsbarhet i en enda avgränsad nativ uppräkningExtractAttachmentsToStreamsskriver en batch till strömmar som ägs av anroparen med bytegränser per fil och sammanlagt, konfigurerbara skrivblock, avbrytning och resultat per post
Ändrat (Changed)
- Batchextraktionen behåller högst en avkodad bilaga i PDFium Delphi Components minne i stället för att materialisera varje nyttolast i batchen
Version 3.79.0
Tillagt (Added)
TPdfCacheGovernor,TPdf.CacheBudgetBytes, användningsfrågor per typ och statistik samordnar kvarhållet cacheminne genom en enda trådsäker global LRU-bytebudgetTPdfTileCacheoch den processomfattande systemtypsnittscachen kan ansluta till en av anroparen vald governor med exakt redovisning av bitmap- och typsnittsbyte
Ändrat (Changed)
- Parsade sidscener, miniatyrbilder, strukturdata, textögonblicksbilder och sidobjektsögonblicksbilder konkurrerar nu inom en standardbudget på 256 MiB i
TPdfmedan deras befintliga gränser för postantal bevaras - Aktiva sidscener förblir pinnade tills renderingen är klar, och opaka nativa sidscener belastas med ett uttryckligt uppskattat värde eftersom PDFium inte exponerar något konfigurerbart API för totala cachebytes
Version 3.78.0
Tillagt (Added)
TPdfLayoutPagedPlan,TPdfLayoutDocument.BuildPagedPlanochTPdf.GeneratePagedLayoutströmmar layoutkommandon till sökbar lagring som anroparen valt och materialiserar en sida i taget
Ändrat (Changed)
- Stora genererade layouter kan spilla kommandon till tillfällig lagring, behålla en konfigurerbar LRU-sidcache, återskapa icke-sammanhängande sidhuvuds- och sidfotssegment och frigöra radbruten text efter varje flödesobjekt
Version 3.77.0
Tillagt (Added)
TPdfLayoutTable, rader, celler och tabellalternativ lägger till tabeller över sidor med lösta rutnätsspår, bildtexter, upprepade rubrikrader, delbara rader i tabellkroppen, länkar och konfigurerbara ramar
Ändrat (Changed)
- Genererade taggade tabeller bevarar en sammanhängande Table / TR / TH / TD-struktur över sidor, håller grupper som spänner över rader atomära och kopplar automatiskt dataceller till rubrik-ID:n
Version 3.76.0
Tillagt (Added)
TPdfLayoutConstraintsochSetLastItemConstraintslägger till keep-together, keep-with-next, fysisk sidbrytning före/efter och konfigurerbar kontroll av änka-/föräldralösa rader i genererade layouter
Ändrat (Changed)
BuildPlanåteranvänder varje radbrutet textresultat för pagineringsförutsägelse och kommandosändning, vilket hindrar keep-with-next från att upprepa textmätning
Version 3.75.0
Tillagt (Added)
TPdf.InspectPdfUaUnicodeCoveragerapporterar avgränsade bevis på objektnivå för direkta Unicode-mappningar,ActualText-ersättningar, mappningsfel, saknade Unicode-värden och olösta källobjekt
Ändrat (Changed)
TPdf.ValidatePdfUaåteranvänder nu en enda objektavgränsad teckenskanning som exkluderar Artifact- och genererade tecken och hindrar ett textobjektsActualTextfrån att dölja intilliggande innehåll
Version 3.74.0
Ändrat (Changed)
ValidatePdfUaPageContentTaggingochTPdf.ValidatePdfUarapporterar nupvuaiArtifactInStructureTreenär ett Artifact-sidobjekt hävdas av en strukturträds-MCID, inklusive sökvägsbaserade pagineringsartefakter- Skanningen av PDF/UA-sidinnehåll avbryts nu tidigt först efter att både otaggat verkligt innehåll och ogiltig Artifact-inneslutning har upptäckts, vilket bevarar täckning över sidor utan att upprepa slutförda kontroller
Version 3.73.0
Tillagt (Added)
TPdf.InspectPdfUaLanguageCoveragerapporterar avgränsade bevis från sidobjekt och struktursträngar för span med naturligt språk, inklusive effektivt språk, deklarationskälla, MCID, strukturindex och textutdragResolvePdfUaEffectiveLanguagelöser marked-content-, närmaste strukturförfader- och katalogspråksdeklarationer med uttryckliga giltighetsbevis
Ändrat (Changed)
TPdf.ValidatePdfUarapporterar nupvuaiNaturalLanguageUncoverednär text utanför artefakter eller tillgänglighetssträngar saknar en giltig effektiv/Lang-deklaration
Version 3.72.0
Tillagt (Added)
TPdf.InspectPdfAMetadatarapporterar typad ekvivalensdokumentation per fält för alla åtta ISO 19005-1 Info-till-XMP-mappningar, inklusive uttryckliga tomma värden och misslyckad datumtolkningTPdf.NormalizePdfAMetadatareparerar endast felmatchade mappade XMP-egenskaper medan orelaterade namnrymder och icke-standard språkalternativ bevaras
Ändrat (Changed)
TPdf.ValidatePdfArapporterar nupvaiInfoXmpValueMismatchnär PDFium-avkodade Info-värden skiljer sig från korrekt typade XMP-värden efter Unicode- eller tidszonsmedveten datumjämförelse
Version 3.71.0
Tillagt (Added)
InspectPdfVT2sStreamreturnerar utskriftsvillkorsbevis för varje PDF/VT MIME-del, inklusive OutputIntent-identitet, ursprung för inbäddad eller MIME-profil, ICC-hashar och rubrikfakta samt DPart-sid- och postantalFPdfIccProfiletillhandahåller avgränsad inspektion av ICC-huvud och taggtabell med stöd för MD5, SHA-256, färgrymd, version, enhetsklass, profil-ID och flerspråkiga profilbeskrivningar
Ändrat (Changed)
- PDF/VT-2s-valideringen löser nu tidigare ICC MIME-bilagor via
DestOutputProfileRef-URL-filspecifikationer och validerarCheckSum,ICCVersion,ProfileCS,ProfileName, enhetsklass och tillåtna processfärgrymder - Alla PDF/VT-delar kräver nu exakt en auktoritativ
GTS_PDFX-OutputIntent, inbäddad eller extern profilpaketering som passar PDF/X-basen och samma karakteriserade utskriftsvillkor, medan bilagor som bara gäller PDF/X hålls utanför PDF/VT-jämförelserna - Enfilig PDF/VT-2-validering känner nu igen
DestOutputProfileRefsom en extern destinationsprofil i stället för att rapportera den som saknad
Version 3.70.0
Ändrat (Changed)
- PDF/VT-valideringen kontrollerar nu
GTS_Scope,GTS_XID,GTS_EnvochGTS_Encapsulateddirekt på varje XObject i stället för att närliggande eller nästlade ordböcker får tillfredsställa hintkraven Record-omfånget löser nuRecordLevelfrån den indirektaDPartRoot-ordboken, medanStream-omfånget avvisas i PDF/VT-1-filer- Avkodade innehållsströmmar för sidor och Form-XObjects validerar nu
Do-resurssynlighet,SingleUse-förekomstantal och ägarskap av mottagarposter genom effektiva ärvda resurser och DPart-hierarkin - Inkapslade XObjects validerar nu boolesk form, rekommenderat omfång, Image
Intent, isolerade transparensgrupper, blandningsfärgrymder samt direkta eller nästlade beroenden av valfritt innehåll
Version 3.69.0
Ändrat (Changed)
- PAdES-valideringen avvisar nu dublettposter för
Contents,ByteRange,SubFilter,FilterochTypei stället för att acceptera det värde som parsern valt - Signaturupptäckten använder nu en strömmedveten linjär ordboksskanning, känner igen escaperade PDF-namntoken och kan inte omdirigeras av en stängd nästlad ordbok som placeras före den verkliga
ByteRange - Valideringen av signaturens
ByteRangekräver nu att det exkluderade gapet matchar den direkta hexadecimalaContents-token exakt, samtidigt som senare inkrementella revisioner fortfarande tillåts - Signaturordböcker kräver nu exakt ett namnvärdesatt
Filteroch tvingar fram konsekventa kombinationer av typ och subfilter förSigellerDocTimeStamp
Version 3.68.0
Tillagt (Added)
TPdf.BuildPadesEvidenceReportkorrelerar PDFium-signaturfakta, CMS-policy, tillits- och tidsstämpelstatus, hashar över certifikatsökvägen, DSS/VRI-täckning och beslut om senare revisioner för varje signaturTPadesEvidenceReportexporterar avgränsade bevis för flera signaturer som JSON eller CSV och rapporterar käll-, signatur-, DSS-, revisions- och avkortningsstatistik
Ändrat (Changed)
- PAdES-tillitsvalideringen registrerar nu SHA-256-identiteter för signatarcertifikatet och den ordnade Windows-certifikatsökvägen samtidigt som offlinevalidering som standard bevaras
- Bevisgenereringen återanvänder en enda behållen inspelning av källbyte över överensstämmelse-, tillits-, DSS- och revisionsanalys i stället för att kopiera original-PDF:en till en ny ström för varje steg
Version 3.67.0
Tillagt (Added)
TPadesSignatureFieldOptionsskapar konfigurerbara signaturfältnamn, nödvändiga seed-värden, listor med skäl och juridiska intyg, acceptabla signatarcertifikat och fältlås- Lokal och fjärrsignering kan skapa godkännande- eller certifieringssignaturer med ISO 32000-1-transformerna
FieldMDPochDocMDP
Ändrat (Changed)
- Certifieringssignaturer bevarar befintliga katalogbehörigheter medan den nya signaturen registreras via
/Perms /DocMDP
Version 3.66.0
Tillagt (Added)
RenderPageBandedToStreamskriver PNG- eller TIFF-utdata direkt till en anroparström med konfigurerbar remshöjd, PNG-komprimering och utdatabytegränserRenderPageBandedToEncodermatar sekventiella sidremsor till anropardefinierade kodekar och returnerar rems-, rad-, minnes-, slutförande- och utdatastatistik
Fixat (Fixed)
RenderPageBandedbevarar nu renderingsgeometrin för hela sidan och klipper varje begärd remsa i stället för att skala om hela sidan in i varje remsa
Version 3.65.0
Tillagt (Added)
TPdfParallelRenderReportrapporterar nu källstorlek, toppminne för den insamlade källan, lagringsbackend och delad backing-sort
Ändrat (Changed)
RenderPagesParalleldelar den insamlade källan via oföränderligt minne, en skrivskyddad filmappning ellerFPDF_LoadCustomDocument-slumpåtkomst i stället för att allokera en andra bytearray för hela dokumentet- Mellanlagrade källor för parallell rendering förblir under
SaveMemoryLimitoch kräver inte längre att hela PDF:en läses in i processens adresserbara minne
Version 3.64.0
Tillagt (Added)
ImportImposedhar nu en överlagring som returnerarTPdfImpositionExecutionReportmed antal för nativ import, unika källor, tomma platser, XObject-mallar, formulärobjekt, innehållsgenerering och utdatasidor
Ändrat (Changed)
- Imposition utan geometri skickar varje ordnad källsida genom ett enda
FPDF_ImportPagesByIndex-anrop före infogning av tomma platser och nativ N-up-komposition - Imposition med egen geometri återanvänder en nativ XObject-mall per unik källsida, läser cachade sidmått utan att ändra källsidan och förallokerar exakt planlagring
Version 3.63.0
Tillagt (Added)
BeginPageObjectEditTransaction,CommitPageObjectEditTransactionochRollbackPageObjectEditTransactiongrupperar nativa sidobjektsmutationer i en atomisk batch begränsad till en sida med validerad ögonblicksbildsåterställningPageObjectEditTransactionStatusrapporterar den bundna sidan, ändringstillstånd, antal lyckade mutationer och antal innehållsgenereringar
Ändrat (Changed)
- Committade objektbatchar anropar nu
FPDFPage_GenerateContenten gång i stället för en gång per mutation av infogning, borttagning, transform, egenskap, märkning, annoteringsobjekt eller utseende - Sparning, sidbyten, sidborttagning, nästlade redigeringstransaktioner och misslyckade nativa infogningar eller annoteringsuppdateringar avvisas innan uppskjutet innehåll kan gå förlorat
Version 3.62.0
Tillagt (Added)
ReadPageObjectsSnapshotfångar sidobjektsfakta som ägs av anroparen med budgetar för objekt, sökväg, klipp, märkning, text, sträng och tidsgränsPageObjectsSnapshotger återanvändning via en revisionsmedveten LRU med konfigurerbar kapacitet samt beläggnings-, träff- och missstatistik
Ändrat (Changed)
PageComplexityåteranvänder nu den oföränderliga sidobjektsögonblicksbilden i stället för att upprepa nativ objektuppräkning och frågor om transparens, sökvägar och bilder
Version 3.61.0
Tillagt (Added)
TPdfexponerar nu en enhetlig LRU för miniatyrbilder som täcker inbäddade och renderade förhandsvisningar, med konfigurerbara post- och bytestak samt träff-, miss-, utkastnings-, beläggnings- och revisionsstatistikRenderPageThumbnailaccepterar rotation, renderingsalternativ, bakgrundsfärg ochTPdfColorSchememedan kontraktet med en anroparägd bitmap bevaras
Ändrat (Changed)
- Upprepad miniatyrextraktion och -rendering återanvänder nativa PDFium-resultat via nycklar för revision, sida, källa, storlek, rotation, flaggor, bakgrund och färgschema, inklusive cachad frånvaro av valfria inbäddade miniatyrbilder
TPdfThumbnailViewsynkroniserar sin bitmapcache för synliga sidor med dokumentets miniatyrrevisioner så att redigeringar inte kan lämna inaktuella förhandsvisningar
Version 3.60.0
Tillagt (Added)
ReadTextPageSnapshotfångar Unicode, UTF-16-mappningar, teckengeometri och -stil samt normaliserad textobjektmetadata i ett enda pass med uttryckliga budgetar för tecken, objekt, typsnittsnamn och tidsgränsTextPageSnapshotreturnerar djupa kopior som ägs av anroparen via en konfigurerbar, revisionsmedveten LRU med kapacitet, postantal samt träff- och missstatistik
Ändrat (Changed)
GetStructuredTextochGetTextInReadingOrderi fysisk layout återanvänder nu samma textögonblicksbild och tillämpar geometrisortering i O(n log n)
Fixat (Fixed)
- Små cacher för text- och strukturögonblicksbilder kastar nu ut den äldsta sidan när nya data lagras under det begärda sidindexet, vilket förhindrar cachealiasning mellan sidor
Version 3.59.0
Tillagt (Added)
LifecycleActionPolicyväljer avstängd, endast explicit eller kompatibel automatisk körning av PDF-dokument- och sidlifecycle-åtgärderExecuteDocumentLifecycleActionexponerar dokumentens JavaScript-, open-, close-, save- och print-åtgärder, medanExecutePageLifecycleActionkör sidans open- och close-åtgärder utan att ändraPageNumber
Ändrat (Changed)
- Headless-sidinläsningar får nu samma automatiska sid-open- och close-åtgärder som visarstyrda inläsningar, och tillfälliga sidor återanvänds eller frigörs under renderingslåset
Version 3.58.0
Tillagt (Added)
ReadStructureElementsochVisitStructureElementsger iterativ genomgång av taggad struktur med uttryckliga budgetar för djup, element, attribut och tid plus detaljerad slutförandestatusStructureElementsForPageexponerar ettbaserade sidögonblicksbilder utan att ändraPageNumber, understödd av en konfigurerbar, revisionsmedveten LRU-cache med träff-, miss- och antalsstatistik
Ändrat (Changed)
- Konsumenter inom tillgänglighet, omflöde, validering och visning återanvänder nu strukturögonblicksbilder som ägs av anroparen tills en relevant dokument- eller sidredigering ogiltigförklarar dem
Version 3.57.0
Tillagt (Added)
- Kompletta nativa formulärvärdsåteranrop tillhandahåller nu livstidssäkra lazy sidhandles, markörrouting för interaktionsvyn, notifiering av värdeändringar, rektanglar för markerad text, URI-händelser och GoTo-destinationshändelser
FormHostCallbacksCompleterapporterar återanropsberedskap, medanFormSelectionRectsochClearFormSelectionRectsexponerar avgränsad markeringsgeometri i sidrymd
Fixat (Fixed)
- XFA-återanrop för aktuell sida översätter nu korrekt mellan PDFiums nollbaserade sidindex och komponentens ettbaserade
PageNumber - AcroForm- och XFA-URI-återanrop bevarar nu råa URI-byte och kräver uttryckligt godkännande från värden före varje extern start
Version 3.56.0
Tillagt (Added)
- Indexerade
PageMetrics-ögonblicksbilder exponerar en sidas dimensioner, rotation, etikett, transparens och fem standardsidboxar utan att ändra den aktiva sidan
Ändrat (Changed)
- Upprepade läsningar av sidmetadata återanvänder en automatiskt ogiltigförklarad nativ ögonblicksbildscache, vilket minskar sidöppningar i miniatyr-, preflight- och dokumentanalysarbetsbelastningar
Version 3.55.0
Tillagt (Added)
- Sökvägsinspektion exponerar exakta kubiska Bézier-kontrollpunkter när det inlästa PDFium-bygget tillhandahåller
FPDFPath_GetBezierControlPoints, med en valfri probe av funktionsstödet i äldre DLL:er FormFieldTypeAtPoint,TPdfView.FormFieldTypeAtoch indexeradeFontFlags-egenskaper exponerar nativa formulär- och typsnittsfakta utan råa handlesTPdf.Signaturesreturnerar alla nativa signaturinnehåll, ByteRanges, subfilter, skäl, tider och behörigheter i en ögonblicksbild som ägs av anroparen
Ändrat (Changed)
- Närvarokontroller av formulärfält använder nu direkt nativ punktträfftestning i stället för att öppna och stänga annoteringshandles
Fixat (Fixed)
- PDF/E-1-valideringen tillåter nu vanliga AcroForm-fält, inbäddade filer och FileAttachment-annoteringar medan den exakt rapporterar AcroForm på toppnivå med
/XFAoch/NeedAppearances true, inklusive indirekta värden och objektströmsvärden
Version 3.54.0
Tillagt (Added)
FPdfProductionlägger till mätt bildval mellan flera kodekar, backends för färg- och typsnittsbehandling, SVG-sökvägar, ersättningsplaner med stilar, transaktionella XFA-paketuppdateringar, streckkodsvektorer, Portfolio-modeller och säker RichMedia-extraktionFPdfStandardsExecutionlägger till mätning och GeoPDF-konvertering, transaktionell PDF/A-reparation, PDF/UA-2-planer, externa flerfärgsprofiler, historiska DSS- och VRI-bevis, DPart-frågor, djupgående PDF/E-fakta och PDF/R-remsor med fast minneTPdf.ImportImposedkomponerar begränsade N-up- och häftesplaner via inbyggda N-up- eller page-XObject-sökvägar med exakt spaltmellanrum, utfallsrand och creep, medanTPdf.CompareWithrapporterar semantiska, geometriska och toleransmedvetna pixeldifferenser- PAdES-signering stöder nu pluggbara sökvägsvaliderare och HSM-leverantörer, signaturbifogad PDF MAC,
cms-algorithm-protectionoch signaturpolicydokument offline
Ändrat (Changed)
- Layoutmotorn accepterar begränsad HTML och Markdown, flödar över flera kolumner och löser fasta, automatiska och fraktionella spår i rutnätet
- XFDF-resor tur och retur behåller nu flervärdesfält och rich text-fält, popup-fönster, åtgärder, destinationer, utseendeöverlagringar, egna namnrymder och explicit närvarotillstånd
Version 3.53.0
Tillagt (Added)
ConfigurePdfLibraryger oföränderlig konfiguration av inbyggd renderare, typsnitt, V8, Brotli, användartypsnittssökväg och sandbox före den första PDFium-inläsningen- Inbyggda strukturattribut, annoteringsrelationer, annoteringsfilbilagor, typifierade ordboksvärden, fokuspolicyer, frågor om z-ordning för länkar och formulär samt diagnostik för standard-TTF-mappning är tillgängliga via begränsade högtnivå-API:er
TPdfView.ReplaceFormTextAndKeepSelectionbevarar den aktiva markeringen genom upprepade redigeringar, och frigöringshändelser från högerknappen når nu den inbyggda formulärmotorn
Ändrat (Changed)
- Deterministisk dokumenttid använder nu en stabil UTC-kalenderkonvertering utöver den fasta epoken, vilket ger samma metadata i varje värdtidszon
- Skrivning av bilagesträngar validerar det inbyggda resultatet och kodar ordboksnycklar som UTF-8
Version 3.52.0
Tillagt (Added)
TPdf.GetImageObjectRenderedBitmapreturnerar ett bildobjekts renderade resultat med dess aktuella matris, färgrymd, masker och renderingstillstånd tillämpadeTPdf.TextObjectGlyphWidth,TPdf.TextObjectFontSizeochTPdf.SetTextObjectFontSizeexponerar inbyggd glyfmätning och exakt redigering av textobjektets typsnittsstorlekTPdf.TransformPageObjectClipPath,TPdf.DetachFormObjectChild,TPdf.SharePageObjectMarkochTPdf.IsAnnotationObjectSubtypeSupportedlägger till exakt redigering av innehållsobjekt och inspektion av funktionsstöd
Version 3.51.0
Fixat (Fixed)
- Åtta
TPdf-medlemmar som tidigare versionsinformation tillkännagav var deklarerade i den privata sektionen och kunde inte anropas utifrån unit-enPDFium; de är nu publika enligt dokumentationen:LinkAtPoint,GetTextRenderMode,GetTextObjectRenderedBitmap,IsAnnotationSubtypeSupported,ChooseRenderFlags,AttachmentHasKey,GetAttachmentStringValueochSetAttachmentStringValue
Ändrat (Changed)
- Den engelska referensdokumentationen täcker nu varje publik medlem i
TPdfochTPdfView: 88 medlemmar som saknade referenssida har fått varsin sida, och klasssidorna, navigeringsindexet och API-referensen listar dem alla - Referenssidor som tidigare pekade på en delad sida länkar nu till medlemmens egen sida, så att ett sökresultat öppnar beskrivningen av det API som eftersöktes
- API-referensen dokumenterar uppräkningarna och posterna som kan nås från publika signaturer, däribland typer för inläsning och strömrapportering, typer för text, typsnitt och OCR, layoutbyggartyper, PAdES-valideringstyper, batch- och valideringstyper samt typer för parallell rendering
Version 3.50.0
Tillagt (Added)
- Varje GUI-demo öppnas nu med innehåll som är klart att användas i stället för ett tomt formulär: visar- och labdemon läser in ett genererat exempeldokument, rapportdemon producerar en färdig rapport vid uppstart och processdemon förgenererar exempelindata så att huvudåtgärden körs med ett enda klick
MultiPageViewer,SplitViewochFontPropertiesgenererar exempeldokument i minnet vid uppstart (ett sexsidigt presentationdokument, två jämförelsedokument sida vid sida och en sida med flera typsnitt för granskning via klick)- Processdemon (till exempel
MergePDF,BatchExport,SplitPDF,ExtractText,PDFtoJpg,PrintPDFochPrintPreferences) förgenererar exempel-PDF:er bredvid programfilen och fyller i sina inmatningskontroller i förväg, med idempotent regenerering som aldrig skriver över befintliga filer FormFillochExtractImagesläser automatiskt in exempelfilerna som medföljer deras demomappar,ImageToPDFgenererar två exempelbitmaps,WatermarkStampförbygger sina stämpelexempel ochXfdfLaböppnas med ett genererat dokument som innehåller text- och markeringsannoteringar
Ändrat (Changed)
CreatePDFgenererar nuSample.pdfbredvid programfilen vid uppstart utan att visa någon dialog, så att dokumentet finns så snart demon öppnasTPdf.AboutInfooch installationsmetadata rapporterar nu konsekvent Version 3.50.0
Version 3.49.0
Tillagt (Added)
FORM_GetTextDirectionochFORM_SetTextDirectionfrån de uppdaterade PDFium-binärfilerna är nu bundna, vilket håller det dynamiska bindningslagret fullständigt täckande för samtliga 472 PDFium-exporterTPdf.FocusedFormFieldTextDirectionochTPdf.SetFocusedFormFieldTextDirectionexponerar det fokuserade widgetets textriktning i minnet genom den nya uppräkningenTPdfFormTextDirection(ftdUnknown,ftdAuto,ftdLTR,ftdRTL), med motsvarigheter iTPdfViewsom målar om sidscenen efter en riktningsändring
Ändrat (Changed)
FPDF_LIBRARY_CONFIGspeglar nu PDFiums version 6-layout med det experimentella fältetm_BrotliEnabledför binärfiler som byggts medPDF_ENABLE_BROTLITPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.49.0
Version 3.48.0
Tillagt (Added)
PDFViewer-demon genererar nu ett sexsidigt presentationdokument i minnet vid uppstart med hjälp av skapar-API:et, så att visaren öppnas med renderat innehåll och ingen exempelfil på disken- En miniatyrpanel byggd på
TPdfThumbnailViewger sidförhandsvisningar med navigering via klick bredvid bokmärkesträdet i alla tre demoportarna - Sökningen i visaren markerar nu varje träff på den aktuella sidan via
HighlightSearchTexti stället för en enda resultatrektangel, och antalet träffar rapporteras i statusfältet - Verktygsfältsknapparna
Nightoch2-Upslår med ett enda klick på och av nattduotone-renderingsläget och visningsläget med uppslag om två sidor
Ändrat (Changed)
- Textmarkeringen i visaren använder nu den inbyggda markeringsmotorn i
TPdfViewmed ordmarkering vid dubbelklick, dragningsmarkering och urklippsgenvägar, vilket ersätter den handskrivna markeringskoden - Sidorna renderas nu med skuggkastning och mjuk rullning för en modern läsupplevelse
TPdf.AboutInfooch installationsmetadata rapporterar nu konsekvent Version 3.48.0
Version 3.47.0
Tillagt (Added)
FPdfBenchmarkkör avgränsade PDF-korpora med konfigurerbar uppvärmning och mätpass, sid- och pixelgränser, kooperativt avbrott samt status godkänt, misslyckat eller hoppat över per fallTPdfBenchmarkReportregistrerar byte-storlekar för indata och sparad utdata, latens för inläsning och första sidan, renderingsgenomströmning, tidsmätning för sparning och återöppning, samplat maximalt arbetsminne, semantiska och pixelbaserade SHA-256-hashar, stabilitet vid upprepade körningar, grindar mot förväntade hashar samt oberoende ekvivalens vid återöppning- Prestandarapporter exporterar formelsäker CSV och strukturerad JSON för CI, releasekvalificering och långsiktig prestandauppföljning
GetSkiaRenderCapabilities,RenderPageSkiaochRenderPageSkiaByIndexexponerar valfri inbyggd Skia-rendering av sidor och formulär med återanvändning av tolkad sidcache och utan hårt krav på DLL-exporter- Ett versionsstyrt och funktionsgaterat ABI för utskriftsresultat exponerar exakt uppräkning av separatplattor, plattrendering, övertrycksdetektering och förhandsgranskning av övertryck när den inlästa PDFium-modulen tillhandahåller dem
Fixat (Fixed)
- PDFium-byggen utan
PDF_USE_SKIAläses nu in normalt i stället för att misslyckas på grund av att experimentella Skia-exporter saknas
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.47.0
Version 3.46.0
Tillagt (Added)
ValidatePdfRkontrollerar nu rasterexklusivt sidinnehåll, stripgeometri, färgmodeller, effektiv upplösning, komprimeringsparametrar, nödvändig metadata och krypterade PDF 2.0-profiler genom konfigurerbara valideringsalternativBuildPdfARepairPlanomvandlar valideringsbevis till åtgärdssteg i beroendeordning med säkerhetsklasser, skydd mot signaturpåverkan och JSON-utdataBuildPdfXProductionPreflightrapporterar sidrutor, inbäddade typsnitt, utdataintents, färgämnen, transparens, övertryck, separationer, bildupplösning och produktionsberedskap utan att avkoda bildpayloads- PDF/UA-2-strukturvalidering kontrollerar nu ägarskap av associerade filer, läsordning, beskrivningar, relationer och påvisbarhet
Ändrat (Changed)
TAssociateFile.Description,TPdf.ImageInfoochTPdf.PageComplexityexponerar den metadata som behövs av arbetsflöden för associerade filer och produktionspreflightTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.46.0
Version 3.45.0
Tillagt (Added)
TPdfXmpPackettolkar, redigerar, klonar och serialiserar namnrymdsmedveten XMP med okända namnrymder, typade RDF-containrar, URI- och resursvärden, kvalificerare, språkalternativ, paketomslag och bevarad utfyllnadTPdf.ReadXmpPacketochSaveAsWithXmpPacketexponerar övergripande metadataläsning och atomisk utdata, där ändringar av signerade dokument kräver uttrycklig auktorisering
Säkerhet (Security)
- Den avgränsade XML-läsaren avvisar DTD:er och externa entiteter och begränsar paketbyte, nästling, noder, attribut och numeriska teckenreferenser
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.45.0
Version 3.44.0
Tillagt (Added)
TPdfValidationRuleRegistryregistrerar profilklausuler med allvarlighetsgrad, beroenden, reparationsvägledning, bevis samt inbyggda eller anpassade predikatTPdfValidationBudgetochTPdfValidationExecutionContextbegränsar regler, fel, objekt, rekursion, UTF-8-bevis, reserverat minne, förfluten tid, snabbt misslyckande och kooperativt avbrottValidatePdfFilesParallelvaliderar filer via isolerade arbetsdokument och bevarar indataordningen samtidigt som fördelningar av problem, tidsmätningar, fel, avbrott och inläsningsfel sammanställs
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.44.0
Version 3.43.0
Tillagt (Added)
TPdfStructureElementbär nu fakta om namnrymd, namnrymdsrollmappning, referens, associerad fil, annotering, widget, etikett och utseende för semantisk PDF/UA-2-valideringValidatePdfUa2StructureElementsoch dess fokuserade validerare kontrollerar ISO/TS 32005-namnrymder och inneslutning, avgränsade tabellrutnät, annoteringar, formulär, Formula/MathML-kopplingar, associerade filer, dokumentrötter, FENote, listor, TOC-referenser, rubriker och bildtexter utan att läsa inpdfium.dllClassifyPdfUaNamespaceidentifierar strukturnamnrymderna PDF 1.7, PDF 2.0, MathML, ARIA, DPUB, anpassad och saknadPdfUa2StructureHasIssueger en C++Builder-säker fråga efter ett enskilt problem utan att returnera en Pascal-mängd efter värde
Ändrat (Changed)
ValidatePdfUaStructureElementstillämpar automatiskt den nya semantiska regeluppsättningen förpuc2samtidigt som PDF/UA-1-regelvägen bevarasTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.43.0
Version 3.42.0
Tillagt (Added)
TPdfUaSaveOptions.PdfUa2skapar PDF/UA-2-utdata medpdfuaid:part2,pdfuaid:rev2024 och en effektiv PDF 2.0-katalogversionValidatePdfUaupptäckerpuc2och rapporterar saknad revisionsmetadata, filer som inte är PDF 2.0, onämnda konfigurationer av valfritt innehåll, föråldrade annoteringar och generella H-rubriker
Ändrat (Changed)
- PDF/UA-validering väljer nu profilspecifika regler för tabbordning, XFA och rubriker för PDF/UA-1 och PDF/UA-2
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.42.0
Version 3.41.0
Tillagt (Added)
SetPageObjectMarkParamlägger till eller ersätter en parameter av typen heltal, flyttal, sträng eller blob på en befintlig post med markerat innehåll utan att ersätta markeringenRemovePageObjectMarkParamtar bort en vald egenskap och bevarar markeringsnamnet och alla egenskaper som inte berörs
Ändrat (Changed)
- Tal med markerat innehåll som inte är heltal bevaras nu fram och tillbaka som
pmpFloati stället för att trunkeras till heltalsögonblicksbilder - Misslyckad parametervalidering under
AddPageObjectMarktar bort den delvis skapade inbyggda markeringen TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.41.0
Version 3.40.0
Tillagt (Added)
ConfigureSystemFontProviderinstallerar en typsnittsmappare för programmet innan PDFium startar och tillhandahåller validerade TrueType- eller OpenType-byte för saknade eller ersatta dokumenttypsnittTPdfSystemFontPolicystyr typsnittsersättning, inbyggd reserv, byte-gränser per typsnitt och avgränsad cachning av begärandenGetSystemFontProviderStatisticsrapporterar aktivitet inom mappning, cache, reserv, avvisning, datatabeller och aktiva referenser
Ändrat (Changed)
- Leverantörsåteranrop exponerar PDFiums begärda typsnitt, vikt, stil, teckenuppsättning och pitch samtidigt som fel i återanrop hålls inom den inbyggda gränsen
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.40.0
Version 3.39.0
Tillagt (Added)
AddCidType2Textbäddar in TrueType-data från anroparen med explicit CID-till-GID-geometri och CID-till-Unicode-mappningar per teckenTPdfCidFontOptionsväljer full inbäddning, önskad delmängdsbildning med reserv eller obligatorisk delmängdsbildning och konfigurerar avgränsade budgetar för typsnitt, tecken och UnicodeTPdfCidFontReportrapporterar delmängdsbeslut, byte-storlekar, unika tecken, inbäddningstillstånd, förväntad text, extraherad text och extraktionens integritet
Ändrat (Changed)
- TrueType-delmängder bevarar begärda teckenidentifierare, avvisar osäker utdata och rullar tillbaka alla infogade sidobjekt om verifiering av mappning eller extraktion misslyckas
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.39.0
Version 3.38.0
Tillagt (Added)
BuildReflowDocumentskapar ett avgränsat och återanvändbart semantiskt nodträd från Tagged PDF-struktur eller inferens av fysisk layout över ett valt sidintervallTPdfReflowDocument.ToHtmlavger escaperade responsiva rubriker, stycken, listor, figurer, bildtexter, sidavsnitt och tabeller med rubrik- och span-semantikTPdfReflowOptionsstyr tabellidentifiering, sidavsnitt, geometri, CSS, radbrytningar, sidintervall, avbrott och resursbudgetar
Ändrat (Changed)
- Tabellinnehåll ersätter överlappande styckeblock under omflödet, och aktivt sidläge återställs efter framgång, misslyckande eller avbrott
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.38.0
Version 3.37.0
Tillagt (Added)
ApplyOcrSearchLayerrenderar valda sidor genom PDFium och skickar avgränsade topp-och-ned-BGRA-pixlar till en av anroparen tillhandahållenIPdfOcrProviderTPdfOcrWordbär Unicode-text, konfidens och fyrhörningar i pixelrymd som mappas genom inbyggd sidgeometri till osynlig sökbar textTPdfOcrReportregistrerar slutförande per sida, hopp över befintlig text, fel, avbrott, renderade pixlar samt accepterade eller avvisade ord
Ändrat (Changed)
- OCR-insättning bevarar ursprungliga bildströmmar från skanningen, filtrerar felformade resultat eller sådana med låg konfidens, genomför en gång per sida och återställer den aktiva sidan
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.37.0
Version 3.36.0
Tillagt (Added)
ExtractTablesidentifierar tabeller med strecklinjer och tomrumsjustering från inbyggd ordgeometri och transformerade linjegångarTPdfTablerapporterar rader, kolumner, sammanslagna span, sidgränser, rubrikceller, identifieringsläge, konfidens samt direkt CSV- eller JSON-utdataExtractDocumentTablesskannar varje sida under delade budgetar och markerar matchande tabeller som fortsätter över sidgränser
Ändrat (Changed)
- Tabellextraktion tillämpar konfigurerbara gränser för ord, linjer, celler och tabeller och återställer den aktiva sidan efter skanningar på dokumentnivå
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.36.0
Version 3.35.0
Tillagt (Added)
GenerateTaggedLayoutskapar ett nytt semantiskt layoutdokument med inbyggt markerat innehåll, ett Document-strukturträd, ParentTree- och IDTree-mappningar samt metadata för dokumentspråkTPdfLayoutSemanticsmodellerar rubriker, avsnitt, listor, figurer, bildtexter, tabeller, rubrikassociationer, span, alternativtext, faktisk text, språk och element-IDTPdfLayoutDocument.AddLinkavger URI Link-annoteringar och kopplar varje annotering till dess Link-strukturelement genom OBJR- och StructParent-mappningar
Ändrat (Changed)
- Layouttext får som standard styckesemantik medan sidhuvuden, sidfötter, linjaler, bilder och återanvändbara formulär som standard blir artefakter om de inte uttryckligen taggas
- Valideringen av den semantiska planen avvisar dublett-ID:n, saknade föräldrar, cykler, ogiltig list- eller tabellinneslutning, figurer utan ersättningstext och olösta tabellrubrik-ID:n innan dokumentet avges
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.35.0
Version 3.34.0
Tillagt (Added)
TPdf.AddShapedTextskriver teckensekvenser med RTL, bidi, kontextuella former och ligaturer genom inbyggd systemformning och PDFium API:er för CID Type 2-typsnittShapePdfTextochTPdfUniscribeTextShaperexponerar positionerade tecken-ID:n, breddsteg, förskjutningar, källkluster, visuella sekvenspositioner och bidi-nivåer utan att ändra ett dokument
Ändrat (Changed)
- Genererade ToUnicode-mappningar täcker varje format tecken medan
ActualTextlagrar den ursprungliga logiska Unicode-strängen för standardföljande extraktions- och tillgänglighetskonsumenter - Strängar med markerat innehåll som bär UTF-16-byteordningsmärke avkodas nu korrekt genom
PageObjectMarks TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.34.0
Version 3.33.0
Tillagt (Added)
TPdfLayoutCachedNodebygger underklassat layoutinnehåll vid första användningen och stöder upprepade skalade placeringar genomAddCachedNodeTPdfLayoutPlanrapporterar träffar och missar i mätcachen, placeringar av cachade noder och återanvända inbyggda XObjects
Ändrat (Changed)
BuildPlanåteranvänder matchande planer efter fullständiga sidbegränsningar samt identiteter för innehåll, typsnitt, stil, källa och mätare utan att upprepa textmätningGenerateLayoutkonverterar varje unik cachad nod till en destinationsbunden XObject och skapar lättviktiga Form-objekt för varje placeringTPdf.AboutInfo, paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.33.0
Version 3.32.0
Tillagt (Added)
TPdfLayoutDocumentbygger in radbruten text, avståndselement, linjaler, bilder, återanvändbara sid-XObjects, explicita sidbrytningar, sidhuvuden och sidfötter i en mätt sidplanGenerateLayoutpaginerar den kompletta layouten innan inbyggda sidor och sidobjekt läggs till atomiskt, med stabila{page}- och{pages}-referenser
Ändrat (Changed)
TPdf.AboutInfo, paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.32.0
Version 3.31.0
Tillagt (Added)
- Byggare i
TPdfPagePlanbeskriver sidoperationer för borttagning, flytt, infogning, delning och sammanslagning utan att tillämpa dem ValidatePagePlanreturnerar den exakta sidmappningen från gammal till ny och inventerar berörda bokmärken, namngivna destinationer, sidetiketter, formulärfält, taggade sidor, importerade funktioner och signaturer
Säkerhet (Security)
- Planer som skulle lämna dingande navigeringsmål eller ändra signerat innehåll utan uttryckligt tillstånd avvisas innan någon inbyggd sidoperation körs
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.31.0
Version 3.30.0
Tillagt (Added)
SaveRecoverySnapshotskriver ett kontrollsummerat och storleksavgränsat återställningspaket som innehåller källans fingeravtryck och den verifierade dokumentredigeringsjournalenRestoreRecoverySnapshotspelar upp ett återställningspaket endast när dess kontrollsumma, journalkedja, källfingeravtryck och återställda fingeravtryck alla stämmerEnableRecoveryAutosaveuppdaterar en uttrycklig återställningsfil atomiskt efter varje ändrad commit, ångra eller gör om utan att skriva om käll-PDF:en
Ändrat (Changed)
InspectRecoverySnapshotrapporterar återställningskälla, fingeravtryck, postantal, position och avgränsad lagring utan att tillämpa paketetImportEditJournaloch återställning kräver nu uttryckligtAllowSignedDocument-tillstånd innan redigeringar tillämpas på en signerad PDF- Lagringen av återställningspaket använder den konfigurerade avgränsade slumpåtkomstlagringen och ersättning med genomskrivning i samma katalog för stora journaler och kraschsäkra autosparuppdateringar
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.30.0
Version 3.29.0
Tillagt (Added)
BeginEditTransaction,CommitEditTransactionochRollbackEditTransactiongrupperar godtyckliga inbyggda dokumentredigeringar i atomära transaktionerUndoEditochRedoEdittillämpar SHA-256-verifierade omvända och framåtriktade deltan över ändringar av sidor, objekt, annoteringar, bilagor och metadataExportEditJournalochImportEditJournalsparar avgränsade portabla deltor med validering av källfingeravtryck och digest-kedja för senare uppspelning
Ändrat (Changed)
- Transaktionsögonblicksbilder använder reproducerbar inbyggd utdata så att oförändrade commiter förblir tomma även när vanliga PDFium-sparningar innehåller icke-deterministiska identifierare eller tidsstämplar
- Misslyckade commiter och ogiltig uppspelning av journal återställer atomiskt det tidigare läsbara dokumentet, medan postantal, lagrade byte och ögonblicksbildstorlek håller sig under de av anroparen konfigurerade gränserna
- Signerade PDF:er kräver uttryckligt
AllowSignedDocument-tillstånd innan en dokumentredigeringstransaktion påbörjas TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.29.0
Version 3.28.0
Tillagt (Added)
TPdf.InspectOptionalContenträknar upp OCG-lager, standard- och alternativa konfigurationer, användningstillstånden View/Print/Export, zoom- och språkmetadata, låsta lager, ordningsfält, radiogrupper, OCMD-principer, synlighetsuttryck och effektivt renderingstillståndTPdf.SaveAsOptionalContentConfiguredskriver en strikt verifierad kopia med av anroparen valda lagertillstånd för en vald användning och konfiguration
Ändrat (Changed)
- Utdata med lagertillstånd uppdaterar nu både konfigurationens
/ON- och/OFF-fält och OCG Usage-tillståndsordböcker så att PDFium tillämpar den begärda synligheten genom sin inbyggda renderingskontext - Konfigurationsskrivningar avvisar okända grupper, ändringar av låsta lager, radiogruppkonflikter, krypterade mellanlagrade filer och signerade filer utan uttryckligt tillstånd samt tar som standard bort regler för automatiskt tillstånd för att hålla det valda resultatet deterministiskt
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.28.0
Version 3.27.0
Tillagt (Added)
TPdf.RenderPageByIndexrenderar vilken som helst ett-baserad sida i exakt pixelstorlek utan att ändra den aktiva redigeringssidan eller utlösa sidbyteshändelserPageSceneCacheCapacity,PageSceneCacheCountochClearPageSceneCacheexponerar avgränsad styrning och diagnostik för scencachen
Ändrat (Changed)
- Indexerade sidrenderingar, renderade miniatyrer och extrahering av inbäddade miniatyrer återanvänder nu tolkat PDFium-sidläge genom en LRU-cache med åtta poster som standard
- Scenposter ogiltigförklaras vid sidaktivering, redigering, ändringar i sidträdet, formulärtillståndsåteranrop, uttrycklig rensning och dokumentnedrivning, med pågående renderingar säkert bevarade tills frigöring
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.27.0
Version 3.26.0
Tillagt (Added)
TPadesSignatureAlgorithmInforapporterar varje CMS-signerares digest, signatur, publika nyckel och namngivna kurv-OID tillsammans med dess oberoende utvärderade algoritmprinciptillståndInspectPadesSignatureAlgorithmochEvaluatePadesSignatureAlgorithmkänner igen profilerna P-256, P-384, P-521, brainpoolP256r1, brainpoolP384r1, brainpoolP512r1, Ed25519 och Ed448
Säkerhet (Security)
- PAdES-validering avvisar nu avvikelse mellan elliptisk kurva och digest, ECDSA-signatur-OID:er som inte överensstämmer med CMS-digesten, onämnda EC-parametrar, Ed25519-parametrar samt Ed448 SHAKE256-utdatalängder som inte är 512 bitar
- Inbyggd CMS-verifiering förblir källan till kryptografisk giltighet, medan otillgängliga algoritmer och okända kurvor rapporteras som
pcsUnsupportedi stället för att behandlas som ogiltiga signaturer TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.26.0
Version 3.25.0
Tillagt (Added)
TPdf.ExportObjectGraphexporterar aktiva klassiska objekt samt xref-ström- och objektströmobjekt som avgränsad typad JSON med explicita ordböcker, fält, strängar, namn, skalära värden, indirekta referenser, antal strömbyte och valfria SHA-256-strömdigestarTPdf.SaveAsObjectGraphPatchedsätter eller tar bort schemakontrollerade värden på toppnivå i ordböcker genom typade patchvärden för null, Boolean, heltal, flyttal, namn, textsträng och indirekt referens
Säkerhet (Security)
- Objektgrafexport tillämpar budgetar för objekt, rekursion, strängar och utdata-byte, medan patchning validerar varje operation före leverans och avvisar dingande referenser, dublettoperationer, krypterad indata, skyddade ändringar av strömfilter eller längd samt signerade dokument utan uttryckligt tillstånd
- Objektgrafpatchar mellanlagras som en inkrementell revision, materialiseras igen för xref-verifiering, läses in strikt genom PDFium samt kopieras eller byter namn atomiskt först när alla kontroller har lyckats
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.25.0
Version 3.24.0
Tillagt (Added)
TPdf.ValidatePadesTrustverifierar varje påvisbar fristående signatur mot den exakta ursprungligaByteRange, utvärderar bindningen signing-certificate-v2 och aktuellt systemförtroende i Windows samt rapporterar oberoende tillstånd för signatur, kedja, återkallning och tidsstämpelTPdf.ValidatePadesTrustAsynctar en ögonblicksbild av den ursprungliga inlästa källan före utskick, rapporterar stegrad förloppsinformation för tolkning, kryptografi, kedjebygge, AIA, OCSP, CRL och RFC 3161-tidsstämpelarbete samt stöder kooperativt avbrottTPadesTrustValidationOptionsväljer offline- eller onlineförtroende, valfri verifiering av återkallning och tidsstämpel, en avgränsad tidsgräns för URL-hämtning, en avbrottstoken och ett förloppsåteranrop
Säkerhet (Security)
- Signaturtidsstämpel- och Document Time-stamp-token validerar nu sitt SHA-256-meddelandeavtryck, sin bifogade CMS-signatur, sin TSA-kedja och sitt valfria återkallningstillstånd oberoende av den vanliga dokumentsignaturen
- Förtroendevalidering hashar aldrig en kopia som sparats om av PDFium, använder som standard endast offline-cache för certifikathämtning och rapporterar tillstånd som saknar stöd eller är obestämda i stället för att behandla otillgängligt inbyggt förtroende eller återkallningsbevis som giltigt
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.24.0
Version 3.23.0
Tillagt (Added)
TPdf.RenewPadesArchiveTimestampochRenewPadesArchiveTimestampToStreamlägger till en ny RFC 3161 Document Time-stamp till en befintlig PAdES-signaturkedja utan att ändra några historiska byteTPadesArchiveTimestampOptionsstyr TSA-åtkomst, nonce, reserverad tokenkapacitet och en valfri fullständig DSS-uppdatering medanTPadesArchiveTimestampReportregistrerar käll- och resultatenivåer, kedjelängder, bytelängder och den returnerade tidsstämpelns identitet
Fixat (Fixed)
- Ny och förnyad PAdES B-LTA-utdata deklarerar ESIC ExtensionLevel 2, medan B-LT-validering inte längre kräver Level 2 om inte en Document Time-stamp finns
Säkerhet (Security)
- Förnyelsen hashar de exakta ursprungliga inlästa byten plus eventuell begärd DSS-uppdatering, avvisar krypterade eller ofullständiga källor, validerar det påvisbara B-LTA-resultatet innan utdata skrivs och mellanlagrar filutdata före ersättning
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.23.0
Version 3.22.0
Tillagt (Added)
TPdf.AnalyzeSignatureRevisionsrekonstruerar den ursprungliga inkrementella revisionskedjan och returnerar objektändringar per signatur klassade mot DocMDP- och FieldMDP-behörigheterTPadesRevisionAnalysisReportskiljer tillåtna uppdateringar av formulär, annoteringar, signaturer och valideringsmaterial från otillåtna sid- eller dokumentändringar, olösta fall och misstänkta skuggdefinitioner
Säkerhet (Security)
- Revisionsanalysen upptäcker orefererade objektdefinitioner, omdefinitioner av signaturobjekt, aktivt innehåll, felformade revisionskedjor och olösta komprimerade objekt samtidigt som avgränsade budgetar för revisioner, objekt och ändringar tillämpas
- Analysen använder alltid den ursprungliga inlästa filen, minnesbufferten, den anpassade strömmen eller den slutförda progressiva källan i stället för byte som skrivits om av PDFium
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.22.0
Version 3.21.0
Tillagt (Added)
TPdf.PreparePadesRemoteSignatureskapar en platshållare med fast bredd för fristående signatur och returnerar en beständig begäran som innehåller dokumentets SHA-256-digest, exaktaByteRange, reservationskoordinater och fingeravtrycket för den förberedda PDF:enTPdf.CompletePadesRemoteSignatureavslutar signerings-sessioner från HSM, molnet eller avbrutna sessioner efter validering av den beständiga begäran och den returnerade CMS:enTPdf.SavePadesRemoteSigningRequestochTPdf.LoadPadesRemoteSigningRequesttillhandahåller ett stabilt versionsstyrt binärt sessionsformat över process- och maskingränser
Säkerhet (Security)
- Slutförandet avvisar ändrade förberedda PDF:er, förändrade
ByteRange-koordinater, återanvända platshållare som inte är tomma, för stora CMS-värden, SignedData-former utan stöd, saknade attribut signing-certificate-v2 samt CMS-meddelandedigestar som inte matchar det förberedda dokumentet TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.21.0
Version 3.20.0
Tillagt (Added)
TPadesDssOptions.Vrisskriver en indirekt/Type /VRI-ordbok per signatur, nycklad till versal-SHA-1 av det kompletta avkodade/Contents-värdet inklusive utfyllnadTPadesDssVriväljer certifikat-, OCSP- och CRL-material genom validerade index medan PAdES B-LT- och B-LTA-signering nu skapar den nya signaturens VRI automatiskt
Ändrat (Changed)
- DSS-certifikat, OCSP-svar och CRL:er avdubliseras efter innehållshash med stabil ordning efter första förekomst, kollisionskontroller av exakta byte och ommappning av VRI-referenser innan några destinationsbyte skrivs
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.20.0
Version 3.19.0
Tillagt (Added)
TPdf.GetStructuredTextomvandlar den aktuella sidan till återanvändbara poster för block, rader och formaterade span samtidigt som källans teckenindex, Unicode-skalärer, geometri, typsnittsnamn, storlekar, vikter och textvinklar bevarasTPdfStructuredTextOptionsväljer content-stream- eller fysisk layout-ordning, valfri typsnitts- och semantisk berikning samt en maximal teckenbudget med fail closed-beteende- Fragment från Tagged PDF och heuristiskt läsbart innehåll berikar block med strukturkind, rubriknivå, språk, källa och strukturelementidentitet medan ej matchad alternativtext för Figure förblir representerad
Ändrat (Changed)
- Extraktion i fysisk layout använder nu O(n log n)-teckenordning, geometriskt växande buffertar för rader och span, kluster av rader och kolumner, buffrad Unicode-konstruktion samt typsnittscachning för angränsande textobjekt som inte är null, för förutsägbar prestanda på stora sidor
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.19.0
Version 3.18.0
Säkerhet (Security)
TPdf.SaveAsRedactedtillämpar varje/Redact-rektangel på en isolerad dokumentögonblicksbild, tar bort varje skärande sidobjekt på toppnivå och målar en opak ersättningsrektangel utan att ändra det inlästa dokumentet- Svensad utdata tar bort redaktionsannoteringar, tar valfritt bort andra skärande annoteringar, raderar inbyggda inbäddade bilagor samt rensar katalogens
/AF, aktivt innehåll, formulär, metadata och objekt från tidigare revisioner som inte kan nås TPdfRedactionOptionsstyr ersättningsfärg, borttagning av överlappande annoteringar och en sidobjektsskanningsbudget med fail closed-beteende medanTPdfRedactionReportregistrerar varje borttagning och utdatamätetalTPdfSanitiseOptions.StripAssociatedFilestar nu som standard bort associerade filreferenser på katalognivå
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.18.0
Version 3.17.0
Tillagt (Added)
TPdf.RenderPagesParallelrenderar ett-baserade sidbegäranden samtidigt medan varje arbetare äger en oberoende inläst PDFium-modul, dokument och sidläge hämtade från en och samma tagen dokumentögonblicksbildTPdfParallelRenderOptionsstyr DPI, antal arbetare, rotation, inbyggda renderingsflaggor, bakgrundsfärg, pixelgränser per sida och sammanlagda gränser för behållen utdataTPdfParallelRenderReportbevarar begäransordningen och returnerar topp-och-ned-BGRA- eller RGBA-buffertar ägda av anroparen med framgång, avbrott, misslyckande, dimensioner, tidsmätning och diagnostiska detaljer per sida- Progressiv arbetarrendering pollar
IPdfCancellationTokenmellan inbyggda block medan ogiltiga begäranden och budgetfel förblir isolerade till sina motsvarande resultat TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.17.0
Version 3.16.0
Tillagt (Added)
TPdfEncryptionRevision.erR7lägger till ISO/TS 32003 AES-256-GCM-utdata med/V 6,/R 7,/CFM /AESV4samt det obligatoriska PDF 2.0-utvecklartillägget- Varje krypterad sträng och ström får en unik 96-bitars IV, chiffertext med oförändrad längd och en 128-bitars autentiseringstagg, medan
EncryptMetadata = Falsebevarar metadataströmmens byte DecryptAesGcmDocumentBytesvaliderar användar- eller ägarlösenord, krypterade behörigheter, valfri fristående PDF MAC-data och varje GCM-tagg innan PDFium-kompatibla klartextbyte returneras- AESV4-utdata kan kombineras med
TPdfEncryptOptions.EnableIntegrityProtectionså att GCM-autentisering per objekt och ISO/TS 32004 PDF MAC-skydd för hela dokumentet kan samexistera - Krypteringen använder nu giltiga klassiska korsreferensposter i stället för att tolka objektformad text i strömdata som indirekta objekt
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.16.0
Version 3.15.0
Tillagt (Added)
TPdfEncryptOptions.EnableIntegrityProtectionskriver fristående PDF MAC-autentiseringskoder enligt ISO/TS 32004 för dokument med AES-256 Standard Security Handler revision 5 och 6TPdf.ValidatePdfMacverifierar de exakta ursprungliga källbyten, strikt EOF-täckande/ByteRange, CMSAuthenticatedData, från lösenord härledd filnyckel, autentiserade attribut, inpackad MAC-nyckel och HMAC-värdeFPdfHmaclägger till HMAC-SHA256 och HKDF-SHA256 medanFPdfAeslägger till RFC 3394 AES-256 Key Wrap och autentiserade unwrap-primitiverTPdfMacValidationResultskiljer mellan giltiga, saknade, ogiltiga och icke stödda autentiseringskoder med diagnostisk textTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.15.0
Version 3.14.0
Tillagt (Added)
TPdf.ValidatePadesverifierar nu fristående CMS-signaturer mot de exakta ursprungliga/ByteRange-segmenten i Windows, inklusive signerade attribut och signaturvärdetTPadesValidationResultexponerar sammanlagd integritetsstatus samt tillstånd per signatur för ByteRange, CMS,signing-certificate-v2, systemförtroende, återkallning och tidsstämpel utan att blanda bevis utan stöd eller okontrollerade bevis med en ogiltig signatur- Bindningen av signerarcertifikat kontrolleras med SHA-256, certifikatkedjor använder endast cachebaserad utvärdering av Windows-systemförtroende och inbyggda felkoder förblir tillgängliga för diagnostik
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.14.0
Version 3.13.1
Fixat (Fixed)
TPdf.ValidatePadesinspekterar nu den ursprungliga filen, buffrat minne eller anpassade strömbyte i stället för en av PDFium omsparad kopia som kunde ogiltigförklara offset eller förkasta signaturordböcker- PAdES
/ByteRange-kontroller accepterar nu signaturer som täcker en tidigare komplett PDF-revision följt av giltiga inkrementella uppdateringar och validerar även Document Time-stamp-intervall TPadesValidationResult.SourceStatusskiljer mellan validering av den ursprungliga källan och otillgänglig eller ofullständig progressiv indata, och efterlevnadspredikat avvisar resultat utan ursprungliga byteTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.13.1
Version 3.13.0
Tillagt (Added)
FPdfSha3tillhandahåller beroendefria primitiver för SHA3-256, SHA3-384, SHA3-512 och SHAKE256 för ISO/TS 32001 och relaterat kryptografiskt PDF 2.x-arbete- Inkrementella kontexter absorberar godtyckligt uppdelad indata medan SHAKE256 stöder upprepade squeeze-anrop och utdata som korsar gränser för svampraten
- Hjälpare för engångs-byte-fält och gemena hexadecimala värden kompletterar strömmande API, med explicit validering av livscykel och storlek i Delphi, C++Builder och Lazarus
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.13.0
Version 3.12.0
Tillagt (Added)
TPdf.ImportFDFimporterar FDF-formulärdata från filer eller strömmar och tillämpar tolkade värden genom den befintliga widgetfältssökvägenFdfImportFromStreamochFdfImportFromFiletolkar direkta eller indirekta hierarkiska fält, PDF-litterala och hexadecimala strängar, PDFDocEncoding, Unicode-text, namnvärden och explicita tomma värden under avgränsade resursbudgetar- FDF-exporten skriver nu fältnamn och värden som inte är ASCII som standardenliga UTF-16BE-textsträngar och escaperar källfilnamn på ett säkert sätt
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.12.0
Version 3.11.0
Tillagt (Added)
TPdf.DetectPageSkewrenderar den aktuella sidan vid lågt DPI och identifierar snedställningsvinkeln genom att projicera mörka pixlar på kandidatrotationsvinklar och returnerar vinkeln som maximerar radsummevariansen (justering av textrader) med ~0.1 grads noggrannhetTPdfSkewReportexponerar den identifierade vinkeln, konfidensen och sampeldimensionernaTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.11.0
Version 3.10.0
Tillagt (Added)
TPdf.GetTextInReadingOrderextraherar den aktuella sidans text i rå content-stream-ordning eller fysisk layout-ordning (uppifrån och ned, vänster till höger) genomFPDFText_GetCharBox+ positionsorterad teckenextraktion, så att text i flera kolumner och visuellt omordnad text läses naturligt- Enum-typen
TPdfReadingOrderväljer mellanroContentOrderochroPhysicalLayout TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.10.0
Version 3.09.0
Tillagt (Added)
TPdfImageOptimizeOptions.PreserveBilevelhoppar över 1-bitars tvånivåbilder (ImageMask / line-art-skanningar) underOptimizeImagesså att nedsampling med närmaste granne inte förstör deras skarpa kanterTPdfImageOptimizeOptions.MinDimensionhoppar över bilder som är mindre än tröskelvärdet (vanligtvis ikoner eller dekorativa element som inte gagnas av ytterligare minskning)TPdfImageOptimizeOptions.Defaultger den rekommenderade utgångspunkten (150 DPI-mål, 1.5-kvot, tvånivå bevarad, minsta dimension 8)TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.09.0
Version 3.08.0
Tillagt (Added)
TPdfTileCachetillhandahåller en avgränsad LRU-cache med renderade siddelor nycklad efter dokumentrevision, sida, zoom, rotation, renderingsflaggor och enhetsrektangel, så att oförändrade delar inte renderas om vid ommålningar och inaktuella delar från en tidigare sparning avlägsnas automatisktTTileKeyexponerar den sammansatta cachenyckeln med en statiskCreate-fabrik och enEquals-jämförareTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.08.0
Version 3.07.0
Tillagt (Added)
TPdf.GetAnnotationFontColorochTPdf.SetAnnotationFontColoromsluter de tidigare bundna men oanvändaFPDFAnnot_GetFontColorochFPDFAnnot_SetFontColoroch exponerar läsning och skrivning av widgettextfärg för formulärfältredigering utan att röra annoteringsordboken direktTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.07.0
Version 3.06.0
Tillagt (Added)
TPdf.RenderPageBandedrenderar den aktuella sidan i horisontella band via ett återanrop, så att affischer och tekniska sidor kan exporteras utan att en fullständig destinationsbitmap någonsin allokeras — varje band renderas till en nyskapadTBitmapmed begärd bandhöjd och frigörs efter att återanropet har returneratTPdfBandCallbackexponerar kontraktet per band (bandindex, top-y-offset, bitmap) med ett booleskt returvärde som låter anropare avbryta den bandade renderingen tidigtTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.06.0
Version 3.05.0
Tillagt (Added)
TPdf.RenderPageProgressiveWithColorSchemedriver den inbyggda progressiva renderingsloopen med ett färgschema för nedsatt syn genomFPDF_RenderPageBitmapWithColorScheme_Start, vilket låter anropare åsidosätta fyllnads- och streckfärger för banor och text för tillgänglighet samtidigt som den avbrottsmedvetna Continue-loopen behållsTPdfColorSchemeexponerar de fyra åsidosättningsfälten av typenTColormed enDefaultsom delegerar till PDFium:s inbyggda färger när alla fält ärclDefaultTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.05.0
Version 3.04.0
Tillagt (Added)
TPdf.ExportFDFserialiserar formulärfältvärden som ett FDF-dokument (ISO 32000-1 §12.7.11) bredvid den befintliga XFDF-vägen och återanvänder sammaTXfdfField-datamodell så att anropare samlar in fält en gång och avger endera formatetFdfExportToStreamochFdfExportToFileiFPdfXfdfexponerar FDF-serialiseraren på låg nivå för anropare som bygger fältsamlingar oberoende av en inlästTPdfTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.04.0
Version 3.03.0
Tillagt (Added)
TPdf.SaveAsSanitisedskriver en ren kopia med en enda revision som rensar aktivt innehåll från katalogen (/OpenAction, katalog/AA,/Names,/AcroForm,/Metadata) och beskär sedan objekt som inte kan nås, så att de föräldralösa JavaScript-, aktions- och bilagekropparna försvinner från filkroppenTPdfSanitiseOptionsexponerar oberoende rensningskontroller per vektor samt ett valfritt beskärningssteg för nåbarhet;TPdfSanitiseReportregistrerar antal rensade poster, antal beskurna objekt, byte-antal och eventuella felTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.03.0
Version 3.02.0
Tillagt (Added)
TPdf.SaveAsPageLabelledskriver en fullständig PDF-kopia vars nummerträd för katalogens/PageLabelsersätts med de angivna intervallen och tillämpar numreringsstilar med decimaler, versala och gemena romerska siffror samt versala och gemena bokstäver, med valfria prefixtextsträngar och startnummer enligt ISO 32000-1 §12.4.2TPdfPageLabelRange,TPdfPageLabelRanges,TPdfPageLabelStyleochTPdfPageLabelReportexponerar intervallmodellen, stiluppräkningen samt antal byte och intervall per sparning- Befintliga poster i katalogens
/PageLabelsupptäcks och avvisas om inteReplaceExisting=Trueskickas, i vilket fall den gamla posten rensas innan de nya intervallen injiceras TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.02.0
Version 3.01.0
Tillagt (Added)
TPdf.FlattenPageRotationbränner in varje sidas aktuella/Rotatei innehållsströmmen, sidrutorna och annoteringsrektanglarna och nollställer sedan/Rotatetill 0 — en omslutning avFPDFPageObj_TransformF+FPDFAnnot_GetRect/SetRect+FPDFPage_SetMediaBox/SetCropBox+FPDFPage_SetRotationså att den visuella layouten bevaras utan att förlita sig på rotationens visningstipsTPdfFlattenRotationOptionsexponerar annoteringstransformering, sidrutsbyte och automatiska uppdateringar per sida;TPdfFlattenRotationReportregistrerar bearbetade, överhoppade och misslyckade sidor samt totalt antal transformerade objekt och annoteringarTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.01.0
Version 3.00.0
Tillagt (Added)
TPdf.StampPagesFromPdfstämplar en källsida som ett positionerat, skalat och valfritt roterat Form XObject-överlägg eller underlägg över en eller flera målsidor och omsluterCreateXObjectFromPage+FPDFPageObj_SetMatrix+FPDFPageObj_SetBlendMode+FPDFPage_InsertObjectAtIndexmed explicita principer för sidrutor, förankring, marginal, skala, rotation, blend och z-ordningTPdfOverlayOptionsochTPdfOverlayReportexponerar styrningen av placering, transformering, blend och z-ordning samt antal stämplade, misslyckade och överhoppade sidor per sidaTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 3.00.0
Version 2.99.0
Tillagt (Added)
TPdf.RefreshAppearancegenererar om utseendeströmmen för en enskild widget selektivt viaFPDFAnnot_SetAPoch undviker därmed en ombyggnad av hela sidan viaNeedAppearancesTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.99.0
Version 2.98.0
Tillagt (Added)
TPdfView.MouseDownleder nu högerklickshändelser till den inbyggda formulärfyllnadsmotorn genomFORM_OnRButtonDown, vilket aktiverar snabbmenyer och widgetinteraktioner vid högerklick- Posterna 78 (mappning av länkannoteringar), 82 (widgetpresentation) och 83 (strukturattributmodell) i ruttkartan bekräftades som redan kompletta genom befintlig infrastruktur
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.98.0
Version 2.97.0
Tillagt (Added)
TPdf.SetDeterministicTimeochTPdf.RestoreActualTimelåter tester och reproducerbara byggen injicera fast skapelsetid, ändringstid och aktuell tid genom stödda inbyggda återanropTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.97.0
Version 2.96.0
Tillagt (Added)
TPdf.GetWidgetAdditionalActionJavaScriptläser widgetens tilläggsåtgärds-JavaScript för en given händelseutlösare genomFPDFAnnot_GetFormAdditionalActionJavaScriptutan att köra något skriptTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.96.0
Version 2.95.0
Tillagt (Added)
TPdf.GetObjectTextextraherar Unicode-texten i ett textsidobjekt genomFPDFTextObj_GetTextför exakt innehållsredigering och kodningsdiagnostikTPdf.GetObjectsByTypereturnerar indexen för alla sidobjekt som matchar en kategori (text, bana, bild, formulär, skuggning) för selektiv kategoriutdataTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.95.0
Version 2.94.0
Tillagt (Added)
TPdf.AttachmentHasKey,GetAttachmentStringValueochSetAttachmentStringValueläser, skriver och avsöker anpassade tilläggsvärden för filspecifikationer på inbäddade bilagorTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.94.0
Version 2.93.0
Tillagt (Added)
TPdf.InsertObjectAtIndexinfogar ett sidobjekt på en begärd stackposition viaFPDFPage_InsertObjectAtIndexi stället för att alltid lägga till på slutetTPdf.UpdateAnnotationObjectgenomför ett redigerat annoteringsutseendeobjekt genomFPDFAnnot_UpdateObjectså att ändringar i annoteringsägda sidobjekt består på ett tillförlitligt sättTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.93.0
Version 2.92.0
Tillagt (Added)
TPdf.InsertClipPathskapar en rektangulär klippbana och infogar den i den aktuella sidan genom de inbyggdaFPDF_CreateClipPath- ochFPDFPage_InsertClipPath-vägarna, som komplement till den befintligaPageObjectClipPath-inspektornenTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.92.0
Version 2.91.0
Tillagt (Added)
TPdf.GetPageComplexityskannar den aktuella sidan och rapporterar antal bild-, bana- och textobjekt samt totalt antal bansegment, totalt antal bildpixlar och förekomst av transparens för renderingsplaneringTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.91.0
Version 2.90.0
Tillagt (Added)
TPdf.IsAnnotationSubtypeSupportedfrågar den inlästa PDFium-DLL:n vilka annoteringsundertyper den stöder före redigeringTPdf.ChooseRenderFlagsväljer inbyggda renderingsflaggor (halftone, begränsad bildcache) utifrån slutlig skala och destinationsstorlek för adaptiv delsampling av bilderTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.90.0
Version 2.89.0
Tillagt (Added)
TPdf.GetTextRenderModeexponerar det inbyggda textrenderingsläget (fyllning, streck, klippning) i ett textsidobjekt för redigeringsdiagnostikTPdf.GetTextObjectRenderedBitmaprenderar ett enskilt textobjekt till en isolerad bitmap genom den inbyggdaFPDFTextObj_GetRenderedBitmap-vägenTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.89.0
Version 2.88.0
Tillagt (Added)
TPdf.GetThumbnailfaller nu tillbaka på att rendera en ersättning när sidan saknar inbäddad miniatyr, vilket implementerar preferensen inbäddad miniatyr förstTPdf.LinkAtPointreturnerar huruvida en inbyggd länk finns vid en koordinat i sidrymd medFPDFLink_GetLinkAtPointi stället för endast rektangelskanningarTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.88.0
Version 2.87.0
Tillagt (Added)
TPdf.AuditActiveContentreturnerar enTPdfActiveContentAudit-ögonblicksbild av antal JavaScript-åtgärder, antal inbäddade filer, antal signaturer, XFA-formulärtyp och dokumentbehörigheter utan att köra något skript eller någon åtgärdTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.87.0
Version 2.86.0
Tillagt (Added)
TPdf.GetFeatureInventoryskannar varje sida en gång och returnerar en enhetlig post med antal text-, bana-, bild-, Form XObject- och skuggningsobjekt tillsammans med fakta om bilagor, signaturer, formulärtyp, behörigheter och PDF-versionTPdfFeatureInventorysammanställer dokumentövergripande fakta som tidigare krävde separata egenskapsanrop till en enda ögonblicksbildTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.86.0
Version 2.85.0
Tillagt (Added)
TPdf.SaveAsReproducibleskriver om dokumentet så att två sparningar av samma tillstånd i minnet ger byte-identisk utdata- Icke-deterministiska tidsstämplar i
/Info(/CreationDate,/ModDate) rensas bort och källans/ID(härlett från väggklocksberoende byte) utelämnas, medan objektordning och generation förblir stabila TPdfReproducibleReportrapporterar antal behållna och beskurna objekt samt antal rensade tidsstämpelposterTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.85.0
Version 2.84.0
Tillagt (Added)
TPdf.SaveAsInlineImagesExternalisedskriver om dokumentet och extraherar varjeBI/ID/EI-inlinebild till en återanvändbar bild-XObject samt ersätter inlineblocket med en/ImN Do-operator- Ordboksförkortningar för inlinebilder (
/W,/H,/BPC,/CS,/F, färgrymdsvärden och filtervärden) expanderas till sina fulla bild-XObject-namn så att det extraherade objektet följer standarden - Sidans
/Resources /XObject-ordbok uppdateras med de nya XObject-referenserna och den omskrivna innehållsströmmen Flate-komprimeras TPdfInlineImageExternaliseReportrapporterar antal externaliserade, överhoppade och misslyckade samt antal skapade XObjectsTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.84.0
Version 2.83.0
Tillagt (Added)
TPdf.SaveAsFlateRecompressedskriver om dokumentet och omkodar kvalificeradeFlateDecode-strömmar med maximal komprimering och ersätter en ström endast när den uppmätta byte-besparingen överstiger en tröskel från anroparenTPdfFlateRecompressOptionsväljer en minimal besparing i byte och en minimal besparingskvot så att redan optimala strömmar lämnas orördaTPdfFlateRecompressReportrapporterar antal omkodade, överhoppade och misslyckade strömmar tillsammans med de ursprungliga och omkodade strömbytetotalerna- Objektnummer och generationer förblir stabila; endast de omkodade strömpayloads och deras direkta
/Length-värden ändras, så att varje kvarvarande korsreferens förblir giltig TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.83.0
Version 2.82.0
Tillagt (Added)
TPdf.OptimizeImagesgår igenom varje sidbildobjekt och samplar ned de bilder vars effektiva placerings-DPI överstiger ett av anroparen valt mål och genomför sedan varje berörd sida genom den inbyggda innehållsgeneratornTPdfImageOptimizeOptionsväljer mål-DPI och en minimikvot så att endast bilder som verkligen är översamplade kodas omTPdfImageOptimizeReportrapporterar antal optimerade, överhoppade och misslyckade bilder tillsammans med ett strukturerat felmeddelande- Nedsamplingen använder ett pass med närmaste granne över den inbyggda PDFium-bitmappbufferten och bevarar källformat, stride och alfakanal, och
FPDFImageObj_SetBitmapkodar om den överlevande TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.82.0
Version 2.81.0
Tillagt (Added)
TPdf.SaveAsDeduplicatedskriver om dokumentet som en enda ren revision som slår samman kompatibla typsnitt, bilder och Form XObjects till en gemensam representant- Ett rekursivt innehållsfingeravtryck kombinerar varje resursordbok, dess fullständigt nåbara delgraf och dess råa strömpayload, så att dubbletter slås samman endast när hela deras innehåll är identiskt
- Varje korsreferens till en borttagen dubblett skrivs om till den överlevande representanten medan det ombyggda klassiska korsreferenstabellen håller objektnumren stabila
TPdfDedupReportrapporterar antal behållna och beskurna objekt samt antal sammanslagna typsnitt, bilder och Form XObjects per kategoriTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.81.0
Version 2.80.0
Tillagt (Added)
TPdf.SaveAsReachableskriver om dokumentet som en enda ren revision som bara behåller de indirekta objekt som kan nås från katalogen och trailer-ordlistan /InfoTPdfPruneReportredovisar antalet kvarvarande respektive bortrensade indirekta objekt tillsammans med källans och utdatans storlek i byte, samt strukturerade felorsaker för krypterad eller felformad indata- Onåbara föräldralösa objekt som lämnats kvar av inkrementella uppdateringar, sidsammanslagningar eller reparerade sparanden städas bort, medan den ombyggda klassiska korsreferensen och trailern bevarar
/Root,/Infooch/IDutan omnummerering TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.80.0
Version 2.79.0
Tillagt (Added)
TPdf.CreateDocumentSearchskapar en framåt- eller bakåtriktad dokumentövergripande sökning som returnerar en träff i taget utan att bygga ett textindex för hela dokumentetTPdfDocumentSearchResultrapporterar den ett-baserade sidan, teckenintervallet, den matchade texten och rektanglar i sidrymd för varje resultat- Sök-sessioner accepterar
IPdfCancellationToken, behåller endast aktuella PDFium-sid- och texthandtag och avslutas säkert när dokumentet stängs TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.79.0
Version 2.78.0
Ändrat (Changed)
TPdfRangeRequestScheduleravbryter nu företrädesvis överlappande överföringar med lägre prioritet så att sidkritiska PDFium-tips inte behöver vänta bakom bakgrundsnedladdningar- Glesa byte som blir tillgängliga utifrån avbryter redundanta aktiva överföringar, medan ersatta eller dubblerade transportåteranrop returnerar False utan att publicera inaktuell täckning
- Prioritetsbefordran bevarar oberoende återförsökshistoriker och transportavbrytandet förbrukar inte längre återförsöksbudgeten för opåverkade intervallslut
TPdfRangeRequestStatistics.SupersededRequestCountrapporterar transportarbete som trängts undan av tips med högre prioritet eller utifrån tillhandahållen täckningTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.78.0
Version 2.77.0
Tillagt (Added)
TPdf.SaveAsNormalizedContentskriver syntaxnormaliserat sidinnehåll till en ström eller en atomiskt ersatt fil och rapporterar antal normaliserade, överhoppade och sammanslagna sidorNormalizePdfContentSequencetillhandahåller avgränsad fristående tokennormalisering för avkodade content-stream-sekvenser
Ändrat (Changed)
- Sidans
/Contents-fält kan nu slås samman till en ström medan strängar, namn, inlinebild-payloads, okända operatorer och grafiktillstånd över strömmar bevaras - Felformade token, obalanserade tillståndsomfång, filter utan stöd, krypterad indata och omskrivningar av signerade dokument har explicita principer och strukturerad statusrapportering
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.77.0
Version 2.76.0
Tillagt (Added)
TPdfStreamInspectorinventerar godtyckliga fysiska PDF-strömobjekt och rapporterar objektoffset, råa längder, filterkedjor, DecodeParms, markörer för externa filer, krypteringstillstånd samt inbyggda bild- eller bilagesökvägarCopyRawDatakopierar kompletta kodade payloads eller validerade byte-fönster, medanDecodeDatatillämpar ASCIIHex, ASCII85, LZW, Flate, RunLength, TIFF 8-bitars och PNG-prediktorer i deklarerad ordningTPdfStreamInspectOptionsavgränsar resurser för källa, rådata, avkodad data, ordbok, strömantal och expansionskvot, med strukturerade rapporter för gränser, felformad data, codec utan stöd, kryptering och skrivfel
Ändrat (Changed)
- Strömlängdsupplösningen exponerar nu exakta span för direkta och indirekta
/Length-värden, inklusive strömmar med noll längd och payloads som innehåller den litterala sekvensenendstream TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.76.0
Version 2.75.0
Tillagt (Added)
TPdfLoadOptionslägger till principerna kompatibel, strikt och återställning för inläsning från fil, minne, byte-intervall och anpassad strömTPdfLoadReportrapporterar den inbyggda återställningsvägen, xref-giltighet, skadade offset, postkonflikter, revisionsantal, granskningsbudgetar samt strukturerade problem för klassiska, hybrid- och xref-strömdokumentTPdf.SaveAsRepairedskapar en fullständig kopia med en enda revision och läser in den strikt och oberoende innan den verifierade strömmen levereras eller en målfil ersätts atomiskt
Ändrat (Changed)
- Befintliga inläsningsöverlagringar behåller kompatibelt beteende och publicerar nu inbyggd xref-giltighet och återställningsstatus genom
LastLoadReport - Strikt inläsning avvisar dokument som krävde inbyggd xref-ombyggnad eller misslyckades i strukturell granskning, medan signerad reparationsutdata kräver uttryckligt tillstånd från anroparen
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.75.0
Version 2.74.0
Tillagt (Added)
TPdf.MergeFilessammanfogar fillagrade källlistor med sidintervall och lösenord per källa samtidigt som högst ett källdokument hålls öppetTPdfBatchMergeOptionslägger till felhantering med stopp eller hopp, källomfattande eller styckvis import, formulär- och dispositionsprinciper, infogningsstyrning, förloppsåteranrop, avbrott, kopiering av visarinställningar och återrullningsstyrningTPdfBatchMergeReportrapporterar genomförda och återrullade sidor, källresultat, inbyggda importanrop, största batch, maximalt antal öppna källor, principidentifieringar, problem och slutstatusen
Ändrat (Changed)
- Standardsökvägen för batch gör en inbyggd sidimport per källa så att PDFium kan återanvända klonade objekt inom den källan och stänger sedan källan innan nästa fil öppnas
- Styckvis läge ger finare avbrottspunkter och mindre inbyggda batcher, medan misslyckade delkällor samt stopp- eller avbrottsutfall kan ta bort alla sidor som infogats av operationen
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.74.0
Version 2.73.0
Tillagt (Added)
TPdfRandomAccessStoretillhandahåller trådsäker sekventiell och positionerad I/O, håller litet innehåll i avgränsat minne och spillrar en gång till privat temporär lagring vid en av anroparen vald takgränsTPdf.SaveMemoryLimitochSaveTemporaryDirectorykonfigurerar sparmellanlagring, medanLastSaveSpillCountochLastSaveLargestMemoryBufferexponerar mätbar diagnostik per sparning
Ändrat (Changed)
- Mellanlagringsbuffertar för sparning, standardkonvertering, validering, kryptering, DSS och PAdES delar nu avgränsad arbetslagring med exklusiva spill-filer som raderas vid stängning och minnesskrubbning
- Anpassade PDFium-blockåteranrop serialiserar vanliga strömsökningar och använder positionerade läsningar oberoende av markör när de stöds av
TPdfRandomAccessStore - Den filbaserade XFA-kapabilitetsskanningen läser nu överlappande block med fast storlek i stället för att kopiera hela PDF:en till minnet
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.73.0
Version 2.72.0
Tillagt (Added)
TPdf.BeginIncrementalSave,CommitIncrementalSaveochEndIncrementalSavetillhandahåller en revisionssession som endast lägger till ändrade eller nyskapade indirekta objektTPdfIncrementalCommitInforapporterar antal ändrade objekt, tillagda byte, totala utdata-byte och antal lyckade revisioner för varje commit
Ändrat (Changed)
- Varje ändrad commit bevarar den kompletta tidigare utdatan som ett exakt byte-prefix, avger ingen revision när inget har ändrats och fortsätter källans klassiska format eller xref-strömformat
- Inbyggd inkrementell xref-strömsutdata repareras med sin obligatoriska typ, självpost, längd, index och objektterminator före vidare bearbetning
- Krypterade dokument avvisas innan en session påbörjas, medan signerade dokument kräver uttryckligt tillstånd från anroparen så att signaturprincipen inte kan kringgås av misstag
- Filöverlagringen fullbordar en syskon-temporärfil innan destinationen ersätts atomiskt och rullar sessionstillståndet tillbaka efter skriv- eller ersättningsfel
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.72.0
Version 2.71.0
Tillagt (Added)
TPdf.SaveAsObjectStreamskriver PDF 1.5+-filer med avgränsade komprimerade objektgrupper och en ren xref-ström innehållande kompletta typ-2-posterPackPdfObjectStreamskan modernisera klassisk, hybrid-, xref-ström- och befintlig objektströmsindata efter att den aktiva revisionen har lösts upp
Ändrat (Changed)
- Sidlokal objektordning, adaptiva xref-fältbredder, direkt katalogåtkomst och konfigurerbara tak för medlemmar och avkodade byte balanserar filstorlek mot slumpåtkomstprestanda
- Filöverlagringen fullbordar en syskon-temporärfil innan destinationen ersätts atomiskt, medan ogiltiga alternativ för inkrementell sparning, version och gruppering avvisas innan utdata påbörjas
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.71.0
Version 2.70.0
Tillagt (Added)
TPdf.SaveAsLinearizedskriver en äkta Fast Web View-PDF till en ström eller fil med objektgruppering för första sidan, två korsreferensavsnitt samt sidoffset- och tipstabeller för delade objekt enligt Annex F- Aktiva objektströmsmedlemmar materialiseras automatiskt, vilket låter xref-ström- och objektströmsindata bli intervallvänlig utdata utan att ändra synligt sidinnehåll
Ändrat (Changed)
- Filöverlagringen fullbordar en syskon-temporärfil innan destinationen ersätts atomiskt, medan strömöverlagringen behåller de normala PDFium-sparalternativen och explicita versionskontroller
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.70.0
Version 2.69.0
Tillagt (Added)
TPdfRangeRequestScheduleromvandlar PDFium byte-intervall-tips till prioriterat, sammanfogat och storleksavgränsat transportarbete utan att tvinga fram en sammanhängande nedladdning- Fullständig och delvis slutförande, avgränsade återförsök, avdublring av gles tillgänglighet, begäransstatistik och generationssäker avbrottshantering stöder HTTP Range-pipelines och anpassade transportpipelines
TPdfProgressiveDocument.RangeRequeststar automatiskt emot dokument-, formulär- och sidtips och befordrar endast de exakta byte som blockerar en interaktiv sida
Ändrat (Changed)
CancelProgressiveLoadavbryter nu aktivt intervallarbete före inbyggd nedrivning av tillgänglighet och ström, och inaktuella transportslutföranden ignoreras säkertTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.69.0
Version 2.68.0
Tillagt (Added)
TPdfProgressiveDocumenthåller PDFium:s tillgänglighetssession vid liv medan en fjärr- eller växande slumpåtkomstström tar emot de byte-intervall som PDFium begärCheckDocumentAvailability,CheckFormAvailabilityochLoadAvailablePagereturnerar sammanslagnaTPdfDownloadRange-tips så att en värd endast kan hämta de data som behövs för att öppna och visa en linjäriserad sidaAvailableByteCountstöder monotona sammanhängande nedladdningar, medanOnDataAvailablestöder glesa och oordnade intervällagringar
Ändrat (Changed)
- Linjäriserade filer använder PDFium:s inbyggda progressiva grindar för dokument, formulär och sidor; icke-linjäriserade filer byter automatiskt till den inbyggda anpassade ströminläsaren efter att hela filen finns tillgänglig
TPdfStreamAdapterkan exponera en logisk slutstorlek som skiljer sig från de byte som för närvarande lagras och bevarar samtidigt den explicita 4 GiB-gränsen förFPDF_FILEACCESSTPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.68.0
Version 2.67.0
Tillagt (Added)
TPdfView.AllowFormEventsstänger av de mus-, tangentbords- och fokushändelser som visaren vidarebefordrar till formulärfyllnadslagret, för en skrivskyddad visare eller en som själv styr formulärsinteraktionen- Formulärfält renderas fortfarande normalt när den är av: sidinläsning och stängning lämnas medvetet utan grind, eftersom de initierar formulärlagret i stället för att reagera på inmatning
- Reglaget ansluter till de befintliga växlarna
AllowUserPageChangeochAllowUserTextSelectionoch är som standard True, så att befintligt beteende är oförändrat
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.67.0
Version 2.66.0
Tillagt (Added)
- Namngivna åtgärder som ett dokument utlöser (ISO 32000-1 §12.6.4.11) når nu värden genom den nya händelsen
OnNamedAction; tidigare kastades vartenda en av dem bort - Om de lämnas ohanterade flyttar de fyra standardnavigeringsnamnen —
NextPage,PrevPage,FirstPage,LastPage— sidan och begränsas vid första och sista sidan i stället för att slå runt TPdf.PerformNamedActionlåter ett program utlösa samma beteende direkt och returnerar False för ett namn som saknar biblioteksbestämd betydelse
Fixat (Fixed)
- Ett krypteringstest mätte en strömkropp genom att skanna baklänges från
endstream, vilket ibland misstog en chiffertextbyte för en radterminator och rapporterade ett intermittent fel; biblioteket var korrekt hela tiden
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.66.0
Version 2.65.0
Tillagt (Added)
BuildToUnicodeCMapgenererar den ToUnicode-CMap (ISO 32000-1 §9.10.3) som ett CID-typsnitt behöver så att dess text kan kopieras, sökas och läsas av hjälpmedel — utan en sådan renderas texten korrekt men extraheras som ingenting- Poster delas upp vid gränsen 100 per block som specifikationen sätter, dubbletttecken skrivs en gång och
.notdefhoppas över - CMap:en följer konventionen CID = GID, så ingen
CIDToGIDMap-ström behövs bredvid den
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.65.0
Version 2.64.0
Tillagt (Added)
- Bläck- och stämpelannoteringar ritar sig själva från sina egna sidobjekt i stället för från sidans innehållsström, och dessa objekt är nu nåbara:
AnnotationObjectCountochAnnotationObjectInfoläser dem,AddPathToAnnotationger annoteringen en bana byggd medCreatePathochRemoveAnnotationObjecttar bort en - Att bygga en stämpels utseende kräver inte längre ett externt verktyg: skapa banan som vanligt och ge den sedan till annoteringen i stället för till sidan
- PDFium accepterar sidobjekt endast på undertyperna bläck och stämpel, så alla andra undertyper avvisas med ett meddelande som namnger begränsningen i stället för att misslyckas obegripligt
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.64.0
Version 2.63.0
Tillagt (Added)
TPdf.AddStandardFontTextritar text med ett av de 14 typsnitt som varje PDF-läsare måste tillhandahålla, utan att bädda in något typsnittsprogram alls — den resulterande filen blir mätbart mindre än samma text ritad medAddText, som bäddar in det systemtypsnitt den hittar- Den nya enum-typen
TPdfStandardFontnamnger alla 14 typsnitt, så att en anropare inte kan stava fel på ett bastypsnittsnamn; PDFium matchar dessa namn exakt och ett stavfel skulle tyst ge inget typsnitt - PDF/A och PDF/X kräver båda att varje typsnitt är inbäddat, så utdata för dessa profiler bör fortsätta använda
AddText
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.63.0
Version 2.62.0
Tillagt (Added)
TPdf.TextObjectGlyphOutlinereturnerar konturen av ett tecken i ett textobjekts typsnitt som bansegment, för att omvandla text till vektorgrafik eller inspektera ett tecken som en typsnittsersättning kan ha ändrat- Resultatet återanvänder den befintliga typen
TPdfPathSegments, så det läses exakt som konturen av ett ritat banobjekt - Koordinaterna ligger i typsnittets egen designrymd, normaliserade så att ett em är 1.0; den begärda typsnittsstorleken skalar dem inte, så en anropare som vill ha enhetsenheter multiplicerar själv med punktstorleken
- Ett tomt resultat betyder att typsnittet inte exponerar någon kontur för det tecknet, vilket inte är ett fel; att begära ett tecken från ett objekt som inte är text genererar ett undantag
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.62.0
Version 2.61.0
Tillagt (Added)
TPdf.InspectAvailabilityrapporterar vad PDFium kan säga om en PDF utan att läsa in den som dokument: huruvida filen är linjäriserad (“webboptimerad”), huruvida en fullständig tolkning skulle lyckas, huruvida den bär formulärdata och vilken sida en visare skulle visa först- De nya typerna
TPdfAvailability,TPdfLinearizationochTPdfFormAvailabilitybär svaren; strömmen läses men behålls inte och dess position återställs vid retur - Detta stänger det sista gapet i familjen
FPDFAvail_*, som var bunden och inläst men saknade anropare var som helst i biblioteket - Delphi, Lazarus och C++Builder täcker var och en de rapporterade fakta, garantin för strömpositionen och avvisningen av nil-strömmar
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.61.0
Version 2.60.0
Tillagt (Added)
- Markerat innehåll (ISO 32000-1 §14.6) kan nu nås från API:et på hög nivå:
PageObjectMarksläser varje BDC-tagg och dess egenskapslista från ett sidobjekt,AddPageObjectMarkskriver en,RemovePageObjectMarktar bort en ochPageObjectMarkedContentIDrapporterar MCID - De nya typerna
TPdfContentMark,TPdfContentMarkParamochTPdfMarkParamKindbär tagnamnet och dess typade parametrar (heltal, flyttal, sträng, blob), med värdearten löst från PDFium i stället för gissad från den getter som lyckas - Att lägga till en markering bygger om sidans innehållsström, så att taggen överlever en sparning; detta måste vara explicit eftersom
SaveAsinte genererar om innehåll på egen hand - Delphi, Lazarus och C++Builder har var och en sex fall, inklusive ett som packar upp den sparade innehållsströmmen för att bekräfta att BDC-operatorn och dess egenskapslista verkligen landade
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.60.0
Version 2.59.0
Tillagt (Added)
TPdfAnnotationfårHasLinkUriochLinkUri, såCreateAnnotationkan nu producera en fungerande webblänk: annoteringen sparas med en/URI-åtgärd som pekar på den angivna adressen- Att sätta en länk-URI på någon annan undertyp än
anLinkgenererar ett undantag, eftersom endast en Link-annotering bär en åtgärdsordbok - Fältet är endast skrivbart tills vidare; att läsa tillbaka ett länkmål går genom familjen
FPDFLink_*, som behöver dokumenthandtaget - Delphi, Lazarus och C++Builder verifierar alla att de sparade byten bär
/URI-åtgärden och måladressen
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.59.0
Version 2.58.12
Tillagt (Added)
- PDF/X-validering rapporterar
pvxiTrimBoxWithArtBoxnär en sida bär både/TrimBoxoch/ArtBox; båda anger den färdiga sidan, så en RIP har ingen möjlighet att veta vilken som är auktoritativ (ISO 15930) - PDF/X-validering rapporterar
pvxiPageBoxOutsideMediaBoxnär/TrimBoxeller/BleedBoxnår utanför/MediaBox, inklusive en ruta med negativt ursprung; en ruta utanför mediet kan inte avbildas - Rektanglar normaliseras före jämförelse, så endera hörnordningen accepteras, och en ruta som rör mediekanten exakt validerar fortfarande
- Preflightrapporter klassificerar båda problemen under struktur och namnger den konkreta åtgärden
- Delphi, Lazarus och C++Builder täcker alla de två avvisade fallen och det följsamma
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.12
Version 2.58.11
Tillagt (Added)
- PDF/UA-validering rapporterar
pvuaiTociWithoutTocnär ett dokument taggar TOCI-poster men aldrig taggar TOC-containern de hör till, vilket lämnar hjälpmedel att uppläsa innehållsförteckningsposter utan någon innehållsförteckning (ISO 14289-1 §7.7) - Preflightrapporter klassificerar problemet under struktur och rekommenderar att linda posterna i ett TOC-element
- C++Builder får sin första PDF/UA-testtäckning vid sidan av Delphi- och Lazarus-fallen
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.11
Version 2.58.10
Tillagt (Added)
- PDF/A-validering rapporterar
pvaiSymbolicTrueTypeEncodingnär ett symboliskt TrueType-typsnitt bär en/Encoding-post; ISO 19005-1 §6.3.7 medger endast typsnittets inbyggda cmap, så en/Encodingskulle motsäga den - Den symboliska flaggan läses från
/FontDescriptor, oavsett om den skrivs inline i typsnittsordboken eller refereras indirekt; ett icke-symboliskt typsnitt behåller sin obligatoriska/WinAnsiEncodingeller/MacRomanEncodingutan att flaggas - Preflightrapporter klassificerar problemet under innehåll och rekommenderar att posten tas bort
- Delphi och Lazarus täcker det flaggade fallet plus båda accepterade fallen; C++Builder täcker det flaggade och det icke-symboliska fallet
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.10
Version 2.58.9
Tillagt (Added)
- PDF/A-validering rapporterar implementeringsgränserna för containrar i ISO 19005-1 Annex C:
pvaiNameOverLimitför namn längre än 127 byte,pvaiArrayOverLimitöver 8191 element,pvaiDictOverLimitöver 4095 poster ochpvaiNestingOverLimitöver 28 nästlingsnivåer - Gränserna är inkluderande, så en container som ligger exakt på en gräns validerar fortfarande; tester fäster både den avvisade och den accepterade sidan av varje gräns
- Preflightrapporter klassificerar de fyra problemen under struktur och namnger den konkreta gränsen i varje rekommendation
- Delphi och Lazarus täcker alla fyra gränser plus gränsfallen; C++Builder täcker array-gränsen och gränsfallet
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.9
Version 2.58.8
Tillagt (Added)
- PDF/R-validering rapporterar
pvriPageImageMismatchnär bildantalet inte matchar sidantalet; ISO 23504-1 §6.5.1 gör varje sida till exakt en stripbild, så en sida utan bild eller med flera är inte förenlig - Delphi-, Lazarus- och C++Builder-tester täcker en sida utan bild, en sida med två och det förenliga fallet med en bild
Ändrat (Changed)
- PDF/R-testerna för markörinjektion utgår nu från en källsida som redan bär en stripbild, eftersom markörinjektion lägger till metadata och inte kan tillhandahålla sidinnehåll
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.8
Version 2.58.7
Tillagt (Added)
- PDF/R-validering rapporterar
pvriFontForbiddennär en sida namnger en typsnittsresurs; en PDF/raster-sida bär den skannade bilden och ingenting annat (ISO 23504-1 §6.5.2) - PDF/R-validering rapporterar
pvriForbiddenImageFilterför stripkodningar utanför den vita listan, så/LZWDecode,/RunLengthDecode,/ASCII85Decode,/ASCIIHexDecode,/JBIG2Decodeoch/Cryptavvisas medan/CCITTFaxDecode,/DCTDecode,/JPXDecodeoch/FlateDecodepasserar (ISO 23504-1 §6.6) - Preflightrapporter klassificerar båda problemen under innehåll och rekommenderar den konkreta åtgärden
- Delphi-, Lazarus- och C++Builder-tester täcker en typsnittsresurs, ett avvisat filter och en sida som endast använder kodningar från den vita listan
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.7
Version 2.58.6
Tillagt (Added)
- PDF/E-validering rapporterar
pveiFontNotEmbeddednär ett dokument visar typsnittsanvändning men saknar inbäddat typsnittsprogram, så att kravet kontrolleras på den DLL-fria vägen lika väl som genom PDFium - En teknisk ritning måste rendera identiskt årtionden senare, så ISO 24517-1 undantar inget av de 14 standardtypsnitten; kontrollen gäller
/Type1,/TrueType,/Type0och/MMType1lika - Preflightrapporter klassificerar det nya problemet under innehåll och rekommenderar inbäddning av varje typsnittsprogram
- Delphi-, Lazarus- och C++Builder-tester täcker en deskriptor utan program, en inbäddad
/FontFile2och ett dokument som inte använder något typsnitt alls
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.6
Version 2.58.5
Tillagt (Added)
InjectPdfEMarkersskriver nu den utdataintent som ISO 24517-1 §6.2 kräver: en inbäddad sRGB ICC-destinationsprofil, en/GTS_PDFE1-utdataintent som namnger den och katalogens/OutputIntents-fält, allt som del av samma inkrementella uppdatering- Profilströmmen härleder sin
/Nfrån ICC-huvudet i stället för att anta tre komponenter, så att en CMYK-profil skulle beskrivas korrekt - PDF/E-validering rapporterar
pveiMissingOutputIntentochpveiMissingIccProfile, så att en kandidat utan angivet färgtillstånd inte längre accepteras - Delphi-, Lazarus- och C++Builder-tester täcker en accepterad utdataintent, en utan destinationsprofil och en katalog helt utan utdataintent
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.5
Version 2.58.4
Tillagt (Added)
- PDF/X-validering rapporterar nu
pvxiFontNotEmbeddedfrån en byte-skanning, så att ett icke inbäddat typsnitt fångas på den DLL-fria vägen i stället för endast genom den PDFium-stödda kontrollen - Till skillnad från PDF/A undantas inte de 14 standardtypsnitten i PDF/X, så all typsnittsanvändning utan inbäddat typsnittsprogram rapporteras
- Kontrollen förblir konservativ: den utlöses endast när filen visar typsnittsanvändning men ändå helt saknar
/FontFile,/FontFile2eller/FontFile3, eftersom räkning av deskriptorer mot program ger falska positiva resultat på delade deskriptorer - Delphi-, Lazarus- och C++Builder-tester täcker en deskriptor utan program, ett inbäddat program och ett dokument som inte använder något typsnitt
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.4
Version 2.58.3
Tillagt (Added)
- PDF/X-validering rapporterar nu
pvxiColorSpaceForbiddennär en PDF/X-1a-kandidat bär/DeviceRGB,/CalRGBeller/Lab, vilka ISO 15930-1 §6.2 utesluter från sitt CMYK-utbyte - Kontrollen grindas endast på PDF/X-1a, så PDF/X-3 och senare fortsätter tillåta RGB och de enhetsoberoende färgrymder de parar med utdataintenten
- Endast entydiga namntoken för färgrymder testas; en
ICCBased-ström behöver sin/Nlöst och förblir hos objektmodellagret - Delphi-, Lazarus- och C++Builder-tester täcker en flaggad RGB-rymd, en flaggad Lab-rymd, ett accepterat CMYK- och gråskalepar samt det tillåtna fallet på PDF/X-3
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.3
Version 2.58.2
Tillagt (Added)
- PDF/X-validering rapporterar nu
pvxiTransparencyForbiddenför en transparensgrupp eller en aktiv mjuk mask, vilka ISO 15930-1 §6.2 (PDF/X-1a) och ISO 15930-3 §6.3 (PDF/X-3) förbjuder - Kontrollen grindas på den identifierade överensstämmelsen, så PDF/X-4 och PDF/X-6 fortsätter tillåta transparens och en fil vars nivå inte kunde identifieras flaggas aldrig för en regel som kanske inte gäller för den
- En mjuk mask som uttryckligen stängts av med
/SMask /Nonebehandlas inte som transparens PdfHasActiveSMaskflyttades frånFPdfPdfatill gränssnittetFPdfPdfCommonså att varje validerare kan dela en gemensam regel för mjuka masker- Delphi-, Lazarus- och C++Builder-tester täcker en flaggad grupp på X-1a, en flaggad mjuk mask på X-3, en avstängd mjuk mask och det tillåtna fallet på X-4
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.2
Version 2.58.1
Tillagt (Added)
- PDF/X-validering kontrollerar nu utformningen av den utdataintent som ISO 15930-7 §6.2.4 kräver:
pvxiOutputIntentSchemerapporterar en undertyp som finns men inte är/GTS_PDFXochpvxiOutputIntentMissingIdentifierrapporterar en saknad/OutputConditionIdentifier - Undertyperna matchas som en hel namntoken, så ett längre namn som
/GTS_PDFXVersionpasserar inte längre, medan en#xx-escaperad stavning av samma namn fortfarande gör det - En utdataintent som helt saknar undertyp lämnas ifred, eftersom dess frånvaro redan rapporteras av problemen på markörnivå
- Preflightrapporter registrerar båda problemen under kategorin utdataintent och föreslår åtgärden
- Delphi-, Lazarus- och C++Builder-tester täcker den accepterade undertypen, en PDF/A-undertyp, en längre namntoken, en frånvarande undertyp och en saknad villkorsidentifierare
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.58.1
Version 2.58.0
Ändrat (Changed)
- Alla 35 återanrop som PDFium anropar från sina egna C++-ramar (formulärfyllnad, XFA, JavaScript-plattform, paus av progressiv rendering samt strömläsning och skrivning) fångar nu varje Pascal-undantag och returnerar det dokumenterade felvärdet i stället för att veckla upp sig över språkgränsen
- En händelsehanterare som genererar undantag, en misslyckad allokering eller ett oväntat fel inuti ett återanrop kan därför inte längre fälla processen eller lämna PDFium i ett odefinierat tillstånd
Fixat (Fixed)
- Registrering av en formulärtimer läckte sin post när den underliggande timern inte kunde skapas
Tillagt (Added)
- Delphi-, Lazarus- och C++Builder-tester täcker nu sparning till en destinationsström som vägrar skrivningar och intygar att dokumentet förblir användbart och sparbart efteråt
Version 2.57.8
Fixat (Fixed)
- Äldre Delphi-versioner (XE5 och tidigare) slutade kompilera testbiblioteket med
E2003 Undeclared identifier: 'GetTickCount64'iFPdfPades.pas, eftersom Windows-enheten som levereras med de kompilatorerna inte exporterar symbolen - Samma kompilatorer misslyckades också på
GetUserDefaultLocaleNameiPDFium.pasoch på tilldelningenTBytestillarray of ByteiGetXfaFormPackets, så XFA-lokalåteranropet och paketögonblicksbilden byggs nu även på dessa kompilatorer
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.57.8
Version 2.57.7
Ändrat (Changed)
- Varje omskrivning vid sparande trunkerar nu målströmmen före skrivning i stället för att bara spola tillbaka den, så att en buffert från anroparen som redan innehöll ett längre dokument inte kan behålla en inaktuell svans efter den nya
%%EOF - Testerna för Delphi, Lazarus och C++Builder täcker nu även sparande till en förfylld ström
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.57.7
Version 2.57.6
Fixat (Fixed)
- Objektskanningen som föregår krypteringen accepterade siffersekvenser av valfri längd, så ett långt tal var som helst i filen kunde slå runt till ett negativt eller felaktigt objektnummer och lägga till en spökpost i den ombyggda korsreferenstabellen
- Objektnummer över ISO 32000-1 Annex C-gränsen och generationer över 65535 avvisas nu som objekthuvuden i stället för att trunkeras
Tillagt (Added)
- Delphi-, Lazarus- och C++Builder-tester intygar nu det exakta antalet använda poster i den ombyggda tabellen
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.57.6
Version 2.57.5
Fixat (Fixed)
- Kryptering med
EncryptMetadata = Falseskrev/EncryptMetadata falsetill Encrypt-ordboken men krypterade ändå dokumentets metadataström, så en läsare som följde den deklarationen fann oläslig XMP - En
/Type /Metadata-ström kopieras nu oförändrad när metadatakryptering är avstängd, medan alla andra strömmar fortfarande krypteras
Tillagt (Added)
AnsiNameTokenMatchesKeyär nu del av gränssnittetFPdfPdfCommonför avgränsningsmedvetna namnjämförelser- Delphi-, Lazarus- och C++Builder-tester täcker nu båda metadatakrypteringslägena
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.57.5
Version 2.57.4
Fixat (Fixed)
- Korsreferenstabellen som byggdes om under kryptering utelämnade det obligatoriska huvudet för den lediga listan, objekt 0, som ISO 32000-1 §7.5.4 kräver, så dess första delavsnitt började ett objekt för sent
- Varje ombyggd post hävdade generation 0; objekt skrivna med högre generation behåller den nu, så att tabellen överensstämmer med de objekthuvuden den pekar på
Tillagt (Added)
- Delphi-, Lazarus- och C++Builder-tester täcker nu posten för den lediga listans huvud och bevarandet av generationer i den ombyggda tabellen
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.57.4
Version 2.57.3
Fixat (Fixed)
- Krypterad utdata slängde nyckelordet
streamfrån varje strömobjekt, så att den sparade filen inte längre var giltig PDF-syntax och strikta läsare rapporterade sidinnehållet som varken en ström eller en samling strömmar - Omskrivningen av
/Lengthmatchade/Lengthsom en vanlig delsträng, så en strömordbok med/Length1(valfritt inbäddat typsnitt) fick sitt nyckelnamn skadat medan den verkliga längden förblev inaktuell - En ström som anger sin längd indirekt som
/Length N 0 Rfick objektnumret överskrivet med den nya längden; posten ersätts nu av den direkta krypterade längden - En strömordbok helt utan
/Lengthfår nu en i stället för att lämna läsaren utan längd
Tillagt (Added)
AnsiFindDictKeyTokenär nu del av gränssnittetFPdfPdfCommonför avgränsningsmedvetna nyckeluppslagningar på toppnivå i ordböcker- Delphi-, Lazarus- och C++Builder-tester täcker nu bevarande av
/Length1, ersättning av indirekt längd och överensstämmelse i strömkroppsstorlek
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.57.3
Version 2.57.2
Fixat (Fixed)
SaveAsEncryptedochSaveAsEncryptedToStreammedRevision = erR6producerade dokument som avvisade sitt eget korrekta lösenord i ungefär en av fyra filer, eftersom räknaren för ISO 32000-2 §7.6.4.3 algoritm 2.B började ett varv för lågt och det extra varvet ändrade värdena/U,/O,/UEoch/OE- R6-krypterade dokument öppnas nu igen med användar- eller ägarlösenord i varje följsam läsare och avvisar fortfarande ett felaktigt lösenord
Tillagt (Added)
- Lazarus- och C++Builder-testsviter fick krypteringstäckning som tidigare bara fanns i Delphi: R6-nyckellängder, fält i Encrypt-ordboken, ett upprepat krypterings- och återöppningsvarv samt avvisning av fel lösenord
Ändrat (Changed)
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.57.2
Version 2.57.1
Ändrat (Changed)
- Att skriva i ett formulärfält, flytta markören och växla kryssrutor ritar nu endast om det område som PDFium rapporterar som skadat i stället för hela visaren
- Skaderutor normaliseras för sidans uppåtriktade Y-axel, breddas med en pixel så att kantutjämnade widgetkanter förblir rena och klipps till det synliga klientområdet
- En skaderuta som rullats helt ut ur visningsporten schemalägger inte längre en ommålning, medan en inaktiv vy eller en ej mappad sida fortfarande faller tillbaka på fullständig ommålning
- Delphi-, Lazarus- och C++Builder-tester täcker nu avgränsad formulärsinvalidering, vända sidrutor, rutor utanför skärmen och säkerhet för inaktiva vyer
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.57.1
Version 2.57.0
Tillagt (Added)
TPdfThumbnailView.Orientationstöder vertikala och horisontella miniatyrlayouter samtidigt som den befintliga vertikala standarden bevarasFirstVisiblePageIndex,LastVisiblePageIndexochEnsureCurrentPageVisibleexponerar och styr miniatyrvisningsporten med ett-baserade sidindex
Ändrat (Changed)
- Att ändra
CurrentPageIndexrullar nu den valda miniatyren inom synligt område i båda riktningarna - Delphi-, Lazarus- och C++Builder-tester täcker nu standarder för orientering, växling, synliga intervall och synlighet för vald sida
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.57.0
Version 2.56.2
Ändrat (Changed)
HighlightSearchText,AddSearchTextHighlightochClearHighlightinvaliderar nu endast de enhetsrektanglar för sökintervall som lades till eller togs bort istället för att rita om hela visaren- Att ersätta markeringar med samma träffar eller att lägga till dubblettträffar schemalägger inte längre en onödig ommålning
- Delphi-, Lazarus- och C++Builder-tester täcker nu avgränsad invalidering, idempotenta uppdateringar, rensning och säkerhet för inaktiva visare
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.56.2
Version 2.56.1
Ändrat (Changed)
TPdfThumbnailViewåteranvänder nu renderade bitmaps för sidor som förblir synliga över ommålningar och angränsande rullningspositioner- Cachen behåller endast det aktuella synliga sidintervallet och frigör poster exakt när sidor lämnar detta intervall, det tilldelade dokumentet ändras eller miniatyrdimensioner ändras
- Delphi-, Lazarus- och C++Builder-tester täcker nu cache-återanvändning, visningsportbeskärning, storleksinvalidering, dokumentbyte och komponentförstöring
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.56.1
Version 2.56.0
Tillagt (Added)
TPdfView.CutSelectedFormTextToClipboardochTPdfView.PasteFormTextFromClipboarderbjuder Unicode-urklippsredigering för den fokuserade redigerbara formulärwidgeten
Ändrat (Changed)
- Fokuserade formulärredigerare hanterar nu de vanliga copy-, cut-, paste- och select-all-tangentbordsgenvägarna innan textinmatning vidarebefordras till PDFium
- Cut och paste avvisar skrivskyddade fält och sessioner utan formulärfyllnads- eller ändringstillstånd, medan cut kopierar framgångsrikt innan vald text tas bort
- Delphi-, Lazarus- och C++Builder-tester täcker nu beteende för ingen-fokus, genvägs-retur och avvisning av skrivskyddad
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.56.0
Version 2.55.0
Tillagt (Added)
TPdfView.AddSearchTextHighlightlägger till unika träffar för en annan sökterm till det aktuella sidöverlagret, vilket gör att flera frågor kan förbli markerade tillsammans
Ändrat (Changed)
HighlightSearchTextförblir ersättningspunkten och delar nu den additiva skannern, medan dubbletta teckenintervall ignoreras ochClearHighlighttar bort hela den ackumulerade mängden- Delphi-, Lazarus- och C++Builder-tester täcker nu ackumulering av distinkta frågor och undertryckning av dubblettintervall
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.55.0
Version 2.54.0
Tillagt (Added)
TPdfexponerar nu fullständiga sidobjekt-ögonblicksbilder, batchade stiluppdateringar, affina objekttransformeringar, bansegment, klippbanor och Form-XObject-barn- Teckeninspektion inkluderar nu fyllnings- och streckfärger, teckensnittsnamn och -flaggor, lösa glyf-gränser, effektiva matriser, textobjekt-referenser och konvertering från tecken- till textindex
- Kommentarer rundturar nu kantgeometri och normal-, rollover- och down-utseendeströmmar
- Nya råa och avkodade miniatyråtkomster, sidinnehålls- och kommentar-transformeringar, samt
RenderPageWithMatrixerbjuder direkta avancerade renderings- och redigeringsvägar
Ändrat (Changed)
- Stiländringar för sidobjekt kan nu commit-as som en batch så att PDFium regenererar sidinnehåll endast en gång
- Matris-rendering använder den befintliga zero-copy bitmap-vägen när destinations-bitmaplayouten är kompatibel
Version 2.53.1
Fixat (Fixed)
- Den inbyggda kinesiska Copy-menytexten använder nu kodningsoberoende Unicode-kodpunkter och visas korrekt i Lazarus-byggen
- Äldre Delphi-verktygskedjor kan nu kompilera
FPdfAsyncnär derasWinapi.Windows-enhet utelämnarGetTickCount64-deklarationen
Version 2.53.0
Tillagt (Added)
- Ny
Tests.ApiCoverage-testuppsättning som täcker offentliga TPdf-API:er som tidigare hade noll ende-til-ende-testtäckning:GetPageBox/SetPageBox(MediaBox/CropBox läs/skriv, fel för saknad ruta och lagrings-rundtur),FlattenPage/FlattenAllPages(returvärde och bevaring av sidantal),GenerateFormAppearances(no-op på icke-formulär-dokument),SaveAsEncrypted/SaveAsEncryptedToStream(AES-256 med lösenords-rundtur — verifierar att den krypterade filen vägrar att öppnas utan lösenordet och öppnas med det),DeletePage-gränsvalidering (sida 0 och utanför intervall höjerEPdfError), samtHasContents/HasAuthor-kommentarvakterna introducerade i v2.38.0 (verifierar attDefault(TPdfAnnotation)lämnar demFalse)
Version 2.52.0
Tillagt (Added)
TPdfView.CopySelectedFormTextToClipboardkopierar textmarkeringen inuti den fokuserade AcroForm-widgeten till Windows-urklippet somCF_UNICODETEXT
Ändrat (Changed)
- Sidtext- och fokuserade formulär-kopieringsoperationer delar nu samma defensiva Unicode-urklippsskrivare och lämnar urklippet oförändrat när deras markering är tom
- Delphi-, Lazarus- och C++Builder-tester täcker nu inaktiva eller ofokuserade formulär-kopieringsanrop och en fokuserad formulärmarkerings-rundtur via Windows-urklippet
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.52.0
Version 2.51.0
Tillagt (Added)
TPdfView.SelectLineAtmarkerar den visuella textrad som innehåller ett ett-baserat sid- och noll-baserat teckenindex utan att kräva musinmatning
Ändrat (Changed)
- Programmatisk radmarkering, trippel-klick-markering och
Shift+HomeellerShift+Enddelar nu en tecken-ruta radgräns-modell - Delphi-, Lazarus- och C++Builder-tester täcker nu stabil radmarkering och ogiltiga sid- eller teckenindex
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.51.0
Version 2.50.0
Tillagt (Added)
TPdf.LoadDocumentaccepterar nu ett noll-baseratIndex- ochCount-fönster in i enTBytes-buffert, vilket gör att inbäddade PDF:er kan laddas utan att allokera en tillfällig byte-array-slice
Ändrat (Changed)
- Byte-intervall-laddning avvisar negativa eller utanför intervall-fönster innan dokumenttillstånd ändras och bevarar de befintliga alternativen för buffrad och lånat-buffert-levtid
- Delphi-, Lazarus- och C++Builder-tester täcker nu inbäddade PDF-fönster och ogiltiga byte-intervall-argument
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu konsekvent Version 2.50.0
Version 2.49.1
Tillagt (Added)
TPdfView.FitModestöder nupfmFitHeightför att anpassa den aktuella sidan till den synliga visningshöjden med horisontell rullning vid behov
Fixat (Fixed)
- Anpassningslägen konvergerar nu efter att en rullningsliständring ändrar klientytan, vilket håller fit-page-, fit-width- och fit-height-resultat konsekventa mellan VCL och LCL
- Delphi-, Lazarus- och C++Builder-visartester täcker nu
pfmFitHeight-val och uppräkningsreturer TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.49.1
Version 2.49.0
Tillagt (Added)
- Den offentliga PDFium-bindningsytan täcker nu alla 470 exporterade funktioner i de granskade rubrikerna, inklusive åtkomst till bilagebeskrivningar via
FPDFAttachment_SetDescriptionochFPDFAttachment_GetDescription TPdfexponerar nu bilagebeskrivningar, korsreferensgiltighet, trailer-slutoffset, security-handler-revision, 64-bitars minnesinläsning, signaturbyteintervall, webblänkstextintervall och utökade bilddata-, filter-, metadata- och ICC-profilsnapshots- Formulärassistenter stöder nu inbyggd fältfokus, frågor och uppdateringar av fokuserade valalternativ, mushjulsvidarebefordran, skrivbara bläckdrag och formulöverlägg efter progressiv rendering
Ändrat (Changed)
FormFieldCount, formuljärfältindex och tabbordning beskriver nu endast widget-anteckningar istället för att inkludera orelaterade sidanteckningar- Headless
TPdf-sidor går nu in i och lämnar livscykeln för formulärfyllningssidan så att inbyggd fokus och fokuserade fält-API:er fungerar utan enTPdfView - Bilagebeskrivningsexporter är kapacitetsbegränsade så att program som använder en äldre PDFium-build fortfarande kan läsa in biblioteket och upptäcka den otillgängliga funktionen
Fixat (Fixed)
- Progressiv sidrendering ritar nu formulärkontroller när formulärfyllning är aktiverat
- Delphi-, Lazarus- och C++Builder-tester täcker nu den nya dokumentdiagnostiken, bilagebeskrivningar, bläckvägar, formulärbeteende, signaturbyteintervall, webblänksintervall och bildmetadata
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.49.0
Version 2.48.0
Tillagt (Added)
TPdfMatrixexponerar nu fabriker, kloning och tilldelning, ändlig-tillstånd- och inverterbarhetsdiagnostik, toleransbaserad jämförelse, translatioskott, determinantrapportering och affin sönderdelning- Prepend-komposition, pivotmedveten rotation, skalning, skevning och vändningar, plus stretch-, contain- och cover-rektangelmappning stöder lokalrymds- och anpassade layoutarbetsflöden utan manuell koefficientaritmetik
- Icke-muterande inverterad åtkomst, inverterad punktmappning, vektor- och fyrhörningstransformationer, dynamiska punkt- och rektangelbatcher, in-place-varianter och enpassiga transformerade gränser utökar den återanvändbara geometriytan
Ändrat (Changed)
- Translation, skalning och axelvändningar uppdaterar nu endast de berörda koefficienterna istället för att rutta genom allmän affin multiplikation
- Rektangeltransformation normaliserar sin indata en gång, använder en specialiserad exakt axeljusterad väg där möjligt och beräknar allmänna roterade gränser utan temporära punktposter
- Punkt- och rektangelbatchtransformationer allokerar en resultatarray eller återanvänder anroparlagring, medan transformerade punktgränser ackumuleras i ett pass utan en mellanliggande array
Fixat (Fixed)
- Rektangelmappning avvisar nollstora, icke-ändliga och
Single-översvämmade resultat innan en oanvändbar matris publiceras - Delphi-, Lazarus- och C++Builder-tester verifierar nu kompositionsordning, pivotinvarianter, inversa returer, anpassade rektanglar, sönderdelning och massgeometribeteende
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.48.0
Version 2.47.0
Tillagt (Added)
FPdfAsynctillhandahåller nu strukturerade anledningar till avbokning och meddelanden, borttagbara återanrop-registreringar, tidsgränsbaserade källor, avbokningsväntan och atomära try-cancel-operationer genom utökade gränssnitt som bevarar det ursprungliga API:etTPdfFuture<T>.RunExlägger till konfigurerbar svarssändning och worker-prioritet medan resultatuveck exponerar operations-ID:n, värdegiltighet, undantagsklassnamn, slutförandetidtagning och återanvändbara slutförandehjälpmedelTPdfAsyncExecutorlägger till en återanvändbar fast worker-pool med fyra FIFO-prioritetsbanor, valfritt begränsad-kö-backpressure, avbokningsbara uppgiftshandtag, tidsgränsmedveten väntan, uppgiftssnapshots, aggregerad statistik och graciös avstängning
Ändrat (Changed)
- Upprepade asynkrona jobb kan återanvända worker-trådar och O(1)-köoperationer istället för att skapa en tråd för varje uppgift, medan synkroniserat slutförande förblir tillgängligt för UI-värdar
- Executor- och future-fel bevarar undantagsklass- och meddelandediagnostik, avbokning behåller sin ursprungliga anledning och återanropsundantag förblir isolerade från worker-livscykel och avstängning
- Delphi-, Lazarus- och C++Builder-tester täcker nu den utökade avboknings-, future-metadata-, uppgiftskontroll-, backpressure-, prioritetsordnings-, statistik-, fel- och avstängningsytan
Fixat (Fixed)
- Samtidiga avbokningsägare får nu ett deterministiskt första-skrivare-resultat istället för att förlita sig på en separat observations- och avbokningssekvens
- Huvudtrådens väntan vid overksamhet bearbetar synkroniserade uppgiftssvar, vilket förhindrar att en slutförd worker lämnar executorn permanent inte-overksam under samordnad avstängning
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.47.0
Version 2.46.0
Tillagt (Added)
FPdfAsn1exponerar nu identifierarklasser, 64-bitars hög-tag-nummer-kodning och avkodning, tolkade TLV-poster, nollkopierings-barnläsar-fönster, typade primitiva avkodare och innehålls- eller kodade-värde-slices- DER-skrivare stöder nu det fullständiga osignerade 64-bitars INTEGER-intervallet, validerat godtyckligt INTEGER-innehåll, ENUMERATED, automatiskt UTCTime- eller GeneralizedTime-val, application- och private-taggar, flervärdes-SEQUENCE och kanoniskt sorterad SET OF-utdata
ValidateDerreturnerar offsetmedvetna valideringsfel samtidigt som den upprätthåller konfigurerbara nästlings-, nodantal-, innehållslängds-, felantal-, rot- och valfria SET-sorteringsgränser
Ändrat (Changed)
- DER-konkatenering och flervärdeskomposition använder en utdataallokering, skrivarbuffers exponerar reserve-, count-, capacity- och ägandeskifte-operationer, och SET OF-sortering använder nu
O(n log n)-sammanfogningssortering - BOOLEAN-, INTEGER-, BIT STRING-, OBJECT IDENTIFIER-, NULL-, UTF8String-, PrintableString-, IA5String-, UTCTime- och GeneralizedTime-värden får kanoniska formulärkontroller under kodning, typad avkodning eller validering
- Lazarus-runtime-paketet exporterar nu
FPdfAsn1och Delphi-, Lazarus- och C++Builder-testsviter utökar samma offentliga DER-yta
Fixat (Fixed)
- Kontextspecifika taggnummer större än 30 trunkeras inte längre till de låga fem identifierarbitarna
- Felaktiga hög-tag-identifierare, icke-minimala bestämda längder, ogiltig UTF-8, icke-noll BIT STRING-utfyllnad, ogiltiga tidsfält, eftersläng-rotar och resursgränsöverträdelser avvisas deterministiskt
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.46.0
Version 2.45.0
Tillagt (Added)
FPdfPreflightReporttilldelar nu Info-, Warning- eller Error-allvarlighetsgrad till varje problem och exponerar per-standard- och rapportnivå-allvarlighets-, status-, kategori-, problemkod-, uppslags-, sök-, utplattande- och filtrerings-API:er- Preflight-rapporter exporterar nu SARIF 2.1.0, JUnit XML, NDJSON och inbyggd XML via matchande
To*- ochSave*ToFile-metoder för CI-, automations- och strömningspipelines - Stabila SHA-256-rapport-fingeravtryck identifierar ekvivalenta valideringsresultat oberoende av källsökvägar och genereringstidsstämplar
Ändrat (Changed)
- JSON-, CSV-, text-, Markdown- och HTML-rapporter inkluderar nu allvarlighetsgrad och utökade statussammanfattningar; HTML lägger till tillgängliga tabellrubriker och en statussammanfattning
- Problem- och standardsamlingskonstruktion använder geometrisk kapacitetstillväxt, frågeresultat är fördimensionerade, JSON-escape skriver till en begränsad utdatabuffer och alla rapportfiler använder en direkt UTF-8-skrivare
- Problemkategorisammanfattningar använder deterministisk ordning, tidsstämplar inkluderar millisekunder, JSON bär
formatVersion: 2och CSV-celler neutraliserar kalkylbladsformler
Fixat (Fixed)
- JSON-export bevarar nu giltiga kompletterande Unicode-par och ersätter isolerade UTF-16-surrogat-kodenheter istället för att sända ut felaktiga skalära data
- HTML-export escapedörr nu apostrofer och filtrerade rapportvyer äger oberoende problemarrayer istället för att dela muterbar resultatlagering
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.45.0
Version 2.44.0
Tillagt (Added)
- Bokmärken och destinationer exponerar öppet-tillstånd, antal ättlingar, åtgärdsmål, visningslägen för destinationer och upp till fyra visningsparametrar
Metadata,GrantedPermissions,UserGrantedPermissions,HasPermissionochUserHasPermissiontillhandahåller typade ögonblicksbilder för dokumentinspektion samt behörighetsfrågorExtractThumbnail(PageNumber)renderar en begärd sida utan att byta aktiv sida, och resultat från RFC 3161-tidsstämplar exponerar policy, genereringstid och nonce-detaljer
Ändrat (Changed)
- Sökvägarna för bokmärken, JavaScript, metadata, destinationer och miniatyrbilder använder validerade tvåpass-buffertar, geometrisk tillväxt av samlingar och cykelsäker traversering
- Efterbehandlingen vid sparande löser upp den aktiva katalogen, sidträdet och öppningsåtgärden via den aktuella xref-revisionen, cachar avkodade objektströmmar och skannar PDF-ordböcker med lexikaliska gränser
- Den delade PDF-tolkningen kräver nu exakta objekthuvuden, generationer, ordboksnycklar, strömlängder, prediktorgeometri, heltalsintervall samt gränser för kommentarer, literala strängar och hexadecimala strängar
- Valideringen av RFC 3161-svar binder nu både nonce och SHA-256-
messageImprint, kräver en strukturellt giltig signerare och tillämpar strikta regler för DER-längd, OID, INTEGER och GeneralizedTime
Fixat (Fixed)
- Inkrementella dokument väljer inte längre inaktiva dubblettkataloger eller felformade referenssuffix när en standardöppningsåtgärd läggs till
- Tidsstämpeltokens med DER-längder på lång form bevarar det fullständiga kodade tokenet, medan felformad ordning av CMS valfria fält och tomma signerarmängder avvisas
- Rena Delphi-byggen skriver nu PAdES nonce-fröfält via justeringssäkra bytekopior och skickar XFA-svar i byte med exakt rätt inbyggd pekartyp
TPdf.AboutInfo, Lazarus-paketmetadata och installationsmetadata rapporterar nu enhetligt Version 2.44.0
Version 2.43.0
Tillagt (Added)
- XFDF-fält- och anteckningsposter exponerar nu närvaroflaggor som skiljer ett utelämnat XML-värde från ett uttryckligen tomt värde
Ändrat (Changed)
- XFDF-import accepterar namnrymds-prefixerade element och attribut, blandat text- och CDATA-innehåll, enhetsreferenser och blankstegsbetydande värden samtidigt som ogiltiga Unicode-skalärreferenser avvisas
- XFDF-import och -export använder indexerad fältmatchning och begränsade geometriska buffertar, vilket förbättrar genomströmning och högsta allokering för djupt kapslade formulär, stora anteckningssamlingar, inklist, hörnpunkter och markup-fyrhörningar
- PDF/A- och PDF/UA-validering använder begränsad tillväxt för stora sid-, ström-, strukturnamns- och RoleMap-samlingar; PDF/UA-RoleMap-upplösning följer nu direkta matriser och indirekta namn- eller matrisobjekt med exakt generation
Rättad (Fixed)
- XFDF-rundresor bevarar nu djupt kapslade fältsökvägar, uttryckligen tomma fältvärden, uttryckligen tomt anteckningsinnehåll och skillnaden mellan frånvarande och tomt innehåll
- Ogiltiga minnesbuffert-laddningar och sidtilldelningar utanför intervallet avvisas utan att lämna kvar partiellt dokument- eller sidtillstånd, och en misslyckad omläsning av inbyggd sida bevarar den tidigare aktiva sidan
- Stora identifierare för markerat innehåll och signaturmetadata-buffertar begränsas och valideras före allokering eller inbyggd åtkomst
Version 2.42.0
Tillagt (Added)
TPdfMatrixtillhandahåller nuInvert,TryInvert,TransformPointochTransformRectför koordinatmappning, träfftestning, normaliserade gränser och explicit hantering av singulära matriserTPdf.WrapTextfick enBreakLongWords-överlagring som delar CJK och annan text utan blanksteg samtidigt som giltiga UTF-16-surrogatpar hålls sammanTPdfAnnotation.AttachmentPointSetsexponerar varje fyrhörning i flerradiga markup-anteckningar medan det befintliga fältetAttachmentPointsfortfarande är ett alias för den första uppsättningen
Ändrat (Changed)
- Textutvinning, konstruktion av läsbart innehåll, orduppslag och avstämningsmappning för uppläst text använder nu begränsad allokering och binära uppslagssökvägar, vilket minskar upprepade allokeringar och linjära skanningar på stora sidor
- ASN.1-serialisering och generering av krypterad PDF använder nu geometriska utdatabuffertar; ordning för krypterade objekt använder
O(n log n)-sortering och xref-rader skrivs direkt till den slutgiltiga bufferten WrapTextbevarar CR-, LF- och CRLF-radgränser och återanvänder ett inbyggt mätningsobjekt för hela operationen- XFDF-import och -export bevarar varje markup-fyrhörning; importen tillämpar även RGB-/interiörfärger och tolkar decimala koordinater oberoende av processens språkregion
Rättad (Fixed)
- Äldre anropare kan återigen uppdatera anteckningsinnehåll och författare genom att tilldela icke-tomma strängar utan att sätta de nyare vaktposterna
HasContentsochHasAuthor - Uttryckligen tomma anteckningssträngar använder nu en giltig noll-terminerad inbyggd buffert, så att rensning av
/Contents,/Toch andra valfria textnycklar inte längre skickar en nil-pekare till PDFium
Version 2.41.0
Ändrat (Changed)
- Preflight-rapporten
SaveJsonToFile,SaveMarkdownToFileochSaveTextToFileskriver nu UTF-8 på Delphi (vilket matchar befintligaSaveHtmlToFile) istället för systemets ANSI-kodtabell; icke-ASCII-tecken i filsökvägar, rekommendationer och omfångsanteckningar blev förvrängda på Delphi när de sparades via dessa metoder SaveCsvToFileskriver nu UTF-8 med ett BOM-prefix så att Excel for Windows automatiskt identifierar kodningen; utan BOM tolkar Excel en UTF-8 CSV som kodtabell 1252 och förvränger alla icke-ASCII-tecken
Rättad (Fixed)
- Demonstrationsprogrammet
ExtractImagesläckte cachelagradeTBitmap-objekt iFExtractedImagesnär formuläret stängdes utan att de uttryckligen rensades först; formuläret överskrider nuDestroyför att anropaClearExtractedImages, vilket frigör varje cachelagrad bitmapp
Version 2.40.0
Ändrat (Changed)
TPdf.RenderPage(HDC, ...)maskerar nu FPU/SSE-undantag kring anropet tillFPDF_RenderPage, vilket matcharTPdfView.RenderPage(HDC)(rättat i v2.25.0) och varje renderingsanropspunkt som returnerar en bitmapp; den direkta överlagringen till DC påTPdf-nivå lämnade tidigare FPU-undantag omaskerade i kompilatorer före D12
Rättad (Fixed)
ColorToARGBreturnerar nu en helt transparent pixel (alfa 0) förclNoneochclDefaultistället för att behandla sentinel-värdet som en bokstavlig RGB-färg; det tidigare beteendet skapade en mörk, nästan ogenomskinlig fyllning när en anropare skickadeclNoneoch förväntade sig "ingen färg"
Version 2.39.1
Rättad (Fixed)
- Expliciella PDF 1.3-sparningar tar nu bort poster för
/SMask /None,/AIS falseoch/TK truesom endast upprepar det initiala grafikläget, samtidigt som icke-standardiserade transparensstatusar fortsätter att avvisas
Version 2.39.0
Ändrat (Changed)
CreatePDFochImageToPDFanvänder nu bekräftade sparmål och rapporterar framgång endast närSaveAsslutförs utan felBatchExport,PDFtoJpgochSplitPDFtilldelar nu unika utdatakataloger så att upprepade körningar och indata med samma namn bevarar tidigare resultatSplitViewomsluter nu sökningen en gång utan att lämna kvar dolt sidtillstånd efter avbruten sökning eller utebliven matchning, samt avbryter ofullständiga utskriftsjobb istället för att skicka partiella utdata
Rättad (Fixed)
MergePDFavvisar nu felaktiga sidintervallstokens och utdatasökvägar som skriver över källan, räknar antalet faktiskt importerade sidor samt vägrar att spara ett tomt resultat- Delphi- och C++Builder-demonstrationerna för
Attachmentverkställer nu sparningar på samma sökväg via en återgångssäker filersättning så att ett misslyckat namnbyte inte kan ta bort ursprunglig PDF
Version 2.38.0
Ändrat (Changed)
SetAnnotationDataskyddar nu skrivningar av/Contentsoch/Authorbakom vaktposternaHasContents/HasAuthoriTPdfAnnotation, vilket matchar det befintliga mönstretHasName/HasSubject/HasIcon; tidigare skrevs dessa två fält villkorslöst, vilket innebar att en tilldelning av enDefault(TPdfAnnotation)-post för att endast uppdatera färg eller flaggor tyst skrev över anteckningens befintliga innehåll och författare med tomma strängar;GetPageAnnotationställer nu in vaktposterna så att en läs-modifiera-skriv-cykel bevarar de ursprungliga värdena
Rättad (Fixed)
GenerateFormAppearancesläser nu värdet för kryssrutan/radioknappen viaFPDFAnnot_GetFormFieldValue(vilket navigerar till överordnad fältordbok enligt ISO 32000-1 §12.7.5) istället förFPDFAnnot_GetStringValue(Annot, 'V', ...)(vilket läser gränssnittskomponentens ordbok); komponenten bär vanligtvis inget/V, vilket gjorde att/ASaldrig synkroniserades med det markerade tillståndet och en tillplattad kryssruta/radioknapp renderades som omarkerad
Version 2.37.0
Ändrat (Changed)
ParseTsaUrlbegränsar nu porten till1..65535efter tolkning; ett alltför stort portvärde skulle annars slå runt viaDWORD-truncering och kunna hamna på en giltig port- XFDF
ParseFieldaccepterar nu en djupparameter (standardvärde 0, begränsat till 64) och returnerar ett tomt fält vid gränsen, så att en skadligt kapslad 100 000 djup<field>-kedja inte längre kan spilla över stacken
Rättad (Fixed)
- TSA HTTP-begäran skyddar nu mot en tom begärandekropp innan
@ReqDer[0]skickas tillWinHttpSendRequest; en dereferering av en dynamisk array med noll-längd skulle komma åt en ogiltig pekare; även omBuildTimeStampReqalltid returnerar en icke-tom SEQUENCE, försvarar anropsplatsen nu kontraktet
Anmärkningar (Notes)
- Huvudkommentaren i
FPdfTsaWinom HTTPS-återkallningskontroll har korrigerats: WinHttp validerar serverns certifikatkedja som standard men utför inte CRL/OCSP-återkallningskontroll såvida det inte uttryckligen aktiveras viaWinHttpSetOption; den tidigare formuleringen hävdade att återkallningskontroll "ingår utan kostnad", vilket var missvisande
Version 2.36.0
Ändrat (Changed)
- TSA HTTP-begäranden skickar nu en explicit
Content-Length-rubrik utöver rubrikernaContent-TypeochAccept; WinHttp skapar den utifrån den totala längden, men vissa RFC 3161-proxyer kräver en explicit rubrik och avvisar annars begäran med411 Length Required - XFDF-export kastar nu bort C0-styrtecken (förutom TAB/LF/CR som redan är undantagna) istället för att skriva ut en ogiltig sekvens med omvänt snedstreck och hexadecimalt värde; den tidigare sekvensen
\-01Fär inte giltig XML (omvänt snedstreck har ingen speciell betydelse i XML) vilket gjorde att alla kompatibla läsare skulle ha avvisat dokumentet som felaktigt InjectAssociatedFilesskriver nu/Subtypein EmbeddedFile-strömordboken när anroparen angerTAssociateFile.MIMEType; fältet var deklarerat och dokumenterat men injiceraren hårdkodade tidigare/Type /EmbeddedFileoch ignorerade det (ISO 32000-2 §7.11.4 tillåter/Subtypei strömmen)
Rättad (Fixed)
- XFDF-importen hoppade över den första innehållsbyten efter en UTF-8 BOM samt den första byten när ingen BOM fanns:
BytesToAnsi(Bytes, 4, ...)(BOM) ochBytesToAnsi(Bytes, 1, ...)(ingen BOM) använde startpositioner som var felaktiga med ett tecken eftersomBytesToAnsitar ett 0-baserat arrayindex; anropen använder nu3och0 ExtractSignatureValuehade två indragningsbuggar av typen dinglande-ifdärR.Position:= CNkördes villkorslöst för de valfria grenarnacertificates [0]ochsignedAttrs [0]; grenarna har nu omslutits medbegin/endså att positionen flyttas fram endast när det valfria TLV-fältet faktiskt lästes (samma typ av bugg rättades iAddSignatureTimestampToCmsi v2.22.0)
Version 2.35.0
Ändrat (Changed)
TFPDFAvail_IsDocAvail,TFPDFAvail_IsPageAvailochTFPDFAvail_IsFormAvailtar nu emothints: PFX_DOWNLOADHINTSistället förvar hints: FX_DOWNLOADHINTSså att det dokumenteradenullptr-läget för enbart frågekörning (kontrollera nuvarande tillgänglighet utan att begära mer data) kan nås från Delphi; PDFium-rubriken tillåter uttryckligen atthintsär null och den tidigarevar-bindningen gjorde detta omöjligtTFPDF_SetSystemFontInfotar nu emotpFontInfo: PFPDF_SYSFONTINFOistället förvar pFontInfo: FPDF_SYSFONTINFOså att anropare kan skickanilför att instruera PDFium to sluta använda ett tidigare registrerat systemtypsnittsgränssnitt (den dokumenterade inaktiveringssökvägen)TPdfThumbnailView.Paintberäknar nuVisibleRowsmed samma formel somUpdateScrollBarRange(ClientHeight div RowHeight) så att antalet ritade rader matchar rullningslistens sidstorlek; den tidigare formeln för enbart ritning ((ClientHeight - FMarginY) div RowHeight + 1) kunde skilja sig med en rad vid gränshöjder, vilket slösade bort en rendering på en rad utanför sidan eller missade den sista synliga raden
Version 2.34.0
Tillagt (Added)
TPdf.SaveAsEncrypted/SaveAsEncryptedToStream— högnivå-API som sparar dokumentet och sedan krypterar det med PDF 2.0 AES-256-CBC (V=5/R=5/R=6); tar emot enTPdfEncryptOptionsmed användar-/ägarlösenord, behörigheter och revision; delegerar tillEncryptDocumentBytes- StrF-kryptering av bokstavliga strängar:
EncryptDocumentByteskrypterar nu bokstavliga strängar av typen(...)i icke-strömobjekt (Info-ordbok med mera) till hexadecimala AES-256-CBC-strängar, vilket matchar strömkrypteringsformatet (16-bytes IV + PKCS7-chiffertext); hexadecimala strängar av typen<...>lämnas orörda
Version 2.33.0
Tillagt (Added)
- Krypteringsinmatare för fullständigt dokument med AES-256-CBC i
FPdfEncrypt.pas;EncryptDocumentBytestar emot en PDF i klartext och ett lösenord, krypterar varje indirekt strömobjekt (16-bytes IV + AES-256-CBC PKCS7 under filnyckeln), korrigerar/Length, lägger till katalogobjektet/Encryptsamt återskapar en komplett klassisk korsreferenstabell + trailer med/Encryptoch/ID; slutför krypteringsstacken för PDF 2.0 (AES-block + GCM + SHA-512/384 + R6-nyckelgenerering + ordbok + dokumentsvep) - Hjälpfunktionen
EncryptStreamPayload— PDF 2.0 AES-256-strömformatet (IV läggs före AES-CBC-PKCS7-chiffertexten), vilket kan återanvändas av anropare som hanterar sin egen objektlayout
Version 2.32.0
Tillagt (Added)
- SHA-512- / SHA-384-hashning (FIPS 180-4) i den nya enheten
FPdfSha512.pas; implementerad i ren Pascal; krävs för lösenordshash-iterationen i PDF 2.0 R6, vilken förgrenar sig på ett 128-bitars mod-3-värde för att välja SHA-256/384/512 i varje omgång; verifierad med kända testsvar enligt FIPS-180-4 B.1 - Nyckelgenerering för PDF 2.0-kryptering samt ordboksbyggare för Encrypt i den nya enheten
FPdfEncrypt.pas; implementerar algoritmen 2.B i ISO 32000-2 §7.6.4.3 (R6-hash-dans: AES-128-CBC + iterativt val av SHA-256/384/512), härleder den 32-bytes filkrypteringsnyckeln samt posterna/O,/U,/OE,/UEoch/Perms, och bygger ordboken för Encrypt för V=5/R=5/R=6 med/CFM /AESV3; använder bytebuffertar i TBytes-stil
Version 2.31.0
Tillagt (Added)
- AES-blockkrypteringsprimitiver (FIPS 197) i den nya enheten
FPdfAes.pas; Pure-Pascal AES-128 och AES-256 blockchiffer samt hjälpfunktioner för CBC-läge och en CSPRNG-backend; korrektheten verifieras av FIPS-197 Appendix C.2 / C.3-tester med kända testsvar; detta utgör den kryptografiska grunden för krypteringsstacken i PDF 2.0 - AES-GCM-autentiserad kryptering (NIST SP 800-38D) i den nya enheten
FPdfAesGcm.pas; implementerar GHASH (GF(2^128)-multiplikation), GCTR och GCM AEAD-konstruktionen ovanpå AES-blockprimitiverna; NIST GCM-testfall 1 och 3 (AES-128) matchar den auktoritativa chiffertexten och taggen exakt och testfall 13 (AES-256) gör en fullständig rundresa; GCM är läget för ISO/TS 32003 i PDF 2.0 - Integritetsvalidering av PDF/A Level A ParentTree och ClassMap (ISO 19005-1 §6.8.3);
pvaiParentTreeMissingflaggar en StructTreeRoot utan nummerträdet /ParentTree ochpvaiClassMapUnresolvedflaggar en /C-klassreferens utan en /ClassMap
Version 2.30.0
Tillagt (Added)
- Inmatning av associerade filer (
InjectAssociateFiles/TPdf.SaveAsWithAssociateFiles, ISO 32000-2 §7.11.4); den nya enhetenFPdfAssocFilesbifogar/AF-matriser av filspecifikationsreferenser till katalogen eller valfri sidordbok, vilket täcker alla åtta värden i ISO 32000-2 tabell 45 för/AFRelationship; återanvänder mönstret för inkrementell uppdatering som verifierats avInjectPadesDssMarkers - Stöd för PDF/X-6 (ISO 15930-9:2020);
TPdfXConformancelägger tillpxc6och injiceraren samt valideraren leder detta genom identifieringen förpdfxid:GTS_PDFXVersion; PDF/X-6 är den PDF 2.0-baserade efterföljaren till PDF/X-4 för komplett utbyte - PDF/A förbjuder åtgärden
/Thread(ISO 19005-1 §6.6.1 godkännandelistesgap); listan över förbjudna åtgärder omfattar nu Thread tillsammans med Launch, ResetForm, ImportData, SetOCGState, SetState, GoTo3DView, Rendition och Hide
Rättad (Fixed)
- Valideringssökvägen för PDF/A-4e följer nu samma kontroller för taggad struktur, MarkInfo och orddelning som Level A; nedgraderingen på sparsidan i v2.29.0 omfattade
PdfAIsLevelE, men tre grindar iValidatePdfACompliancekontrollerade enbartPdfAIsLevelA, vilket gjorde att ett PDF/A-4e-dokument som saknade taggad struktur godkändes tyst - OCG-testavvikelse för
/BaseState: PostProcess-steget i v2.28.0 breddade acceptansen till/ONeller/OFF(ISO 32000-1 tabell 8.70) på ett korrekt sätt, men Delphi- och C++-testerna förväntade sig fortfarande att/OFFskulle avvisas; testerna använder nu ett verkligt ogiltigt värde (/Undefined) och ett nytt positivt test låser acceptansen för/OFF - Geospatial övermatchning av
/Subtype /GEO:ContainsDictionarySubtype('GEO')matchade varje ordbok som bar tokenet, inklusive orelaterade såsom en vilsekommen/ViewerPreferences << /Subtype /GEO >>; den nya funktionenContainsMeasureDictionarySubtypekräver dessutom/Type /Measureeller en Measure-exklusiv syskonnyckel, så att ordböcker som inte är Measure inte längre utlöser ADBE ExtensionLevel 3-kravet
Version 2.29.0
Tillagt (Added)
- Stöd för PDF/A-4 (ISO 19005-4:2020) i valideraren, XMP-injiceraren och objektmodellskiktet för Pdfium;
TPdfAConformancelägger tillpac4base,pac4fochpac4e; basnivån är PDF 2.0 (ISO 32000-2) och ersätter de äldre A/B/U-nivåerna med bas + F (formulär) + E (tillgänglighet);ValidatePdfAläser ettpdfaid:part=4XMP-paket (basnivån utelämnar konformitetselementet),SaveAsPdfAgenererar det ochSignPadesWithPdfAaccepterarpac4basesom en behållare för långtidsarkivering - Bindning för
FPDFBookmark_GetColor— den sista obundna offentliga exporten i PDFium (469/469);TBookmarkfår fältenHasColorochColorvilka fylls från bokmärkets/C-matris (ISO 32000-1 §12.3.3); bindningen använder tolerant laddning så att äldre DLL-filer som saknar exporten fortsätter att fungera - Versionskontroll av huvud för PDF/E-1 (ISO 24517-1 §5)
pveiBadPdfVersion— PDF/E-1 är baserad på PDF 1.6 och ett huvud som inte är 1.6 flaggas nu - PDF/R-1 (ISO 23504-1)
pvriEncryptVersionMismatch— kryptering är endast tillåten på ett%PDF-2.0-huvud; en 1.x-kropp som bär/Encryptflaggas nu (tidigare en verkningslös programsats) - PDF/R-1
pvriBadMediaBox— varje sidasMediaBoxska vara[0 0 w h];PdfRHasNonZeroMediaBoxOriginär en språkoberoende ASCII-skanner som hoppar över indirekta referenser till MediaBoxes - PDF/A Level A
pvaiRoleMapUnresolved(ISO 19005-1 §6.8.3.4) — en befintlig men ofullständig RoleMap som lämnar anpassade strukturtyper av typen/Somappade flaggas nu, vilket stänger gapet från den befintliga kontrollenpvaiRoleMapMissingsom endast letade efter dess existens
Rättad (Fixed)
PdfVersionToName(20)returnerade"1.0"istället för"2.0", vilket förstörde katalogposten/Versionoch valideringsmeddelanden för varje PDF 2.0-sparning; formateraren delar nu upp major.minor explicit för versionskoder som är>= 20- Kompileringen av kodaren för negativa INTEGER i
FPdfAsn1.pasmisslyckades under Delphi 12 (E2015vidInteger(-(V<0))), vilket blockerade hela testprojektet; detta har rättats genom att användaInt64(-Ord(V<0))för teckenutvidgningsmasken - Listan över förbjudna PDF/A-anteckningar inkluderar nu
/RichMediai alla delar (vilket tidigare hade missats; ISO 32000-1 §12.5.6.35 förbjuder det i PDF/A)
Version 2.28.0
Tillagt (Added)
TPdfVersioninkluderar nupv20för PDF 2.0 (ISO 32000-2);DecodePdfVersion(20)returnerarpv20istället förpvUnknownochEncodePdfVersion(pv20)ger 20 så att versionen av ett PDF 2.0-dokument inte längre går förlorad vid tillbakaläsning och kan skrivas uttryckligen
Ändrat (Changed)
DecodeDatetolkar nu PDF-datumsträngar med valfria efterföljande fält enligt PDF Reference 3.8.3, istället för att kräva den fullständiga 23-teckensformenD:YYYYMMDDHHmmSSOHH'mm'; kompatibla avkortade datum såsomD:20260712,D:20260712153000ochD:20260712153000Zaccepteras nu medan de tidigare avvisades av en hårdLength=23-gräns; tidszonens timförskjutning valideras nu mot det verkliga intervallet UTC-12..UTC+14 istället för> 23FPdfMeasure.MeasureTextkodar nu typsnittsnamnet som FPCAnsiString/ DelphiUTF8Encode, vilket matchar bibliotekets övriga anropsplatser för FPDF_BYTESTRING, istället för en renAnsiString-typomvandling som förvrängde icke-ASCII-familjenamn genom den aktuella kodtabellen
Rättad (Fixed)
- Sökvägen för negativa värden i
TDerWriter.Integerkraschade eller skapade felaktig DER: loopenwhile V <> -1 do V := V shr 8lämnadeInnertom förValue = -1(intervallfel vid efterföljandeInner[Length(Inner)-1]) och överproducerade bytes för andra negativa tal; kodaren extraherar nu tvåkomplementsbytes med teckenutvidgande skiftningar och stoppar korrekt när återstoden är ren teckenutvidgning; INTEGER-fält i CMS/PAdES är positiva så detta påverkar endast anropare som skickar negativa värden, men sökvägen är nu korrekt TPdf.GetCharacterOriginochTPdfView.GetCharacterOriginignorerade returvärdet frånFPDFText_GetCharOriginoch returnerade en oinitierad punkt vid fel; resultatet nollinitieras nu och en misslyckad läsning returnerar origo (vilket matchar kontraktet förGetCharacterRectangle)
Version 2.27.0
Ändrat (Changed)
- Demonstrationerna
PDFViewerochMultiPageViewerför Delphi, C++Builder och Lazarus wrappar nu dokumentsökningar en gång, godtarEnterochF3för nästa träff, återställer sökkontexten när sökalternativen ändras och reserverarEscför att avbryta en pågående sökning eller utskrift - Utskrift från visarna följer nu visarens aktuella rotation och väljer stående eller liggande utskrift därefter, så att verktygsradens rotation speglas på de utskrivna sidorna
- Alla tre
ViewerInteractionLab-demonstrationerna stödjer nu genvägarnaCtrl+A,Ctrl+C,Enter,F3ochEscutan att fånga in redigeringskontrollernas inbyggda markering och kopiering
Fixat (Fixed)
- Utskriftsavbrott i C++Builder- och Lazarus-visarna avbryter nu skrivarjobbet i stället för att skicka in de sidor som renderats före avbrottet, och Lazarus avslutar uttryckligen varje nästlad slinga för kopior, sidor och sortering
- Avbryt-knappen i Delphi-versionen av
MultiPageViewerär nu kopplad till sin händelsehanterare, och sökfälten i C++Builder-/Lazarus-versionen avMultiPageViewerbehåller inbyggd redigering med piltangenter samt Home och End
Version 2.26.0
Ändrat (Changed)
TPdf.GetObjectBitmap,TPdf.GetBitmap,TPdf.GetThumbnailoch deras motsvarigheter iTPdfViewtar nu render-låset runt anropenFPDFImageObj_GetBitmap/FPDFPage_GetThumbnailAsBitmap, i linje medRenderPage/RenderTile. Det är PDFium-anrop på rendersidan som tidigare kördes utan låset och kunde krocka med samtidigaUnloadPage/ReloadPagei samma dokumentTPdf.RenderPageThumbnailrespekterar nu sidans/Rotate-värde: anpassningen beräknas om utifrån de roterade måtten för sidor med/Rotate 90eller270så att miniatyrbildens proportioner motsvarar det visaren visar, i stället för att använda de inbyggda (oroterade) mått somFPDF_GetPageSizeByIndexreturnerar
Fixat (Fixed)
TPdfView.GetCharacterRectangleignorerade returvärdet frånFPDFText_GetCharBoxoch skickade en oinitieradTPdfRectangletillPageToDevicenär PDFium rapporterade fel. Rektangeln nollställs nu, och en misslyckadGetCharBoxreturnerarRect(0,0,0,0)GetLinkAnnotationsbuffertlängd för URI-sökväg och filsökväg var av med ett: det andra anropet avFPDFAction_GetURIPath/GetFilePathskickadesize(som inkluderar avslutande NUL) som buffertlängd till en buffert allokerad somsize-1. Anropet skickar nusize-1så att det inte kan skriva utanför allokeringen i ett PDFium-bygge som inte klampar av sig självt
Version 2.25.0
Ändrat (Changed)
TPdf.AddText,SetText,AddPathochInsertFormObjectFromXObjectogiltigförklarar nu den cachade textsidan och länkannoteringarna innan sidinnehållet genereras om, i linje medSetTextPositionsochRemoveObject. Tidigare returnerade ettGetText/GetWebLinks/FindFirst-anrop efter redigering av sidan inaktuella text- och länkdata som fångats före redigeringen, och det kvarhållnaFPDF_TEXTPAGE-handtaget användes efter att innehållet genererats om, med odefinierat beteende som följdTPdfView.RenderPage(HDC, ...)tar nu render-låset och maskerar FPU/SSE-undantag runt anropetFPDF_RenderPage, i linje med alla andra renderingsingångar. Den tidigare överlagringen som skrev direkt till DC kunde krocka med samtidigaUnloadPage/ReloadPagei samma dokument och lämnade FPU-undantag omaskerade i kompilatorer äldre än D12- Delphi-demonstrationen
PrintPDFanropar nuPrinter.Abortvid avbrott i stället för att låtafinally-blocket nåPrinter.EndDoc, vilket skickade in de sidor som renderats före avbrottet. Lazarus-demonstrationen hanterade redan detta korrekt
Fixat (Fixed)
TPdf.GetCharacter,TPdf.GetCharcodeoch deras motsvarigheter iTPdfViewkapade kodpunkter på det astrala planet (emoji, CJK Extension B) somFPDFText_GetUnicodereturnerade, ner till de låga 16 bitarna viaWideChar(), vilket gav en ensam surrogate som förstörde efterföljande textbehandling. Tecken över U+FFFF returnerar nu U+FFFD (ersättningstecken); användGetTextför att hämta den fullständiga UTF-16-kodningen av astrala teckenGetWebLinksanropadeSetLength(Rectangles, FPDFLink_CountRects(...))utan att skydda mot returvärdet-1, vilket utlöste ettEOutOfMemorypå en felformad sida. Ett negativt antal klampas nu till nollTPdf.Destroyrensar nuPassword-strängen ur minnet (viaUniqueString+FillChar) innan den referensräknade bufferten frigörs, så att lösenordet inte ligger kvar läsbart på heapen efter att komponenten förstörts
Version 2.24.0
Tillagt (Added)
TPdf.DeletePage,GetAttachment,GetAttachmentName,GetAttachmentType,SetAttachmentochDeleteAttachmentvaliderar nu sid-/bilageindex och höjerEPdfErrorför värden utanför intervallet, i linje med det befintliga beteendet hos annoteringsaccessorerna. Tidigare skickades ett index utanför intervallet rakt in i PDFium och gav en tyst no-op eller odefinierat beteende
Fixat (Fixed)
- Läckage av sidobjektshandtag vid fel i
TPdf.AddText,AddBitmapochAddJpegImage: närFPDFText_SetText,FPDFImageObj_SetBitmap,FPDFImageObj_SetMatrixellerFPDFImageObj_LoadJpegFileInlineutlöste ett undantag efter att objektet skapats men innanFPDFPage_InsertObjectöverlämnat det till sidan, läckte det inbyggdaFPDF_PAGEOBJECT-handtaget. Varje väg förstör nu objektet vid undantaget innan det kastas vidare TPdf.UnloadPagekastade bort ett pågåendeFPath-handtag (satt avCreatePathmen ännu inte använt avAddPath) genom att sätta det tillnilutan att anropaFPDFPageObj_Destroy. Handtaget förstörs nu, så att en skapad men övergiven bana (eller en som avbröts av sidbyte) inte längre läckerTPdf.InsertFormObjectFromXObjectutelämnade anropetUpdatePage(FPDFPage_GenerateContent) som varje syskoninsättning (AddText/AddPath/AddBitmap/AddJpegImage/SetText/RemoveObject) gör, så att ett Form XObject som infogats på det här sättet försvann vid nästa omstart eller sparande.UpdatePageanropas nu efter insättningen
Version 2.23.0
Fixat (Fixed)
- Valideringen av
/BaseStateför valfritt innehåll godtar nu/OFFutöver/ON(ISO 32000-1 Table 8.70 tillåter båda). Den tidigare kontrollen avvisade korrekta/OCProperties /D /BaseState /OFF-konfigurationer med felet “malformed optional content” trots att filen var konform - Valideringen av
/Intentför valfritt innehåll godtar nu/Designoch namnlistor som[/View /Design], inte bara den literala/View. ISO 32000-1 Table 8.70 definierar/Intentsom ett namn eller en lista med namn från/Viewoch/Design; den tidigare kontrollen med enstaka värde avvisade för mycket av standardverktygens utdata - Detekteringen av Geospatial Measure-ordböcker för grinden PDF 1.7
/Extensions /ADBEExtensionLevel 3 kräver inte längre/Type /Measure, som ISO 32000-1 Table 254 markerar som valfritt. GeoPDF-producenter som utelämnar/Type(PDFBox, QGIS, FME) gick tidigare förbi grinden och producerade i tysthet icke-konform PDF 1.7-utdata; detektorn matchar nu enbart/Subtype /GEO
Version 2.22.0
Ändrat (Changed)
- Zoomberäkningarna för sidanpassning i
TPdfView(GetPageZoom,GetPageWidthZoom,GetPageHeightZoom) använder nuClientWidth/ClientHeighti stället för fönstretsWidth/Height, så attpfmFitPage/pfmFitWidth/pfmFitHeightanpassar sidan till den synliga visningsytan i stället för den yttre ramen inklusive rullningslister och kanter, vilket eliminerar den överflödiga rullningslisten som dök upp när den anpassade sidan blev något större än klientytan AddSignatureTimestampToCmshöjer nu ett explicitExceptionsom identifierar det oläsliga CMS SignerInfo-fältet (version / sid / digestAlgorithm / signedAttrs / signatureAlgorithm) i stället för att tystExit:a och låta en partiell tolkning fortsätta som om det vore ett komplett signerat CMS; ett saknatbegin/end-block runt den valfria grenensignedAttrs [0], som lämnadeR.Positionoförändrat, är också åtgärdat
Fixat (Fixed)
- Läckage av CNG-handtag för privata nycklar i
ResolveWinSigner: närCryptAcquireCertificatePrivateKeylyckades men den efterföljande utläsningen av utgivare/serienummer ellerTWinCmsSigner.Createutlöste ett undantag, frigjordes aldrigNCryptKeyHandle, eftersom ägarskapet bara övergår till signeraren vid en lyckad konstruktor. Uppställningen efter förvärvet är nu omsluten så att handtaget först frigörs viaNCryptFreeObjectvid varje misslyckande EcDsaP1363ToDeravvisar nu en helfält nollställdr- ellers-halva i stället för att skicka ut enINTEGER 0; ECDSA-signaturer medr = 0ellers = 0är ogiltiga (RFC 4754 §6 / FIPS 186-4 §6 kräver1 ≤ r, s ≤ n-1) och skulle annars kunna godtas som äkta av en för slapp verifierare
Version 2.21.12
Åtgärdat (Fixed)
- Explicita PDF 1.5 till PDF 1.7-sparar avvisar nu felaktigt formaterade katalog-
/OCProperties-strukturer, inklusive saknade nödvändiga/OCGs- eller/D-poster, ogiltiga standardkonfigurationsvärden och icke-array-tillståndsposter
Version 2.21.11
Åtgärdat (Fixed)
- Explicita PDF-versionsparanden avvisar nu direkta eller indirekta sid-
/Annots-poster vars kommentarordbecker utelämnar den nödvändiga/Subtype- eller/Rect-posten
Version 2.21.10
Åtgärdat (Fixed)
- Explicita PDF 1.7-sparar kräver nu att geospatiala
/Type /Measure /Subtype /GEO-ordböcker och Projection-kommentarer deklarerar/Extensions /ADBEmed/BaseVersion /1.7och/ExtensionLevel 3eller senare
Version 2.21.9
Åtgärdat (Fixed)
- Explicita PDF 1.7-sparar kräver nu att RichMedia-kommentarer och
RichMediaExecute-åtgärder deklarerar/Extensions /ADBEmed/BaseVersion /1.7och/ExtensionLevel 3eller senare
Version 2.21.8
Åtgärdat (Fixed)
- Explicita PDF 1.7-sparar kräver nu att PRC 3D-strömmar deklarerar
/Extensions /ADBEmed/BaseVersion /1.7och/ExtensionLevel 1eller senare, istället för att behandla PRC som en kärna PDF 1.7-funktion
Version 2.21.7
Åtgärdat (Fixed)
- Explicita PDF 1.4 och äldre sparar avvisar nu bild-XObject
/SMaskInData-poster, inklusive ett explicit värde på0, eftersom inbäddade JPEG 2000-mjukmaskkanaler kräver PDF 1.5 eller senare
Version 2.21.6
Åtgärdat (Fixed)
- Explicita PDF 1.4 och äldre sparar avvisar nu 16-bitars bild-XObjects som kräver PDF 1.5 eller senare, medan PDF 1.5–PDF 1.7-mål behåller sina
/BitsPerComponent 16-bilddata
Version 2.21.5
Åtgärdat (Fixed)
- Explicita PDF 1.4 och äldre sparar avvisar nu dokumentkatalog-
/PageLayout /TwoPageLeft- och/TwoPageRight-värden som kräver PDF 1.5 eller senare, medan PDF 1.5–PDF 1.7-mål behåller den begärda tvåsidiga layouten
Version 2.21.4
Åtgärdat (Fixed)
- Explicita PDF 1.3-sparar avvisar nu dokumentkatalog-
/Lang-poster som kräver PDF 1.4 eller senare, medan PDF 1.4–PDF 1.7-mål bevarar språkidentifieraren
Version 2.21.3
Åtgärdat (Fixed)
- Explicita PDF 1.3-sparar avvisar nu dokumentets
/EmbeddedFiles-namnträd som kräver PDF 1.4 eller senare, utan att avvisa inbäddade filströmmar som refereras via äldre filspecifikationer
Version 2.21.2
Fixat (Fixed)
- Explicita sparanden som PDF 1.3 avvisar nu aktiva metadataströmmar, som kräver PDF 1.4 eller senare, medan de bevaras för mål med PDF 1.4 till PDF 1.7
Version 2.21.1
Åtgärdat (Fixed)
- Hybridreferensvalidering tillämpar nu kompletterande
/XRefStm-poster före klassiska xref-platshållare från samma revision, så att komprimerade anteckningar och andra versionsavstängda objekt inte längre missar
Version 2.21.0
Ändrat (Changed)
- Alla visarexempel för Delphi, C++Builder och Lazarus kan öppna en PDF som skickas som första kommandoradsargument, och exemplen
MultiPageViewerför C++Builder och Lazarus har explicita genvägar för markera allt och kopiera
Fixat (Fixed)
- Visarexemplen avvisar nu ogiltiga sidmål för bokmärken och länkar, bevarar inläsningsfel, validerar manuell zoom-inmatning på ett enhetligt sätt, skriver ut den begärda ifyllda formulärsidan i stället för att upprepa den synliga sidan, och avbryter annullerade Delphi-utskriftsjobb i stället för att skicka in partiell utskrift
Version 2.20.0
Ändrat (Changed)
- Alla Delphi-, C++Builder- och Lazarus-visarexempel erbjuder nu konsekvent genvägar för öppning, sökning, sparande, utskrift, zoom och sidnavigering, medan varje
ViewerInteractionLab-variant också stöder sidhopp, validerad manuell zoom 10–60 %, bestående interaktionsloggar och klick-koordinat rundresa-kontroller
Version 2.19.1
Fixat (Fixed)
- Valideringen av explicit PDF-version följer nu den aktiva revisionskedjan med klassisk, hybrid eller xref-ström, inklusive poster för komprimerade objekt, så att ersatta, frigjorda och orefererade objekt inte längre orsakar falska fel på funktionsversion
Version 2.19.0
Ändrat (Changed)
- C++Builder- och Lazarus-exemplen för bilagor, bildextrahering, textextrahering, sidkonvertering och delning använder nu dedikerade utdatamappar eller säkert färdigställda filer, stabila namn med nollutfyllnad, responsiva förloppsuppdateringar och sammanfattningar vid slutförande med felantal per post
Fixat (Fixed)
- C++Builder-versionen av
CJKTextLabmäter nu text via de exporterade PDFium-redigeringsfunktionerna, ochMergePDFundviker en tvetydig VCL-meddelandeöverlagring, vilket återställer rena RAD Studio 37-byggen
Version 2.18.3
Åtgärdat (Fixed)
- PAdES B-LTA Document Time-stamp registreras nu som ett identifierbart signaturfält — en osynlig Widget nåbar via första sidans
/Annotsoch AcroForm/Fields(ETSI EN 319 142-1 §5.4.3) — i stället för ett onåbart föräldralöst objekt som signaturfältuppräknande validerare inte kunde hitta; befintliga annoteringar och fält bevaras
Version 2.18.2
Åtgärdat (Fixed)
- PAdES-signering och klassisk korsreferensskrivning genererar nu ett tydligt fel när en byteförskjutning överskrider det fasta 10-siffriga fältets bredd (~9,3 GB) i stället för att tyst lämna
/ByteRange-platshållaren oskriven (vilket ger en ogiltig signatur) eller löpa över den 20-bytes xref-raden (ISO 32000-1 §7.5.4); korsreferensströmutdata använder 8-bytes binärfält och påverkas inte
Version 2.18.1
Åtgärdat (Fixed)
- PAdES-signering löser nu indirekta första sidans
/Annots-,/AcroForm- och/Fields-referenser via hela objekthuvudet (ISO 32000-1 §7.5.3) och via referensens faktiska generationsnummer; en enkel delsträckssökning matchade tidigare ett objektnummer inne i ett längre (löste5 0 Rtill15 0 obj) och ett hårdkodat generationsnummer missade objekt medgen>0, vilket korrumperade signaturfältarrayerna eller avvisade giltiga dokument - När katalogen, första sidan,
/Annots,/AcroFormeller/Fieldsfinns inuti en objektström försöker signeringen nu igen på en utvidgad kopia innan den misslyckas i stället för att avvisa dokumentet direkt
Version 2.18.0
Tillagt (Added)
ReadPdfVersionInforapporterar huvudversionen, den effektiva kärnversionen, katalogöverstyrningen och Adobe-utvecklartilläggsnivån från en PDF-ström
Ändrat (Changed)
- Explicita PDF 1.3–1.7-sparanden validerar nu katalog-, sidresurs-, XFA-, bortredigerings- och utvecklartilläggsstrukturer i sitt ägande objektkontext; krypterad explicit-versions-utdata och PDF 1.3 inkrementell normalisering avvisas för att bevara dokumentintegritet
- Filsökvägssparanden skriver nu till en syskon-temporär fil och ersätter målet endast efter att all komprimering, normalisering och versionskontroll lyckats
Åtgärdat (Fixed)
- PDF 1.3-utdata bär nu den obligatoriska fullständiga
/ProcSet-resursen och tar bort PDF 1.4 transparensnycklar när de bara upprepar PDF 1.3:s initiala grafikvärden - Hybrid-referens-, xref-ström- och objektströmfiler skrivs inte längre om av den klassiska xref-kompressorn, vilket förhindrar att komprimerade objektposter tappas bort
- Namn som liknar transparens- eller katalogfunktionsnycklar inuti strängar, kommentarer eller orelaterade resurskartor orsakar inte längre falska målversionsfel
Version 2.17.0
Tillagt (Added)
- PAdES-signaturer registreras nu som osynliga Widget-annoteringar i första sidans
/Annots-array och i AcroForm/Fields-arrayen, med bevarande av befintliga annoteringar och formulärfält
Ändrat (Changed)
- Inkrementella PDF/A-, PDF/X-, PDF/E-, PDF/R-, PDF/UA-, PDF/VT- och PAdES-uppdateringar bevarar nu källdokumentets korsreferensrepresentation: xref-strömdokument får en xref-strömsuppdatering enligt ISO 32000-1 §7.5.8.1, medan klassiska dokument fortsätter att få en xref-tabell
- Korsreferensförskjutningar,
startxref,/Prev, PAdES ByteRange-värden och SHA-256-intervallbearbetning använder nu 64-bitarspositioner med fragmenterad hashing, vilket möjliggör filer större än 2 GB i 64-bitarsbyggen - Genererade skrivbara XMP-paket reserverar nu 2 048 bytes utfyllnad före den avslutande paketinstruktionen
Version 2.16.10
Åtgärdat (Fixed)
- Objektströmsexpansion återuppväcker inte längre inaktuella kopior av objekt som en inkrementell uppdatering migrerat ut ur objektströmmen till en vanlig definition (ISO 32000-1 §7.5.7); överensstämmelsekontroller och markörinjektion löste tidigare den föråldrade katalogen eller metadataordboken i sådana filer
Version 2.16.9
Åtgärdat (Fixed)
- På Free Pascal breddas textsträngar vars indata inte är giltig UTF-8 byte-för-byte som Latin-1 och skrivs som UTF-16BE hex-strängar; de råa höga bytesen läckte tidigare in i en literal sträng, vilket inte är en giltig PDF 1.7 textsträngs-kodning
- Strömavkodning känner nu igen rå deflate-data utan RFC 1950 zlib-omslagsdata (ett vanligt fel hos trasiga skribenter) och dekomprimerar den i råläge, så att överensstämmelseskanningar inte längre tyst missar sådana strömmar
Version 2.16.8
Åtgärdat (Fixed)
- Inkrementella uppdateringar skrivna av spara-efterbearbetningsvägen uppdaterar nu det andra (ändrade) trailer-
/ID-elementet enligt ISO 32000-1 §14.4; båda elementen kopierades tidigare ordagrant, så caching- och synkroniseringsverktyg såg en oförändrad identifierare efter varje uppdatering
Version 2.16.7
Åtgärdat (Fixed)
- Strömkroppsblankning som används vid överensstämmelseskanningar kräver nu att nyckelordet
streamföljs av ett radslut (ISO 32000-1 §7.3.8.1); ordet inuti en literal sträng som(downstream)blankade tidigare all efterföljande struktur fram till nästaendstream, vilket dolde verkliga överträdelser från bytenivåkontrollerna - PDF/X- och PDF/E-skanningarna för förbjudna funktioner blankar dessutom literal strängar och kommentarer (§7.2.2), så ett värde som
/Title (see /JavaScript docs)eller ett kommenterat token ger inte längre ett falsktJavaScript-,AcroForm- ellerLZWDecode-fynd
Version 2.16.6
Åtgärdat (Fixed)
- PDF/VT DPM-poster valideras nu vid skrivtillfället enligt dokumentationen: nyckelnamn som bryter mot ISO 16612-2 §6.6 NMTOKEN-regeln eller Annex E registrant-prefixregeln, och dubblettnamn, avvisas i stället för att skrivas in i DPart-ordboken — ett namn med ett blanksteg delade tidigare upp i ett ogiltigt nyckel/värde-par och korrumperade ordboken
Version 2.16.5
Åtgärdat (Fixed)
- Att ta bort en ordbokspost vars värde är en hex-sträng (såsom
/Check <...>) tar nu bort hela posten; injektorerna lämnade tidigare ett föräldralöst hex-värde kvar, vilket producerade en syntaktiskt trasig ordbok - Att ta bort en post vars indirekta referens använder radbrytningar mellan tokens (ISO 32000-1 §7.3.10 tillåter valfritt blanksteg) lämnar inte längre generationsnumret och nyckelordet
Rkvar
Version 2.16.4
Åtgärdat (Fixed)
- Skanningen av maximalt objektnummer kräver inte längre att objekthuvuden börjar på en rad (ISO 32000-1 §7.5.3 tillåter valfritt blanksteg eller avgränsare före dem), så injektorer kan inte längre tilldela ett objektnummer som kolliderar med ett inline-
N G obj-huvud och tyst korrumperar filen; objektnummer begränsas av taket i Annex C - Strömmar vars
/Lengthär en indirekt referens löser nu det refererade heltalsobjektet och använder dess värde när det stämmer med det avslutandeendstream; tidigare begränsades sådana strömmar av en mönsterigenkänning, vilket trunkerade kroppar som lagligen innehåller bytesekvensenendstream— typiskt för inbäddade PDF-bilagor
Version 2.16.3
Åtgärdat (Fixed)
- Strömkomprimeringspassningar låter korsreferensströmdokument (PDF 1.5+-filer utan ett klassiskt
trailer-nyckelord) passera oförändrade; omskapningsvägen feltolkade tidigarestartxrefsom tabellplats och syntetiserade en gissad trailer, vilket kunde producera en fil som inte gick att öppna - Kompressorn hoppar över XMP-metadataströmmar så att ett PDF/A-dokument behåller sin obligatoriska ofiltrerade metadataström (ISO 19005-1 §6.7.2), och lämnar externa filströmmar (
/Fmed/FFilter) orörda - Den omskapade korsreferenstabellen skannar en strömfri kopia av dokumentet, så att binärt ströminnehåll inte längre kan imitera objekthuvuden eller blåsa upp tabellen; den omskapade trailers
/Sizeåterspeglar nu den faktiska tabellen och objektnummer är begränsade till taket i Annex C - Lokalisering av den ursprungliga korsreferenstabellen accepterar CR-only radavslut (ISO 32000-1 §7.5.1) och kan inte längre matcha bokstäverna
xrefinutistartxref; strömnyckelsordsskanning fick sammaendstream-svansguard som används på andra ställen och avancerar nu förbi överhoppade strömkroppar
Version 2.16.2
Åtgärdat (Fixed)
- Heltalsigenkänning i PDF-läsarna på bytenivå accepterar nu det explicita
+-tecknet som tillåts av ISO 32000-1 §7.3.3 och avvisar sifferkörningar som skulle svämma över, så att fientliga eller korrupta dokument inte längre kan linda parsade längder och förskjutningar till vilseledande värden
Version 2.16.1
Åtgärdat (Fixed)
- PDF/UA-injektorn skriver katalog-
/Lang-värdet som en korrekt PDF-textsträng; den körde tidigare värdet genom XML-escapern, så en språktagg som innehöll&eller parenteser producerade en korrumperad post, och icke-ASCII-indata skrevs som rå UTF-8 - PDF/E
/ISO_PDFEVersionInfo-posten använder den delade textsträngs-encodern, vilket håller icke-ASCII-värden lagliga i PDF 1.7 - XML-escaping för XMP-paket tar bort kontrolltecken som är otillåtna i XML 1.0, så metadata kopierad från ett skadat källdokument kan inte längre göra hela metadataströmmen icke välformaterad
- PDF-till-XMP-datumkonvertering validerar att datumfält är numeriska och fyller ut ett saknat minutfält, vilket förhindrar felformaterade ISO 8601-datum i genererad XMP; på icke-Windows-plattformar inkluderar reservtidsstämpeln nu tid på dagen i stället för bara datumet
Version 2.16.0
Tillagt (Added)
- Strömavkodning rekonstruerar nu
/DecodeParms-predikatorer (PNG-predikatorer 10–15 och TIFF-prediktor 2, ISO 32000-1 §7.4.4.4) efter FlateDecode, med hänsyn till/Colors,/BitsPerComponentoch/Columns; objektströmmar komprimerade med en prediktor — ett vanligt val för PDF 1.5+-skribenter — visade tidigare differensbytes, så de objekt de bär var tyst osynliga för överensstämmelseskanningar och markörinjektion
Åtgärdat (Fixed)
- FlateDecode-detektionen tolkar nu
/Filter-värdet som ett namn eller en array i stället för en delsträcksmatchning, så kaskadade filterkedjor och förekomster av ordet i orelaterade värden utlöser inte längre en falsk inflate; stöds inte kedjor faller tillbaka till råbytesen som tidigare
Version 2.15.1
Åtgärdat (Fixed)
- Ordboksskannern hoppar nu över literal strängar, hex-strängar och kommentarer när den balanserar
<</>>(ISO 32000-1 §7.2.2), så ordböcker som innehåller värden som(A >> B)eller en hex-sträng intill det avslutande avgränsaren trunkeras inte längre under trailer-, katalog- och överensstämmelseskanning - Literal strängextrahering avkodar nu hela §7.3.4.2 Tabell 3-escapeset —
\n \r \t \b \f, oktal\ddd, radkontinuationer och onormaliserade EOL-normaliseringar — i stället för att kopiera escape-bokstaven ordagrant, vilket återställer korrekta/Producer-,/GTS_PDFXVersion- och/ISO_PDFEVersion-jämförelser för skribenter som använder oktala escapes - Literal strängar skrivna av markörinjektor-erna escapar nu CR, LF och andra kontrolltecken så att värden överlever läsar-sidans radavslutsnormalisering byte-för-byte
Version 2.15.0
Åtgärdat (Fixed)
- Inkrementella uppdateringar skrivna av PDF/A-, PDF/X-, PDF/E-, PDF/R-, PDF/UA- och PDF/VT-markörinjektor-erna och av PAdES-signeringen och DSS-vägarna bevarar nu källdokumentets permanenta filidentifierare: det första trailer-
/ID-elementet förs över ordagrant enligt ISO 32000-1 §14.4 och bara det andra (ändrade) elementet uppdateras; tidigare regenererades båda elementen, så externa referenser och långtidsvalideringsarbetsflöden såg en annan dokumentidentitet efter varje sparning - PAdES-signaturer, DSS-injektion och B-LTA Document Time-stamps för nu källtrailerns
/Info-referens framåt (ISO 32000-1 §7.5.6), så dokumentegenskaper försvinner inte längre från läsarpanelerna efter signering; Document Time-stamp-trailern får dessutom/ID-arrayen - Trailer-
/Info-reservlösningen för korsreferensströmdokument hittar nu XRef-strömsordboken korrekt och bevarar referensens generationsnummer; den matchade tidigare aldrig på konforma PDF 1.5+-filer och tappade tyst bort/Info
Version 2.14.4
Åtgärdat (Fixed)
- Signaturordbokets
/M-datum skrivet avTPdf.SignPadesochSignPadesBytesbär nu det obligatoriskaD:-prefixet och UTC-förskjutningsmarkörenZsom krävs av ISO 32000-1 §7.9.4; strikta validerare avvisade tidigare signeringstiden som en felformaterad datumsträng
Version 2.14.3
Åtgärdat (Fixed)
- Ordboksnyckeluppslag i den delade PDF-läsaren matchar nu hela namntokens (ISO 32000-1 §7.3.5); tidigare trunkerades en ström vars ordbok listade
/Length1före/Length(typiskt för FontFile-strömmar) till fel byteantal, vilket tyst blindade PDF/A-, PDF/UA- och andra överensstämmelseskanningar som läser teckensnitt-, CMap- eller metadataströmmar /Encrypt-,/Root-,/Size- och/Info-trailer-uppslag matchar inte längre längre nycklar med samma prefix (såsom/EncryptMetadata)- Objektströmsexpansion litar inte längre på ett korrupt eller fientligt
/N-värde: icke-heltalsvärden ger nu 0 i stället för ett oinitierat tal, och en övre gräns härledd från/Firstförhindrar överdimensionerade allokeringar vid skanning av felformaterade dokument
Version 2.14.2
Åtgärdat (Fixed)
- PDF/X-, PDF/VT-, PDF/UA-, PDF/E- och PDF/R-markörinjektor-erna kopierar nu krypterade källdokument oförändrade i stället för att lägga till klartexts-uppdateringsavsnitt; det tidigare beteendet producerade filer vars senaste trailer saknade
/Encrypt-posten (ISO 32000-1 §7.5.6), så konforma läsare feltolkade den krypterade kroppen som klartext TPdf.SignPades,SignPadesBytesochInjectPadesDssMarkersgenererar nuEPadesCryptonär källdokumentet är krypterat, i stället för att tyst generera en korrumperad eller overifierbar fil; ta bort kryptering innan signering eller inbäddning av DSS-material
Version 2.14.1
Åtgärdat (Fixed)
TPdf.SignPadesochSignPadesBytesfyller nu i alla fyra/ByteRange-fält i signaturordboken; tidigare stod de tre sista fälten kvar med sina nollplatshållare, så producerade signaturer deklarerade ett tomt byteintervall och misslyckades verifieringen i konforma validerare- PAdES B-LTA Document Time-stamp-ordböcker får samma
/ByteRange-återfyllnadskorrektion ValidatePadesComplianceaccepterar nu standardsignaturlayouten där byteintervallets lucka håller det hexadecimala/Contents-värdet, och kontrollerar att det andra intervallets segment slutar exakt vid filens slut; tidigare godkändes bara lucklösa intervall i täckningskontrollen
Version 2.14.0
Tillagt (Added)
TPdf.ExportXFDFserialiserar varje formulärfältsvärde och annotering på alla sidor till ett XFDF-dokument (ISO 19444-1), och genererar<fields>för hierarkiska formulärvärden och<annots>för alla stödda annoteringsundertyper (text, highlight, underline, strikeout, squiggly, line, circle, square, caret, polygon, polyline, stamp, ink, freetext, fileattachment, sound, link, redact)TPdf.ImportXFDFläser ett XFDF-dokument tillbaka in i den inlästa PDF:en och återskapar annoteringar på matchande sidor och tillämpar fältvärden på sina widget-annoteringarTPdfAnnotation-posten fickName(NM),Subject,ModificationDate(M),CreationDate,Icon,Opacity(CA), linjeändpunkter, polygon/polylinje-hörn och bläcklistgesturfält så att XFDF-tur-och-retur bevarar full annoterings-metadata- Nytt
XfdfLab-exempel i Delphi-, C++Builder- och Lazarus-demoseten demonstrerar export/import-tur-och-retur
Version 2.13.6
Åtgärdat (Fixed)
ValidatePdfAbehandlar nu katalog-/Metadata-strömmar utan/Type /Metadataeller/Subtype /XMLsom saknad XMP-metadata viapvaiMissingXmpMetadata- PDF/A-preflightrapporter klassificerar nu
pvaiMissingXmpMetadatasom Metadata och rekommenderar en katalog-/Metadata-ström med/Type /Metadata,/Subtype /XML, ofiltrerad XMP ochpdfaid-markörer
Version 2.13.5
Åtgärdat (Fixed)
ValidatePdfArapporterar nu Widget-annoteringar utan utseendeordbok och PDF/A-2/PDF/A-3-annoteringar som kräver men saknar/APviapvaiAnnotationApDictViolation- PDF/A-preflightrapporter kategoriserar nu
pvaiAnnotationApDictViolationsom innehåll som markörinjektion inte kan reparera
Version 2.13.4
Åtgärdat (Fixed)
ValidatePdfArapporterar nu PDF/A-2- och PDF/A-3-inlingebilder vars/I- eller/Interpolate-värde ärtrueviapvaiImageDictionaryViolation, vilket matchar den befintliga täckningen av Image XObject-ordböcker- PDF/A-preflightrapporter kategoriserar nu
pvaiImageDictionaryViolationsom innehåll som markörinjektion inte kan reparera
Version 2.13.3
Åtgärdat (Fixed)
ValidatePdfArapporterar nu PDF/A-1-inlinebilder som använder/LZWDecode- eller förkortade/LZW-filter inuti innehållsströmmar viapvaiInlineImageLzwForbidden, vilket matchar den befintliga PDF/A-2- och PDF/A-3-inlinebildstäckningen- Inlinebildfilterskannern avancerar nu förbi ledande resursnamn som
/GS1, vilket undviker stopp vid skanning av bredare PDF/A-1-innehållsströmmar
Version 2.13.2
Tillagt (Added)
TPdf.SetFocusedFormFieldTextskriver text i det fokuserade formulärfältets redigeringsbuffer viaFORM_ReplaceSelection, symmetriskt medFocusedFormFieldText. För AcroForm-text/kombinationsfält committas värdet till/Vvid fokusförlust och bevaras; för XFA-textfält hamnar skrivningen bara i minnesbufferten (PDFium exponerar inget offentligt API för att stämma av XFA-värden till datamängdspaketet, så det bevaras inte över sparning)- JavaScript-värdplattformen kopplas nu in när V8-motorn är tillgänglig, oavsett om dokumentet är XFA — så inbäddade AcroForm JavaScript (dok-nivåskript, fältberäkningar,
app.alert) kan också köras. Tidigare koppladesm_pJsPlatformbara in för XFA-dokument, vilket lämnade AcroForm JS tyst inaktiverat
Ändrat (Changed)
- Inkoppling av JavaScript-plattform är nu oberoende av XFA-beslutet i
InitializeFormFill—m_pJsPlatform-tabellen byggs närV8FeaturesAvailableär true, tillämpad efter XFA-versions/callback-kopplingen snarare än kapslad inuti den
Version 2.13.1
Tillagt (Added)
- Nya värdhändelser exponerar information som v2.13.0 formulärfyllningscallbacks tidigare svalde:
OnXfaUriAction,OnXfaPageCountChanged,OnXfaFocusChange,OnXfaEmail,OnXfaHttpRequest,OnXfaOpenFile,OnJavaScriptBeep,OnJavaScriptPrint,OnJavaScriptMail,OnJavaScriptSubmitForm. Varje händelse standardiserar till det befintliga no-op-beteendet när den inte är tilldelad, så befintliga värdar påverkas inte TPdf.XfaFormPacketsskrivskyddad egenskap returnerar en engångs-ögonblicksbild av alla XFA-paket (TXfaPacketList), vilket uppfyllerTXfaPacket/TXfaPacketList-typerna som tidigare deklarerats men aldrig använts- XFA-specifika PDFium-felkoder
FPDF_ERR_XFALOAD/FPDF_ERR_XFALAYOUTär nu bundna och exponeras viaLastPdfError, vilket ersätter det generiska "Unknown error" för XFA-last/layoutfel
Ändrat (Changed)
FFI_DoURIActionWithKeyboardModifierkonsulterar nuOnXfaUriActioninnan en URI från ett XFA-fält shell-exekveras, vilket ger värden vetorätt (säkerhet: ett skadligt XFA-fält kunde tidigare starta godtyckliga URL:er villkorslöst). Ej tilldelade hanterare bevarar det tidigareShellExecuteW-standardbeteendetDecodeFormFieldTypedirigerar nu XFA-fälttyper viaIsXfaFormFieldi stället för ett explicit 8-grens case, vilket håller enumen justerad medFPDF_FORMFIELD_XFA_*efter ordinalförskjutning
Åtgärdat (Fixed)
ValidatePdfArapporterar nu PDF/A-1-påståenden som använder PDF 1.5 korsreferensströmmar eller objektströmmar med det nyapvaiPdfA1Pdf15Structure-problemet, medan det fortsätter att tillåta objektströmmar för PDF/A-2 och PDF/A-3
Version 2.13.0
Tillagt (Added)
- Fullt XFA (XML Forms Architecture) körtidsstöd:
TPdf.InitializeFormFillkopplar nu alla 14 version-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) och kopplar enIPDF_JsPlatformså att en XFA-aktiveradpdfium.dllkan rendera och skriptera dynamiska XFA-formulär - Ny
Lib\FPdfXfa.pas-enhet som deklarerar XFA-konstanterna (FXFA_PAGEVIEWEVENT_*,FXFA_MENU_*,FXFA_SAVEAS_*,FPDF_FORMFIELD_XFA_*) ochTXfaPacket/TXfaSaveFormat-typerna som tidigare bara refererades i kommentarer - XFA statisk paketläsare på
TPdf:GetXfaPacketCount/GetXfaPacketName/GetXfaPacketContent/GetXfaPacketByNameplusGetXfaTemplate/GetXfaDatasets/GetXfaConfigextraherar XFAtemplate-,datasets- ochconfig-paket som rå XML utan att behöva en XFA-aktiverad körtid — användbart för efterlevnadsgranskning och datamigrering - Förmågesonder: global
XfaFeaturesAvailable, och per-dokumentTPdf.XfaRuntimeAvailable(huruvidaFPDF_LoadXFAfaktiskt lyckades) ochTPdf.XfaStaticReadable(huruvida paketläsarexporten löser sig) TPdfFormFieldTypeutökad medfiXfa,fiXfaCheckBox,fiXfaComboBox,fiXfaImageField,fiXfaListBox,fiXfaPushButton,fiXfaSignature,fiXfaTextField, medDecodeFormFieldTypesom mappar de nyaFPDF_FORMFIELD_XFA_*-värdena- JavaScript-värdhändelser på
TPdf:OnJavaScriptAlert,OnJavaScriptResponse,OnXfaGotoUrlochOnXfaRuntimeMissinglåter värden anpassa JS-dialoger och XFA-navigering, eller reagera när ett XFA-dokument inte kan köra motorn - Nytt
XfaLabDelphi-exempel som demonstrerar XFA-detektering, paketextrahering, förmågeprovning och körtidens-saknas-reservvägen
Ändrat (Changed)
TPdf.LoadDocumentförhandsskannar nu indata för XFA-markörer (/XFAi AcroForm-ordboken, eller katalog/NeedsRendering) och väljer automatisktpdfium.v8.dllnär de hittas, genom att sättaEnableV8Engine := Trueinnan singleton-biblioteket läses in för första gången; när en vanligpdfium.dllväl är inläst kan processen inte byta, såOnXfaRuntimeMissingsignalerar detta fallTPdf.GetPageCountåterspeglar nu antalet sidor som XFA-motorn rapporterar viaFFI_PageEventefter dynamisk repaginering, snarare än bara det statiska PDF-sidträdet- När ett XFA-dokument öppnas men körtiden är otillgänglig fäster
InitializeFormFillnuversion=1ochxfa_disabled=1i stället för att begära version 2 med otilldelade callbacks, vilket tidigare riskerade en felaktig callback-pekaredereferens
Version 2.12.2
Åtgärdat (Fixed)
ValidatePdfACompliancerapporterar nu använda anpassade XMP-namnrymder utanpdfaExtension:schemassamtidigt som den fortfarande accepterar standard-pdfaid-metadata utan tilläggsdeklarationer- PDF/A-3-validering av inbäddade filer kräver nu både toppnivå-
/F- och/UF-poster på filespec-ordböcker och ignorerar kapslade/EF-strömnycklar vid kontroll av dessa namn
Version 2.12.1
Åtgärdat (Fixed)
ValidatePdfAComplianceavkodar nu escapade PDF-namntokens innan matchning av JavaScript, LZWDecode, Type1 och relaterade förbjudna namn, så förvrängda men semantiskt identiska namn rapporteras korrekt- PDF/A-inlinebildkontroller avvisar nu
/Filter- och/F-värden som använder/LZWDecode, förkortad/LZWeller/Crypt, inklusive array- och escapade-namnformer - PDF/A-validering rapporterar nu metadataströmmar med förbjudna strömfilter, OutputIntent ICC-profiler vars
/N-komponentantal saknas eller är inkonsekvent, och PDF/A-3-inbäddade filspecifikationer med saknat eller ogiltigt/AFRelationship
Version 2.12.0
Tillagt (Added)
- TSA HTTP-förfrågningar ställer nu in explicita 30 s-tidsgränser för varje fas (resolve/connect/send/receive) via
WinHttpSetTimeouts, så en långsam eller onåbar tidsstämpelauktoritet inte kan hänga signeringstråden på obestämd tid i stället för att förlita sig på WinHttp:s implicita standardvärden - Per-förfrågnings nonce-derivering för PAdES B-T/B-LTA-tidsstämpelförfrågningar när anroparen utelämnar
TPadesSignOptions.Nonce: en SHA-256-vikning av monoton räknare + väggklocka +GetTickCount64+ process-id ersätter den tidigare fasta$100000000-reserven, så att två förfrågningar utfärdade på samma millisekund inte längre återanvänder samma anti-replay-nonce PdfInflatebegränsar nu dekomprimerad utdata till 256 MiB för att förhindra att en zlib-komprimerad ström tömmer minnet vid fientlig eller korrupt indata (en “zlib-bomb”); gränsen är generös för verkliga PDF-strömmar
Ändrat (Changed)
TPdfView-överläggsöverlappning (sökmarkering, textval, läsord, spridningsval) använder inte längre per-pixelGetPixel/SetPixelV; rektangeln blandas nu via en 32-bpp off-screenTBitmapochScanLinei ett enda pass, vilket eliminerar tusentals GDI-kärnkorsningar per målning och gör stora val responsivaFPdfAsn1.TDerReader.ReadIntegeravvisar nu INTEGER-fält längre än 8 bytes (och 8-bytes negativa vars teckenbit skulle krävashl >= 64), returnerar 0 i stället för att beräkna ett felaktigt värde via odefinierat skiftbeteende på CMS/PAdES ASN.1-indataParseTimeStampRespekar inte längre tillbaka förfrågningsnonce:n somTPadesTimestamp.Nonce; tills TSTInfo-walker:n som verifierar den returnerade nonce:n landar, stannar fältet på 0 för att signalera “ej verifierad” snarare än att ge anropare falskt förtroende om att tidsstämpelssvaret är färskt
Åtgärdat (Fixed)
PointsToPixelsreturnerade sin indata oförändrad för varje DPI: divisorn varPointsPerInch(konstanten 72) i stället för literalen 72, vilket kollapsade formeln tillResult := Points. Alla externa anropare som gör points → enhetspiksel-storleksberäkning via denna hjälpare får nu det korrektaPoints × PixelsPerInch / 72PdfMaxObjNumunderräknade på dokument som använder objektströmmar (PDF 1.5+ ObjStm): objekt komprimerade inuti ett/ObjStmbär ingetN 0 obj-märke, så den råa-byte-skanningen missade dem, och injektorer som allokerarMaxObj+1för nya objekt skulle kollidera med dolda ObjStm-medlemmar och tyst korrumpera filen. Skanningen expanderar nu objektströmmar först så att varje objektnummer är synligtInjectPdfAMarkersförfalskar inte längre ett PDF/A-efterlevnadspåstående på ett krypterat dokument: PDF/A (ISO 19005-1 §7.1) förbjuder kryptering, och injektorn kopierade tidigare källan igenom med markörerna trots att nästa validering skulle avvisa det. NärHasEncryptär satt passerar källan nu igenom oförändrad. Den normalaTPdf.SaveAsPdfA-vägen tar redan bort kryptering (saRemoveSecurity) innan injektion, så detta påverkar bara direkta anroparePdfReadStreamBytesvägrar nu en/Lengthsom är större än hela filen innan resultatbufferten allokeras, vilket stänger en tidig allokeringsväg på en korrupt eller fientlig indirekt längd
Version 2.11.0
Tillagt (Added)
- PDFium
FPDF_FILEHANDLER-posten deklarerar nu sina sex callbacks (Release,GetSize,ReadBlock,WriteBlock,Flush,Truncate) som verkliga fält i stället för kommentarer, i enlighet med C-headerns layout. XFA FFI-filöverföringscallbacks (FFI_OpenFile/FFI_EmailTo/FFI_UploadTo/FFI_DownloadFromURL) som returnerar eller konsumerarPFPDF_FILEHANDLERlämnas fortfarande oimplementerade i Pascal-formulärfyllningslagret, men typen är nu strukturellt korrekt för alla framtida XFA-submit/uppladdningsvägar - PDFium-bibliotekslast och -urladdning (
LoadLibrary/UnloadLibrary) serialiseras nu av en processeglobal kritisk sektion, så att tvåTPdfFuture<T>-arbetstrådar (eller en arbete som tävlar med huvudtråden) inte kan observeraPDFiumLibrary=0och dubbelbinda, eller frigöra DLL:en medan en annan tråd håller på att binda - Ett
initialization/finalization-avsnitt anropar nuUnloadLibraryvid enhetsavladdning, vilket säkerställer attFPDF_DestroyLibrarykörs (arbetstrådsanslutning, V8-isolatavyttring, teckensnitt/cache-nedrivning) i stället för att förlita sig på operativsystemet för att återta DLL:en
Ändrat (Changed)
TPdf.SetActivesväljer nu alla undantag under laddning (tidigare baraEPdfError), så ett strömfel eller åtkomstöverträdelse under formulär/sids-konfiguration lämnarActive=Falsei stället för en delvis lastad komponent med obestämt tillstånd- Konsekvent teckenkodning för PDFium-metadata-nyckelargument:
TPdf.GetMetaTextanvänder nu samma FPCAnsiString/DelphiUTF8Encode-delning somGetViewerPreferenceoch laddningsvägarna, i stället för en renAnsiString(Tag)-konvertering - Deduplicerade hjälparna
BytesToAnsi,AnsiToBytes,WriteBytesochWriteStr:FPdfCompressimporterar dem nu frånFPdfPdfCommon(dessWriteBytesToStream/WriteAnsiToStream-alias är avvecklade) och den redundanta tre-argument-BytesToAnsi-överladdningen iFPdfPdfatas bort.FPdfAsn1behåller sin lokala kopia avsiktligt för att hålla kryptografilagret fritt från konformitetslagrets enhet
Åtgärdat (Fixed)
- Resursläcka i
TPdf.LoadDocument(fil, minne,TBytes,TMemoryStream, anpassad ström) ochTPdf.CreateDocument: omInitializeFormFillellerReloadPagekastade ett undantag efter attFPDF_LoadDocument/FPDF_CreateNewDocumentlyckats, läckte det internaFPDF_DOCUMENT-handtaget eftersomFActivefortfarande var False vid det tillfället. Varje väg omsluter nu post-laddnings-konfigurationen itry/exceptoch stänger dokumentet vid fel, vilket lämnar komponenten rent inaktiv - Vänligare PDFium DLL-lastdiagnostik:
CheckLoadLibrarydetekterarERROR_BAD_EXE_FORMAT(193) och rapporterar en 32/64-bitars arkitekturmismatch som pekar på det matchandeDLLs/Win32- ellerDLLs/Win64-bygget, i stället för att bara vidarebefordra det generiska OS-felet.CheckGetProcAddressanger nu att den distribueradepdfium.dllär äldre än bindningen när en obligatorisk export saknas, snarare än den enkla OS-texten "procedure not found"
Version 2.10.1
Rättat (Fixed)
- Standardisering av PAdES SignerInfo sid: signeraridentifieraren använder nu RFC 5652 §5.3-formen
issuerAndSerialNumber(issuer Name + serialNumber, båda extraherade ordagrant från signerarcertifikatets DER), vilket ersätter den tidigare icke-standardmässigasubjectKeyIdentifier+ SHA-256-platshållare för hela certifikatet som Adobe Acrobat och andra konforma validerare förkastade. En ny TbsCertificate DER-walker (ExtractIssuerAndSerial) läser issuer-SEQUENCE och serial-INTEGER som råa TLV-bytes — serienummer överskrider oftaInt64-intervallet, så den råa TLV:n är obligatorisk.subjectKeyIdentifier-formen finns kvar endast som reserv när parsning av cert-DER misslyckas
Ändrat (Changed)
TCmsSignerId.SerialNumber: Int64ersatt medSerialDer: TBytes(den råa serialNumber-TLV:n). CMS-byggaren bäddar in det avskurna TLV:t ordagrant iIssuerAndSerialNumber, vilket undvikerInt64-överspill på 20-bytes CA-serienummer (övre gräns RFC 5280 §4.1.2.2)
Version 2.10.0
Tillagt (Added)
- PAdES B-LT långtidsvalidering: när
TPadesSignOptions.Level >= plB_LT, läggerSignPadesBytestill en inkrementell uppdatering som bär en/DSS-ordbok med signerarcertifikatet och hela intermediära kedjan (det självsignerade roten utesluts enligt RFC 5652 §10.2.3), plus/Extensions /ESICLevel 1-markören (EN 319 142-1 §5.4.2) - PAdES B-LTA arkivtidstämpel: när
Level >= plB_LTAochTsaUrlär satt, läggs en Document Time-stamp-signaturordbok (/SubFilter /ETSI.RFC3161) till vars/ByteRangetäcker hela filen; ESIC-markören befordras till Level 2. Detta slutför de fyra PAdES-basnivåerna (B-B, B-T, B-LT, B-LTA) - Insamling av certifikatkedja:
ResolveWinSigneranropar nuCertGetCertificateChainoch fyllerTPadesResolvedSigner.ChainCertDermed de intermediära CA-certifikaten, så att B-LT/DSS /Certsbär varje certifikat som krävs för att validera signaturen utan externa uppslag.CertFreeCertificateContextär nu bunden, vilket stänger den en-kontext-per-signatur-läcka som noterades i v2.8.0 - PDF/A-integreringsarbetsflöde:
TPdf.SignPadesWithPdfAkonverterar först dokumentet till PDF/A (den högsta nivån biblioteket avger idag) och tillämpar därefter den begärda PAdES-signaturen — det långtidsarkiverande containermönster som EN 319 142-1 Annex A.7 rekommenderar
Version 2.9.0
Tillagt (Added)
- PAdES B-T betrodd tidstämpel:
TPadesSignOptionsfårLevel-,TsaUrl- ochNonce-fält. NärLevel >= plB_TochTsaUrlär satt, extraherarSignPadesBytessignaturvärdet från den byggda CMS:n, begär en RFC 3161-tidstämpel över det, och bäddar in det returnerade TimeStampToken som SignerInfo-attributet utan signatursignature-time-stamp— det B-T-betrodda-tids-steget (EN 319 142-1 §6.3 req o) FPdfTsa: plattformsoberoende RFC 3161-klient —BuildTimeStampReq(version 1, SHA-256 messageImprint över signaturvärdet, nonce, certReq=true),ParseTimeStampResp(accepterar PKIStatus 0/1, förkastar 2+, extraherar TimeStampToken-ContentInfo ordagrant), ochRequestTimestamp(bygg+POST+parse i ett steg).PadesTsaAvailablestyr funktionen på plattformar utan en HTTP-backendFPdfTsaWin: Windows WinHttp-backend, dynamiskt bunden från winhttp.dll (noll nya kompileringstidsberoenden; HTTPS förhandlas av Windows certifikatarkiv). Speglar det dynamiska bindningsmönstret iFPdfCryptoWinFPdfCms:ExtractSignatureValuegår igenom en byggd CMS för att återhämta råa signatur-oktetter (TSA-hashindata), ochAddSignatureTimestampToCmsbygger om ContentInfo med ett nyttunsignedAttrs [1](0xA1) som bär tidstämpelattributet. Stage-1-valideraren känner igen resultatet som en B-T-signatur
Version 2.8.0
Tillagt (Added)
- PAdES B-B-signeringsstack: fyra nya byggstenar i ren Pascal/plattformsoberoende (
FPdfSha256,FPdfAsn1,FPdfCms,FPdfCrypto) plus en Windows CNG-backend (FPdfCryptoWin) låterTPdf.SignPades/SignPadesToStreamproducera en PAdES B-B-signatur från ände till ände. Signerarcertifikatet löses via SHA-1-tumavtryck från Current User “MY”-arkivet; RSA-PSS (rekommenderas), RSA PKCS#1 v1.5 och ECDSA stöds alla viaNCryptSignHash FPdfSha256: fristående FIPS 180-4 SHA-256 (Init/Update/Final + one-shot-hjälpmetoder). FPC 3.2.2 levererar ingen SHA-2-enhet, så biblioteket äger en för att hålla varje CMS-kodsökväg på en endaTSHA256Digest-typ utan RTL-greningFPdfAsn1: DER-kodare (TDerWriter) och -läsare (TDerReader) som täcker SEQUENCE/SET/OID/INTEGER/OCTET STRING/UTCTime/GeneralizedTime/kontextspecifika taggar, med den bestämda längdkodningen och IMPLICIT-tagghanteringen som CMS kräverFPdfCms: CAdES SignedData-byggare (BuildSignedData) som avger de signerade attributen content-type, message-digest och signing-certificate-v2 som PAdES-basen kräver, med valfri signing-time och commitment-type-indication. SignedAttrs-digesten beräknas över den SET-taggade (0x31)-formen och återutsänds med IMPLICIT [0] (0xA0)-taggen enligt RFC 5652 §5.4FPdfCrypto+FPdfCryptoWin: kryptografisk backend-abstraktion medPadesCryptoAvailable/ResolvePadesSigner, och Windows-implementeringen binder crypt32.dll / ncrypt.dll dynamiskt (inget nytt kompileringstidsberoende av DLL). ECDSA-signaturer kodas om från Windows IEEE P1363 r¦s-form till det DERECDSA-Sig-Valuesom CMS kräverSignPadesBytes: signaturinjektion på bytenivå — reserverar ett/Contents-hexfält med fast bredd, beräknar den täckande/ByteRange, digestar dokumentet, bygger och bäddar in CMS:en, och lägger till den inkrementella uppdateringen. Valideraren (v2.7.0) känner igen utdata som en PAdES B-B-signatur
Version 2.7.0
Tillagt (Added)
- PAdES-strukturvaliderare (ETSI EN 319 142-1 V1.2.1): den nya enheten
FPdfPadesoch metodenTPdf.ValidatePadesinspekterar signaturvärdesordböcker nåbara från/ByteRange, går igenomSignedData-CMS:en inuti/Contentstillräckligt långt för att bekräfta CAdES detached-formen, och upptäcker de fyra basnivåerna (B-B, B-T, B-LT, B-LTA) samt Document Time-stamp-ordböcker (/SubFilter /ETSI.RFC3161) - PAdES problemuppsättning på klausulnivå: 26
ppei*-enum täcker/SubFilter-acceptabilitet (adbe.pkcs7.sha1ochadbe.x509.rsa_sha1flaggade som förbjudna), filtäckning för/ByteRange,/Cert-förbud, form på CMSSignedData(enskild signerare, detached eContent, versionsintervall), de obligatoriska signerade attributen (content-type,message-digest,signing-certificate/v2), förbjudna digestar (MD5, SHA-1), ömsesidig uteslutning mellan/Reasonochcommitment-type-indication(req d), B-T-kravet på betrodd tid, B-LT/DSS+/Certs+ ESIC Level 1-markör, samt B-LTA Document Time-stamp + ESIC Level 2-markör - DSS-injektor:
TPdf.SaveAsPadesDss/SaveAsPadesDssToStreamlägger till en inkrementell uppdatering som bär en/DSS-ordbok (med/Certs-,/OCSPs-,/CRLs-strömm-arrayer) och markören/Extensions /ESIC(Level 1 eller 2) på en kopia av dokumentet, varvid de ursprungliga bytena bevaras — steget för inbäddning av B-LT/B-LTA-valideringsmaterial (klausul 5.4.2) - Plattformsoberoende, nollberoende steg: valideraren och injektorn är ren Pascal och fungerar på varje IDE som stöds (Delphi, Lazarus, FPC, C++Builder); ingen kryptografisk backend krävs för denna version, och inget nytt DLL-beroende införs
Version 2.6.0
Ändrat (Changed)
- Tvästandard-avduplicering: sju ytterligare duplicerade hjälpfunktioner (PdfEnclosingObjNum, PdfDictRefNum, PdfExpandObjectStreams, PdfTextStr, ExtractLiteralString, ExtractXmpAttr) har tagits bort från de enskilda standardenheterna och konsoliderats i
FPdfPdfCommon, vilket minskar cirka ~300 rader av underhållsbörda med kopiera-klistra - PreflightReport-kvalitet: PDF/X- och PDF/E-innehållsklassproblem som tidigare föll igenom till den generella “missing marker”-kategorin bär nu korrekta Content/Metadata/Security-kategorier och klausulspecifika rekommendationer (~15 enum över båda standarderna)
- PDF/E- och PDF/R-testtäckning: sex ytterligare enum utan täckning fick positiva tester (
pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden,pveiEmbeddedFilesForbidden,pvriBadHeader,pvriProhibitedInfoEntry) - Lazarus-byggfix:
Tests.PdfVT(en Delphi-endast DUnitX-enhet tillagd i v2.5.x) är nu utesluten från Lazarus-projektet för att återställa kompilering
Version 2.5.3
Tillagt (Added)
- OutputIntent-fullständighet (PDF/X-4 §6.2.4):
pvviOutputIntentSchemeflaggar en OutputIntent vars/Sinte är/GTS_PDFX;pvviOutputIntentMissingIdentifierflaggar en saknad/OutputConditionIdentifier - PDF/VT-2 Reference XObject-undantag (§6.2.2):
pvviReferenceXObjectForbiddenutlöses inte längre för enPDF/VT-2-fil, som lagligen får använda Reference XObjects på en X-5g/5pg-bas - Validering av MIME-boundary-tecken (RFC 2046 §5.1.1):
vtmviBoundaryInvalidCharflaggar en boundary vars tecken faller utanför bchars-uppsättningen eller vars längd överstiger 70
Rättat (Fixed)
InjectPdfVTMarkersskriver nu Info/CreationDateoch/ModDatefrån sparningsalternativen, så att den producerade filen rundreserValidatePdfVTComplianceutan en falskpvviInfoModDateMismatch(injektorn skrev tidigare om XMP-datumen men lämnade Info-ordbokens datum föråldrade)
Version 2.5.2
Tillagt (Added)
- Info
/ModDate-konsistens (§6.3 NOTE 2, PDF/X-4-bas):pvviInfoModDateMismatchflaggar en Info-ordboks-/ModDatesom, efter normalisering från PDF-datum till XMP-datum, inte är lika medxmp:ModifyDate - PDF/VT-2s inline-chunk-överensstämmelse (Annex A.2): MIME-valideraren kör nu
ValidatePdfVTCompliancepå varje inlineapplication/pdf-del och flaggar en icke-PDF/VT-kropp viavtmviInlinePdfNotPdfVT
Version 2.5.1
Tillagt (Added)
- DParts-chunking-validering (ISO 16612-2 §6.5 Table 4):
pvviDPartsBadChunkingflaggar en/DParts-array vars icke-slutgiltiga sub-arrayer inte har exakt 8192 poster eller vars sista sub-array faller utanför 1..8192 - RecordLevel-konsistens över strömmar (Annex A.2): PDF/VT-2s MIME-valideraren extraherar nu varje inline PDFs
/RecordLeveloch flaggar oenighet viavtmviRecordLevelMismatch, vilket kompletterar den befintliga NodeNameList-kontrollen - Tips för återkommande grafiska objekt (§6.7):
pvviGtsScopeInvalidValueflaggar en/GTS_Scopeutanför {SingleUse, Record, File, Stream, Global, Unknown};pvviGtsScopeRecordWithoutRecordLevelflaggar/Recordutan en/RecordLevel;pvviGtsXidNotUuidflaggar en/GTS_XIDsom inte är ett RFC 4122 uuid:-URI;pvviGtsEnvMissingflaggar en saknad/GTS_Envnär/GTS_Scopeär Stream eller Global (§6.7.4) - MIME-detektion av framåtreferens (Annex A.2):
vtmviForwardReferenceflaggar en inline PDF som åberopar ett filnamn (via/EF /F) som inte introducerats av en tidigare bilagedel i strömmen
Rättat (Fixed)
ExtractNodeNameListFromPdfochExtractRecordLevelFromPdfiFPdfPdfvtMimelöste ett återkommande fel-för-ett där den 1-baserade förskjutningen som returnerades avAnsiFindKeybehandlades som en absolut byteförskjutning i den expanderade PDF:en
Version 2.5.0
Tillagt (Added)
- PDF/VT Document Part Metadata (DPM, ISO 16612-2 §6.6):
TPdfVTSaveOptionsfickDpmEntriesochDpmTargetså att en skrivare kan fästa en/DPM-ordbok vid den syntetiserade DPart-noden, med validering av nyckelnamn mot Annex E-regeln för andraklassprefix och §6.6:s NMTOKEN- / unikhets- /GTS_Managed-formregler på validerarsidan - PDF/VT-2s-strömmingsutbyte (Annex A): den nya enheten
FPdfPdfvtMimetillhandahållerBuildPdfVT2sStreamochValidatePdfVT2sStreamför detmultipart/mixed-MIME-kuvert som bär inline PDF/VT-chunk plus bilagda ICC-profiler, med regel förX-PDFVT-Stream-version: 1-rubrikordning och konsistenskontroll avNodeNameListöver strömmar TPdf.ValidatePdfVTutför nu en auktoritativ JavaScript-åtgärdsräkning viaFPDFDoc_GetJavaScriptActionCount, vilket kompletterar/JavaScript-namnskanningen på bytenivå
Rättat (Fixed)
- PDF/VT
Trapped-korrekthet på PDF/X-4-basen: enum-värdetptvUnknownär borttaget (PDF/X-4 förbjuder/Unknown),ptvUnspecifiednormaliseras till/Falsevid skrivning (en saknad/Trappedär också förbjuden), och ett nyttpvviTrappedInvalid-problem flaggar ett saknat ellerUnknown-värde ValidatePdfVTComplianceexpanderar nu objektströmmar (PdfExpandObjectStreams) före skanning, så att en katalog-, OutputIntent- eller Metadata-ordbok som lagras inuti en komprimerad ObjStm (PDF 1.5+, typiskt för PDF/X-4-producenter) är nåbar av uppslagen på bytenivå
Ändrat (Changed)
- PDF/VT-1 ärver nu de fullständiga PDF/X-4-innehållsförbuden:
pvviAcroFormForbidden(/AcroFormeller/XFA),pvviAdditionalActionsForbidden(katalog/AA),pvviMissingTrimBoxochpvviReferenceXObjectForbidden(Reference XObject, endast X-5g/5pg) - Tvästandard-avduplicering:
BuildDictObj,IccComponentCount, den inbyggda sRGB ICC-profilen (GetSrgbIccProfile),PdfTextStr,PdfEnclosingObjNum,PdfDictRefNumochPdfExpandObjectStreamsbefordrades från tredubblade lokala kopior iFPdfPdfa/FPdfPdfx/FPdfPdfvttill ett enda kanoniskt hem iFPdfPdfCommon; den 3144 byte stora ICC-literalen finns nu exakt en gång i kodbasen
Version 2.4.0
Rättat (Fixed)
InjectPdfUaMarkerstappar inte längre bort trailerns/Info-referens på en korsreferensström-bas (cross-reference-stream): den lokalaSourceTrailerInfoRef(som saknade xref-ström-fallback) har ersatts av den gemensammaPdfSourceTrailerInfoRef(flyttad från PDF/A-kopian som har haft fallback sedan v2.0.0)- Den gemensamma
PdfReadStreamByteshanterar nu indirekta/Length N G R-referenser (porterad från den lokala PDF/A-kopian), vilket gör att PDF/VT-, PDF/R- och PDF/E-validatorerna inte längre felläser eller hoppar über XMP-metadataströmmar som skapats av verktyg som använder indirekt Length (Acrobat, Ghostscript)
Ändrat (Changed)
- Deduplicering över standarder: de lokala kopiorna av
PdfReadTraileriFPdfPdfaochFPdfPdfx, de lokala kopiorna avSourceTrailerInfoRefiFPdfPdfaochFPdfPdfuasamt den lokalaPdfReadStreamBytesiFPdfPdfahar raderats — de gemensammaFPdfPdfCommon-versionerna gäller nu överallt, vilket tar bort cirka ~330 rader duplicerad kod och eliminerar underhållsbördan med att hålla kopior synkroniserade - PDF/X testtäckning-förbättring: sju enums för innehållsklasser med tidigare noll täckning har fått positiva tester (
pvxiLzwForbidden,pvxiJavaScriptForbidden,pvxiFormFieldsForbidden,pvxiAdditionalActions,pvxiEmbeddedFilesForbidden,pvxiMissingTrimBox,pvxiTrappedNotSet)
Version 2.3.0
Ändrat (Changed)
- PDF/A testtäckning-förbättring fortsätter: ytterligare tre enums med noll täckning har fått positiva tester;
pvaiForbiddenRenderingIntent(§6.2.9) flaggar ett icke-standardiserat rendering-intent-namn i en innehållsström;pvaiJpeg2000Violation(§6.2.2) flaggar en JPXDecode-bild med/NumComponentsutanför {1,3,4} vid Part 2;pvaiInlineImageLzwForbidden(§6.1.10) flaggar en inbäddad bild som använder LZW-filtret vid Part 2
Version 2.2.0
Ändrat
- Regressionstester för korsreferensström (cross-reference-stream): det befintliga
Validate_XrefStreamTrailer_DetectsConformanceverifierar nu även att katalogen/Metadata-referens är matchad och att XMPpdfaid:partläses på en xref-stream-bas (inte bara/Root+/ID); ett nytt testInjectPdfA_XrefStreamBase_RoundTripsskyddar injektorns xref-stream-sökväg som lades till i v2.0.0; två tvärstandardtester (PdfE_XrefStreamBase_NotRejectedAsUnparsable,PdfR_XrefStreamBase_NotRejectedAsUnparsable) verifierar att PDF/E- och PDF/R-validerare inte längre avvisar xref-stream-PDF:er som ej tolkningsbara - Stängning av testskuld för PDF/A:
Validate_MinimalPdf_FlagsRequiredMarkersverifierar att en minimal PDF utlöserpvaiMissingPdfAIdentifier,pvaiMissingOutputIntent,pvaiMissingIccProfile,pvaiMissingXmpMetadataochpvaiMissingXmpDates— vilket stänger symmetrigapet med PDF/E- och PDF/X-validerarna som redan hade motsvarande tester; ytterligare två enum-värden med noll täckning fick positiva tester:pvaiUnembeddedFontochpvaiSubsetMissingCidSet
Version 2.1.0
Fixat
- PDF/E utelämnades av misstag från korrigeringen för korsreferensström (cross-reference-stream) i v2.0.0: både
InjectPdfEMarkersochValidatePdfEComplianceanropade fortfarandePdfReadTrailerutanAcceptXrefStream, vilket ledde till att PDF/E-injektorn misslyckades tyst på PDF 1.5+-utdata (pdfiums standard förSaveAsCopy); båda anropsplatserna skickar nuTrue - Den delade reservlösningen för
PdfReadTrailer-korsreferensström har nu skyddet/Type /XRefsom de lokala kopiorna för PDF/A och PDF/X redan hade, så att en skadadstartxref-offset som pekar på ett orelaterat lexikon (dictionary) misslyckas rent istället för att feltolkas som trailern - Den indirekta referenslösaren för
/LangiValidatePdfUaCompliance(v2.0.0) var ouppnåelig:PdfFindObjDicthittar endast<<-lexikon, men ett/Lang-strängobjekt är(...)eller<...>utan lexikon; ersatt med en direkt objektsgenomsökning som lokaliserar sträng-token
Ändrat
- Sju oanvända skuggkopior av hjälpfunktioner (PdfStructureBytes, PdfHasName, PdfCountName, BuildStreamObj) som var bit-identiska kopior av de delade
FPdfPdfCommon-versionerna har tagits bort frånFPdfPdfaochFPdfPdfua— de delade versionerna används nu överallt viauses
Version 2.0.0
Fixat
- Tyst misslyckande över standarder: den delade hjälpfunktionen
PdfReadTrailer(används av markörinjektorer och validerare för PDF/UA, PDF/X, PDF/VT och PDF/R) accepterar nu enAcceptXrefStream-parameter och faller tillbaka till korsreferensströmmens objektlexikon när ingettrailer-nyckelord finns (PDF 1.5+); tidigare ledde pdfiumsSaveAsCopy-utdata (som använder en korsreferensström) till att alla markörinjektorer misslyckades tyst — källbyten kopierades oförändrade och anropet returnerade ändå framgång; PDF/R-1.0-valideraren (vars PDF 2.0-bas alltid är en korsreferensström) var i praktiken verkningslös; PDF/A-validerarens mogna implementering porterades till den delade hjälpfunktionen så att alla standarder drar nytta av den - Skanning av trailer-lexikon i
InjectPdfUaMarkersochInjectPdfAMarkersanvänder nu den djupmedvetnaPdfDictEndistället för en ren>>-sökning, så att en trailer som innehåller ett nästlat lexikon (t.ex./Encrypt << ... >>) inte längre klipps av för tidigt före en avslutande/Info-post
Ändrat
TPdf.ValidatePdfUaundertrycker nu den grova byte-nivåkontrollenpvuaiFontNotEmbeddednär den precisa Pdfium-objektmodellenpvuaiPdfiumFontNotEmbeddedredan har utlösts, så att preflight-rapporten inte längre innehåller två nästan identiska rader för att integrera typsnitt för samma defektpvuaiLangInvalidFormat(§7.2) löser nu upp en indirekt refererad/Lang(N 0 R) till dess strängobjekt och validerar innehållet, så att en indirekt refererad språktagg inte längre är en blind fläck
Version 1.99.0
Fixat
pvuaiLangInvalidFormat(§7.2) ger inte längre hex-kodade/Lang-strängar fri lejd: UTF-16BE-par (med enFE FFBOM) och rena ASCII-hex-strängar avkodas nu och körs genom samma BCP 47-grammatikkontroll som bokstavliga(...)-strängar, vilket gör att en felaktig hex-/Langupptäcks medan en kompatibel (t.ex. en UTF-16BEen-US) inte längre riskerar att flaggas
Ändrat
pvuaiFontMissingToUnicode(§7.21.7) undantar nu/MacExpertEncodingtillsammans med/WinAnsiEncodingand/MacRomanEncoding, vilket matchar de fyra undantagsvillkor som klausulen listar
Version 1.98.0
Lagt till
pvuaiNeedAppearancesTrue(§7.18.4) flaggar ett AcroForm vars flagga/NeedAppearancesär true, vilket gör att widget-utseenden inte är tillförlitligt låsta och hjälpmedelsteknik inte kan associera dem med strukturträdet; porterad från PDF/A-valideraren och begränsad till närvaro av/AcroFormför att minska skanningsytan
Ändrat
- veraPDF corpus-regression: kopplade pass+fail-paret för §7.20 Reference-XObject och pass+fail-paren för §7.21.4.2 delmängd CharSet/CIDSet till
Live_Corpus_ValidatePdfUaMatchesConformance; pass-proven för §7.21.7 ToUnicode-forbidden-value och §7.18.6.2 media-clip kopplades också som skydd mot falska positiva (deras fail-prov använder ordbokslayouter som skanningen på bytesnivå inte fångar, så endast pass-sidan är kopplad) - Corpus pass-path-kontrollistan har fått 15 nya skydd för noll falska positiva så att varje aktiv
pvuai*-kontroll på bytes- och strukturnivå nu testas mot kompatibla prov (tidigare skyddades endast ~30 av de 60 aktiva problemen); skyddet förpvuaiLangInvalidFormatutelämnades medvetet eftersom kontrollen på bytesnivå konservativt flaggar hex-kodade/Lang-strängar som den inte kan avkoda
Version 1.97.0
Fixat
- Härdning av
ValidatePdfUaStructureElements: genomgången avEnclosingTable-föräldrakedjan har nu en hoppräknare (begränsad av elementantalet), vilket gör att en felaktigParentIndex-cykel i en syntetisk strukturelement-array inte längre kan hänga anroparen; allokeringen för marked-content-ID-arrayen iValidatePdfUaPageContentTaggingär nu begränsad till en miljon poster, vilket förhindrar en allokering på flera gigabyte vid en felaktig eller skadligMarkedContentID
Ändrat
- Dokumentationskommentaren för enum
pvuaiOrderedListMissingListNumberingbeskriver nu exakt vad kontrollen gör: den flaggar ettL-element varsListNumbering-värde ligger utanför ISO 32000-1 tabell 347-uppsättningen (ett saknat attribut flaggas inte); den tidigare kommentaren antydde att den även upptäckte ordnade listor som saknade attributet, vilket implementeringen inte gör - De två fail-proven för
7.21.3.3-t02WMode-mismatch i corpus är nu kopplade tillLive_Corpus_ValidatePdfUaMatchesConformance— sedan v1.95.0 är CMap-strömmen FlateDecode-uppackad, så jämförelsen mellan ordbok och innehåll nu körs på en läsbar sida; den inaktuella kommentaren ”not wired” togs bort
Version 1.96.0
Lagt till
- Konsistens över standarder:
TPdf.ValidatePdfUafår två kontroller porterade från PDF/A-valideraren;pvuaiAnnotationFlagsViolation(§7.18.1) flaggar en icke-undantagen anteckning som bär flaggan Hidden / Invisible / NoView, vilket bryter hjälpmedelsteknikens läsflöde;pvuaiActionTargetMissing(§7.18.5) flaggar en GoToR / URI / SubmitForm-åtgärd som saknar sin nödvändiga målnyckel (/F+/D, /URI, /F), vilket gör länken oanvändbar för hjälpmedelsteknik
Fixat
- Strukturträdsammanslagning över sidor: ackumuleringsloopen
AllElemsiTPdf.ValidatePdfUabaserar nu om varje elementsParentIndexfrån den lokala arrayen på sidan till den sammanslagna arrayen; utan detta behöll underordnade element på sida 2 ett lokalt index som pekade in i sida 1:s del, vilket i tysthet korrumperade varje ParentIndex-beroende kontroll (tabell/liststruktur, §7.4.4 H-child-antal, EnclosingTable) - RoleMap-parsning:
PdfReadRoleMapPairsavbryter inte längre hela skanningen av nyckel/värde när ett värde är en indirekt referens (N 0 R) eller en array ([...]) — båda är giltiga former för RoleMap enligt ISO 32000-1 14.8.5.1; den hoppar nu över endast den posten (Continue) istället för att göraBreak, vilket eliminerar falska positiva förpvuaiRoleMapUnresolvedför typer som mappas efter en indirekt referens eller en arraypost
Ändrat
FPdfPreflightReport: 18 aktivaTPdfUaValidationIssue-värden som tidigare föll igenom till standardkategorin och rekommendationen ”missing marker” har nu korrekta kategorier (Structure / Content / Metadata / Security) och klausulspecifika rekommendationer; fixade även skrivfeletpuaNone / pua1→pucNone / puc1iPDFSpecComplianceMatrix.md
Version 1.95.0
Ändrat
- Genomgång av återkallande och sundhet i
TPdf.ValidatePdfUa: kontrollen av §7.21.3.3pvuaiCMapWModeMismatchoch kontrollen av §7.21.7pvuaiToUnicodeForbiddenValuepackar nu uppFlateDecode-komprimerade CMap- / ToUnicode-strömmar innan skanning (tidigare bedömdes endast okomprimerade strömmar, vilket var ett känt falskt negativt resultat); de delade hjälpfunktionernaPdfInflate/PdfReadAndDecodeStreamflyttades upp frånFPdfPdfa/FPdfPdfxtoFPdfPdfCommonså att alla kompatibilitetsenheter delar på samma kod
Lagt till
pvuaiSubsetCharSetEmpty(§7.21.4.2) flaggar en Type 1-delmängdFontDescriptorsom bär en/CharSet-nyckel vars strängvärde är tomt — den befintligapvuaiSubsetMissingCharSetfångade bara en saknad nyckel; en tom/CIDSetflaggas inte, eftersom ett teckensnitt utan CID:er legitimt kan bära en tom bitmapp
Version 1.94.0
Lagt till
- Den andra granskningsomgången av
TPdf.ValidatePdfUastängde sex ISO 14289-1-luckor som framkommit genom en genomgång klausul för klausul och en återskanning av inbyggda Pdfium-API:er som redan var omslutna men oanvända i PDF/UA-sökvägen;pvuaiHeadingFormatInvalid(§7.4.3) flaggar användardefinierade rubriktaggar som börjar med H men innehåller separatorer, mellanslag eller romerska siffror istället för rena arabiska siffror;pvuaiMissingDocumentOutline(§7.17, bör) flaggar ett flersidigt dokument som saknar en bokmärkesstruktur (ensidiga dokument är undantagna);pvuaiStructElementLangInvalid(§7.2) flaggar ett/Lang-värde för ett strukturelement som inte är en giltig BCP 47-tagg;pvuaiWidgetMissingPrintField(§7.14 / §7.18.4) flaggar ett Widget-strukturelement som saknar attributägaren PrintField;pvuaiLinkNotInStructureTree(§7.18.5) flaggar ett dokument vars anteckningar av typen/Subtype /Linkinte exponeras som Link-strukturelement;pvuaiPdfiumAnnotationMissingContentsochpvuaiPdfiumLinkMissingContents(§7.18.1 / §7.18.5) lägger till en exakt anteckningsskanning i Pdfium-objektmodellen som undantar dolda, Popup-, Widget-anteckningar samt sådana utanför CropBox — vilket eliminerar falska positiva från den heuristiska analysen på bytesnivå, vilken inte kan läsa/F-flaggor eller/Rect
Version 1.93.0
Lagt till
TPdf.ValidatePdfUalägger nu till en genomgång av Pdfium-objektmodellen ovanpå inspektionen på bytesnivå, vilket speglar PDF/A-arkitekturen från runda 7: den går igenom varje sidas textobjekt viaFPDFTextObj_GetFont→FPDFFont_GetIsEmbedded(pvuaiPdfiumFontNotEmbedded, §7.21.4) och skannar varje tecken viaFPDFText_HasUnicodeMapError(pvuaiPdfiumUnicodeMapError, §7.21.7) ochFPDFText_GetUnicode(pvuaiPdfiumNotDefGlyph, §7.21.8) — mer exakt än heuristiken på bytesnivå som endast utlöses när noll teckensnittsprogram finns eller ingen/ToUnicodevisas alls; genomgången avbryts i förtid på tre nivåer: sidloopen avslutas när alla tre problem i Pdfium-skiktet redan har ställts in, loopen per objekt avslutas vid det första icke-inbäddade teckensnittet, och teckenskanningen hoppar över.notdef-genomgången närUnicodeMapErrorredan har träffat; PDF/UA war den sista PDF-standardvalideraren utan ett Pdfium-objektmodellskikt
Version 1.92.0
Lagt till
- Skapade
Tests.PdfR— den första testfilen för PDF/R-1-valideraren (FPdfPdfr), vilken täcker rubrikvalidering, ObjStm-förbud, detektering av rastermarkörer och ett skydd mot falska positiva för en ren fil; alla sex testsviter för PDF-standarder har nu dedikerade testfiler: PdfA(80), PdfUa(101), PdfX(7), PdfE(5), PdfVT(15), PdfR(4) = totalt 212 tester
Version 1.91.0
Lagt till
ValidatePdfEochValidatePdfVThar fått kontroller på innehållsnivå som tidigare endast fanns tillgängliga i validerarna för PDF/A, PDF/UA och PDF/X:pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden(endast PDF/E),pveiEmbeddedFilesForbidden(endast PDF/E),pveiOpiForbidden,pvviLzwForbidden,pvviJavaScriptForbidden,pvviEmbeddedFilesForbidden,pvviOpiForbidden;TPdf.ValidatePdfEochTPdf.ValidatePdfVTfår också ett Pdfium-objektmodellskikt (pveiPdfiumFontNotEmbedded/pvviPdfiumFontNotEmbedded) som går igenom sidans textobjekt viaFPDFFont_GetIsEmbeddedoch avbryter i förtid vid det första icke-inbäddade teckensnittet
Version 1.90.0
Lagt till
TPdf.ValidatePdfXlägger nu till en genomgång av Pdfium-objektmodellen ovanpå inspektionen på bytesnivå: den går igenom varje sidas textobjekt viaFPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedoch rapporterar ett icke-inbäddat teckensnitt sompvxiPdfiumFontNotEmbedded— mer exakt än heuristiken på bytesnivå som endast utlöses när noll teckensnittsprogram finns; genomgången avbryts i förtid vid det första icke-inbäddade teckensnitt som hittas
Ändrat
- Genomgång av strukturträd i
TPdf.ValidatePdfUa: det sidvisa anropet tillValidatePdfUaPageContentTagging(vilket bygger upp en anspråkskarta för marked-content-ID och korskontrollerar varje text- och bildobjekt) hoppas nu över på efterföljande sidor så snartpvuaiUntaggedContentredan har hittats — strukturelement samlas fortfarande in för korskontroller över sidor (Note unikt ID, rubriksekvens), men den tidskrävande innehållstaggningen per sida stoppas i förtid
Version 1.89.0
Ändrat
- Prestanda för Pdfium-objektmodellskiktet i
TPdf.ValidatePdfA: sid-/objektgenomgången avbryts nu i förtid på tre nivåer — sidloopen avslutas när alla tillämpliga problem i Pdfium-skiktet redan har hittats, loopen per objekt avslutas när båda problemen per objekt (inbäddat teckensnitt + transparens) har ställts in, och teckenskanningen för textsidor hoppar över.notdef-genomgången närUnicodeMapErrorredan har träffat; API-tillgänglighetskontroller medAssigned()och kompatibilitetsflaggor cachas till lokala booleska variabler en gång före loopen istället för att utvärderas på nytt för varje sida/objekt/tecken; på ett stort icke-kompatibelt dokument kan genomgången nu stoppas efter första sidan istället för att skanna alla sidor; på ett kompatibelt dokument är overheadkostnaden per sida lägre (inga upprepade anrop tillAssigned)
Version 1.88.0
Lagt till
ValidatePdfXhar fått åtta nyaTPdfXValidationIssue-värden på innehållsnivå som täcker de tryckutbytesrestriktioner som PDF/X inför utöver filformatsmarkörerna:pvxiLzwForbidden(/LZWDecode),pvxiJavaScriptForbidden(/JavaScript),pvxiFormFieldsForbidden(/AcroForm//XFA),pvxiAdditionalActions(/AA),pvxiEmbeddedFilesForbidden(/EmbeddedFiles//FileAttachment),pvxiOpiForbidden(/OPI//Alternates),pvxiMissingTrimBox(ingen/TrimBoxpå någon sida) ochpvxiTrappedNotSet(/Trappedsaknas eller är/Unknown); PDF/X-valideraren kontrollerade tidigare endast XMP/OutputIntent-markörer; detta är dess första genomgång på innehållsnivå; de delade hjälpfunktionernaPdfStructureBytes/PdfHasName/PdfCountNamelades till iFPdfPdfCommonså att alla kompatibilitetsenheter kan använda dem
Version 1.87.0
Lagt till
- PDF/UA-validering täcker nu ISO 14289-1 §7.21.3 regler för sammansatta teckensnitt:
pvuaiCidSystemInfoMismatchflaggar Type0-teckensnitt vars inbäddade CMap och underordnade CIDFont är oense omRegistry/Orderingeller vars CIDFont-Supplementöverskrider CMap:ens,pvuaiCMapNotEmbeddedflaggar CMaps som refereras med namn (somEncodingellerUseCMap) och inte är fördefinierade CMaps enligt ISO 32000-1 tabell 118, ochpvuaiCMapWModeMismatchflaggar inbäddade CMaps vars ordbokWModeskiljer sig från WMode i deras ströminnehåll
Fixat
- Kontrollen §7.21.3.2
pvuaiCidFontMissingCidToGidMapmissade CIDFontType2-ordböcker vars nyckel/värde-par förSubtypeseparerades av en radbrytning, och flaggar nu även ettCIDToGIDMap-namnvärde som inte ärIdentity
Version 1.86.0
Lagt till
- PDF/UA-validering täcker nu ISO 14289-1 §7.21.6 kodningsregler för TrueType:
pvuaiTrueTypeEncodingInvalidflaggar icke-symboliska TrueType-teckensnitt varsEncodingsaknas eller varken ärMacRomanEncodingellerWinAnsiEncoding(direkt eller viaBaseEncoding), ochpvuaiSymbolicTrueTypeEncodingflaggar symboliska TrueType-teckensnitt som bär ett icke-standardiseratEncoding-namn
Version 1.85.1
Ändrat
- ISO 14289-1 §7.18.3-kontrollen för tabbordning
pvuaiMissingTabsOrderkörs nu per sida: varje sida som innehåller kommentarer måste deklarera/Tabs /Si sin egen sidordbok, så att en konform syskonsida inte längre döljer en sida som saknar det
Version 1.85.0
Lagt till
- PDF/UA-validering skiljer nu dynamiska från statiska XFA-formulär enligt ISO 14289-1 §7.15:
pvuaiXfaDynamicflaggar formulär vars XFA-konfiguration ställer indynamicRendertillrequired
Ändrat
- Den tidigare kandidatflaggan för alla XFA,
pvuaiXfaPresent, är inaktuell och utlöses inte längre (statisk XFA uppfyller §7.15); enum-värdet kvarstår för API-kompatibilitet
Version 1.84.0
Lagt till
- PDF/UA-validering identifierar nu otaggat verkligt innehåll som krävs av ISO 14289-1 §7.1:
pvuaiUntaggedContentflaggar renderade text- och bildobjekt som varken är registrerade i sidans strukturträd (via sina marked-content-ID) eller märkta som Artifact - Nya sidnivåhjälpare
GetPageContentMarkInfosochValidatePdfUaPageContentTaggingmed postenTPdfPageContentMarkInfoför direkt användning
Version 1.83.0
Lagt till
- PDF/UA-validering tillämpar nu rubrikmodellen från ISO 14289-1 §7.4.4:
pvuaiHeadingModelMixedflaggar dokument som blandar den generiskaH-taggen med numreradeH1..Hn-rubriker, ochpvuaiHeadingMultipleInNodeflaggar strukturnoder som innehåller mer än en underordnadH-rubrik
Version 1.82.0
Lagt till
- PDF/UA-validering löser nu RoleMap som krävs av ISO 14289-1 §7.1:
pvuaiRoleMapRemapsStandardflaggar RoleMap-poster som omdefinerar en standardstrukturtyp, ochpvuaiRoleMapUnresolvedflaggar använda icke-standardiserade strukturtyper vars RoleMap-kedja är saknad, bruten eller cyklisk — indirekta kedjor som når en standardtyp godtas, och oanvända RoleMap-poster bedöms aldrig - Nya hjälpare
PdfUaIsStandardStructType,PdfReadRoleMapPairs(med PDF-namn#hh-escape-avkodning) ochValidatePdfUaRoleMapUsageför direkt användning
Version 1.81.0
Lagt till
- PDF/UA-validering täcker nu ISO 32000-1-listtaggning som krävs av ISO 14289-1 §7.6:
pvuaiListStructureInvalidflaggar LI-poster utanför en L-behållare och Lbl/LBody-delar utanför ett LI-objekt, och godtar samtidigt kapslade listor och den legitima Lbl-användningen inuti Note- och BibEntry-element
Version 1.80.0
Lagt till
- PDF/UA-validering täcker nu ISO 32000-1-tabelltaggning som krävs av ISO 14289-1 §7.5:
pvuaiTableStructureInvalidflaggar TH/TD-celler utanför en TR-rad och rader eller radgrupper utanför sin Table-behållare,pvuaiTableHeaderMissingScopeflaggar rubrikceller vars relation varken kan bestämmas via ett Scope-attribut eller en Headers/ID-koppling, ochpvuaiTableHeadersUndefinedIdflaggar Headers-referenser i dokument som inte definierar några strukturelement-ID TPdfStructureElementexponerar tabellattributenScope,HasHeaders,HeadersIds,ColSpanochRowSpan, lösta under strukturträdsvandraren
Ändrat
- Strukturträdsvandraren läser nu alla layout- och tabellattribut i ett enda pass över varje elements attributordböcker i stället för en genomsökning per attribut
Version 1.79.1
Lagt till
- Portade exemplet
AnnotationsLabtill Lazarus och C++Builder, som ansluter till det befintliga Delphi-konsolexemplet
Fixat
TPdf.CreateAnnotationkunde orsaka felet “Cannot set attachment points” för markeringar som använder quad-punkter (Highlight, Underline, StrikeOut, Squiggly) eftersom den nya markeringen ännu inte hade någon quad-plats att ersätta; den lägger nu till den första quad-punkten istället
Version 1.79.0
Lagt till
- Nytt Delphi-konsolexempel
AnnotationsLab: skapar kommentarer (Text, Highlight, Square och Circle), skriver dem till en PDF, läser sedan in filen igen och räknar upp sidans lista med kommentarer
Version 1.78.0
Lagt till
- Nya
TPdf.MeasureTextochTPdf.MeasureTextWidth: mäter den renderade bredden och höjden för en sträng med givet teckensnitt och storlek (PDF-användarenheter, 1 enhet = 1/72 tum) utan att lägga till innehåll på en sida, vilket möjliggör layout- och radbrytningslogik ovanpåAddText; tillhandahålls av den fristående enhetenFPdfMeasuresom en klasshjälpare - Ny
TPdf.WrapText: girig radbrytning baserad påMeasureTextWidthsom delar text vid mellanslag och packar ord i rader som inte är bredare än en angiven bredd (PDF-användarenheter); ett alltför långt enskilt ord får en egen rad (inga brytningar inom ord), och returnerar de brutna raderna som en array
Version 1.77.0
Lagt till
ValidatePdfAfick tre nyaTPdfAValidationIssue-värden som täcker de klausuler som tidigare bedömdes som “NO” eller “reader behaviour” i den tidigare granskningen (nya ordningstal lades till, befintliga värden är oförändrade):pvaiPdfiumNotDefGlyph(PDF/A-2 6.2.11.8 — ett tecken som mappas till Unicode 0 utan ett mappningsfel, körningssymtomet för en.notdef-glyfreferens; upptäcks via objektmodelllagret i Pdfium),pvaiWordBreakMissing(Level A 6.8.3.2 — en innehållsström för att visa en sträng på över 20 tecken utan mellanslag, en trolig överträdelse gällande sammanslagna ord; grov heuristik som undviker falska positiva träffar för CJK), ochpvaiLinkActionMissingTarget(6.6.3 — en GoToR/URI/SubmitForm-åtgärd saknar dess visningsmålnyckel så en läsare inte kan presentera den)
Version 1.76.0
Tillagd (Added)
ValidatePdfAfick tre nyaTPdfAValidationIssue-värden (tillagda ordningstal, befintliga värden oförändrade):pvaiNameNotValidUtf8(PDF/A-2/3 6.1.8 — en/BaseFont- eller/FontName-token som innehåller bytes ≥ 0x80 som inte utgör giltig UTF-8),pvaiInlineImageLzwForbidden(PDF/A-2/3 6.1.10 — en inbäddad bild i en sidinnehållsström använder LZW- eller Crypt-filtret) ochpvaiTrueTypeDifferencesForbidden(6.3.7 Cor.2 — ett icke-symboliskt TrueType-teckensnitt vars Encoding-ordlista bär/Differences)
Version 1.75.0
Tillagt (Added)
ValidatePdfAfick tre nyaTPdfAValidationIssue-värden (tillagda på slutet, befintliga värden oförändrade):pvaiIntegerImplementationLimit(PDF/A-2/3 6.1.13 — en numerisk token som överskrider gränsen för ett 32-bitars signerat heltal, 2,147,483,647),pvaiBlendModeNotWhitelisted(PDF/A-2/3 6.2.10 — ett/BM-värde utanför ISO 32000-1 §11.3.5-standarden för blend-modes; kompletterar PDF/A-1pvaiTransparentColorSpacesom endast tillåter Normal/Compatible) ochpvaiHexStringOddDigits(6.1.6 — en<...>-hexsträng med ett udda antal hexsiffror)
Version 1.74.0
Tillagt (Added)
ValidatePdfAfick tre nyaTPdfAValidationIssue-värden (tillagda på slutet, befintliga värden oförändrade):pvaiPermissionsViolation(6.1.12 — en/Perms-ordbok som innehåller/DigestLocation,/DigestMethodeller/DigestValuebredvid/DocMDP),pvaiTransActionForbidden(PDF/A-2 6.5.1 — en Trans-övergångsåtgärd (transition action), upptäckt via/S /Trans-mönstret i action-dict för att undvika falska träffar på/Transparency) ochpvaiPdfiumObjectTransparency(PDF/A-1 6.4 — ett sidobjekt innehåller verklig transparens enligtFPDFPageObj_HasTransparency, vilket utökar Pdfium-objektmodellagret som introducerades i v1.73.0 för att fånga blend-mode/soft-mask-effekter som bytenivå-skanningen av namn kan missa)
Version 1.73.0
Tillagt (Added)
TPdf.ValidatePdfAlägger nu ett Pdfium-objektmodellager ovanpå bytenivå-inspektören: det går igenom textobjekten på varje sida viaFPDFPage_GetObject→FPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedoch rapporterar en inbäddad, renderad font som inte är inbäddad sompvaiPdfiumFontNotEmbedded(ISO 19005 6.3.4), samt laddar varje textsida för att skannaFPDFText_HasUnicodeMapErroroch rapporterar en trasig Unicode-mappning sompvaiPdfiumUnicodeMapError(6.3.8). Detta är kontroller som bytenivå-inspektören inte kan göra — den ser bara namntokens, inte lösta font-handtag (font handles) eller teckenmappningsstatus per tecken — och dessa slås samman med resultatet från bytenivån. Den fristående bytenivå-funktionenValidatePdfAComplianceär oförändrad
Version 1.72.0
Tillagt (Added)
ValidatePdfAfick fem nyaTPdfAValidationIssue-värden (tillagda på slutet, befintliga värden oförändrade):pvaiNeedsRenderingPresent(PDF/A-2 6.4.2 — katalogen (catalog) får inte innehålla/NeedsRendering),pvaiDestOutputProfileRef(PDF/A-3 6.2.3 — en OutputIntent får inte innehålla/DestOutputProfileRef),pvaiEmbeddedFileMissingUF(PDF/A-3 6.8 — en filspecifikation med/EFska också innehålla/UF),pvaiXmpPacketBytesAttr(6.7.5 — XMP-pakethuvudet får inte innehålla de föråldradebytes=ellerencoding=-attributen) ochpvaiAnnotationToggleNoView(PDF/A-2 6.3.2 — annotationen/Fmed ToggleNoView-biten, värde 512, är förbjuden)
Version 1.71.0
Ändrat
ValidatePdfUarapporterar nupvuaiOrderedListMissingListNumbering(ISO 14289-1 7.6): strukturträdsvandraren löser layoutattributetListNumberingför varjeL-element via Pdfium-attribut-API:et och flaggar alla värden utanför uppsättningen i ISO 32000-1 tabell 347 (Decimal,UpperRoman,LowerRoman,UpperAlpha,LowerAlpha,None,Circle,Disc,Square). Ett saknat attribut flaggas inte, eftersom listan kan vara oordnad; detta stänger den sista kvarvarande ISO 14289-1-luckan som registrerades i slutet av runda 5
Version 1.70.0
Tillagt
ValidatePdfUafick fyra nyaTPdfUaValidationIssue-värden (tillagda ordningstal, befintliga värden oförändrade):pvuaiSubsetMissingCidSet(ISO 14289-1 7.21.4.2 — en CID-delmängdFontDescriptorska deklarera/CIDSet),pvuaiToUnicodeForbiddenValue(7.21.7 — en ToUnicode CMap får inte mappa någon kod tillU+FEFFellerU+FFFE; okomprimerade strömmar genomsöks efter utdataformerna<FEFF>/<FFFE>),pvuaiLangInvalidFormat(7.2 —/Langska vara en giltig RFC 1766 / BCP 47-tagg; en tillåtande grammatik accepteraren,en-US,zh-Hans,es-419och flaggar tydligt icke-överensstämmande värden) ochpvuaiOrderedListMissingListNumbering(7.6 — behålls för API-fullständighet; rapporteras ännu inte av validatorn eftersom tillförlitlig åtskillnad av ordnade och oordnade listor kräver attributvärdetListNumbering, vilket strukturträdsvandraren inte exponerar)
Version 1.69.0
Tillagt
ValidatePdfUafick två nyaTPdfUaValidationIssue-värden (tillagda ordningstal, befintliga värden oförändrade):pvuaiWidgetOutsideForm(ISO 14289-1 7.18.4 — ett Widget-strukturelement ska vara nästlat i ettForm-element; strukturträdsvandraren verifierar nu varje Widgets direkta föräldertyp) ochpvuaiSubsetMissingCharSet(7.21.4.2 — en Type 1-delmängdFontDescriptorska deklarera/CharSet, som identifieras av prefixet+på sex bokstäver för delmängdsnamnet i/FontName)
Version 1.68.0
Tillagt
ValidatePdfUafick två nyaTPdfUaValidationIssue-värden (tillagda ordningstal, befintliga värden oförändrade):pvuaiUriActionIsMap(ISO 14289-1 7.18.5 — en URI-åtgärdsordbok får inte innehålla/IsMapmed värdettrue, eftersom det inaktiverar det tillgängliga länkmålet) ochpvuaiHeadingSequenceViolation(7.4.2 — numrerade rubriker ska börja påH1och en nedåtgående sekvens får inte hoppa över en mellanliggande nivå, t.ex. ärH1→H3en överträdelse). Rubrikkontrollen är den första PDF/UA-regeln på strukturträdsnivå i validatorn:ValidatePdfUaStructureElementsgår nu igenom den typade elementlistan och verifierar sekvensenH1…H6(ochH7+enligt 7.4.3) i dokumentordning
Version 1.67.0
Tillagt
ValidatePdfUafick fem nyaTPdfUaValidationIssue-värden (tillagda ordningstal, befintliga värden oförändrade):pvuaiLinkMissingContents(ISO 14289-1 7.18.5 — en Link-anteckning ska ha en alternativ beskrivning via/Contents),pvuaiAnnotationMissingContents(7.18.1 — varje icke-undantagen anteckning utan/Contentsska ha en alternativ beskrivning; Popup och Widget är undantagna),pvuaiEmbeddedFileMissingName(7.11 — en filspecifikationsordbok ska innehålla/Foch/UF),pvuaiMediaClipMissingAlt(7.18.6.2 — en dataordbok för mediaklipp ska innehålla/CToch/Alt) ochpvuaiCidFontMissingCidToGidMap(7.21.3.2 — ett inbäddat Type 2 CIDFont ska innehålla/CIDToGIDMap)
Version 1.66.0
Tillagt
ValidatePdfUafick fem nyaTPdfUaValidationIssue-värden (tillagda ordningstal, befintliga värden oförändrade):pvuaiRoleMapMissing(ISO 14289-1 7.1 — ett taggat dokument med icke-standardiserade strukturtyper ska ha en/RoleMap),pvuaiOptionalContentAsKey(7.10 — en konfigurationsordbok för valfritt innehåll får inte innehålla automatiklägesnyckeln/AS),pvuaiXfaPresent(7.15 — närvaro av en AcroForm/XFAflaggas eftersom dynamisk XFA är förbjuden),pvuaiTrapNetAnnotation(7.18.2 —/TrapNet-anteckningar är förbjudna) ochpvuaiReferenceXObject(7.20 — Referens-XObjects, som identifieras av/Ref-markören, är förbjudna)
Åtgärdat
ValidatePdfUager inte längre falska positiva förpvuaiEncryptionPresentpå varje krypterad fil: PDF/UA tillåter kryptering så länge krypteringsordbokens/P-nyckel har bitposition 10 (värde 1024) satt, vilket beviljar åtkomst för hjälpmedelsteknik (7.16). Den exakta överträdelsen rapporteras nu via den nyapvuaiEncryptionPBitMissing;pvuaiEncryptionPresentbehålls i enum för API-kompatibilitet men rapporteras inte längre av validatorn på bytenivå
Version 1.65.0
Tillagt
ValidatePdfAfick fem nyaTPdfAValidationIssue-värden (tillagda ordningstal, befintliga värden oförändrade):pvaiCidFontMissingCidToGidMap(ISO 19005-1 6.3.3.2 Cor.2 — ett inbäddat Type 2 CIDFont ska innehålla/CIDToGIDMap),pvaiSubsetMissingCharSet(6.3.5 — en Type 1-delmängdFontDescriptorska innehålla/CharSet),pvaiSubsetMissingCidSet(6.3.5 — en CID-delmängdFontDescriptorska innehålla/CIDSet),pvaiWidgetActionForbidden(6.6.1 — en Widget-anteckning får inte innehålla/Aeller/AA) ochpvaiOptionalContentAsKey(ISO 19005-2 6.9 — en konfigurationsordbok för valfritt innehåll får inte innehålla automatiklägesnyckeln/AS, nyligen relevant eftersom PDF/A-2 tillåter valfritt innehåll)
Version 1.64.0
Tillagt
ValidatePdfAfick åtta nyaTPdfAValidationIssue-värden (tillagda ordningstal, befintliga värden oförändrade):pvaiHeaderBinaryMarkerMissing(ISO 19005-1 6.1.2 — rubriken%PDF-x.ymåste följas av en%-kommentar med minst fyra byte större än 127),pvaiExternalStreamRef(6.1.7 — en strömordbok får inte innehålla/F,/FFiltereller/FDecodeParms),pvaiOutputIntentScheme(6.2.2 — OutputIntent/Sska vara/GTS_PDFA1),pvaiInfoXmpDateMismatch(6.7.3 — InfoCreationDate/ModDateska också visas somxmp:CreateDate/xmp:ModifyDate),pvaiMarkInfoMissing(6.8.2.2 — Nivå A kräver/MarkInfomed/Marked true),pvaiAnnotationApDictViolation(6.5.3 Cor.2 — anteckningens/AP-ordbok får endast innehålla/N),pvaiEmbeddedFileMissingAFRelationship(ISO 19005-3 Annex E.2 — varje associerad filspecifikation ska innehålla/AFRelationship) ochpvaiJpeg2000Violation(ISO 19005-2 6.2.8.3 — en JPEG2000-bild ska deklarera 1, 3 eller 4 komponenter)
Åtgärdat
ValidatePdfAger inte längre falska positiva förpvaiAnnotationFlagsViolationpå dokument som använder ett resursnamn för teckensnitt med en bokstav såsom/Font << /F 5 0 R >>; skanningen av/F-flaggan är nu begränsad till en anteckningskontext (/Subtypeav en anteckningstyp), vilket överensstämmer med det dokumenterade beteendet (6.5.3)ValidatePdfArapporterar nu kravet på associerade filer för PDF/A-3 per fil: ett dokument flaggas endast när en inbäddad/Type /Filespecsom refererar till en inbäddad ström via/EFsaknar/AFRelationship, i stället för den tidigare kontrollen för hela dokumentet om det fanns för alla eller ingen (ISO 19005-3 Annex E.2)- Lade till den föråldrade åtgärden
/SetStatetill uppsättningen av förbjudna åtgärder bredvid/SetOCGState, så att PDF-referensåtgärdsnamnet fångas direkt (6.6.1)
Version 1.63.0
Tillagd (Tillagt)
- Lade till
TPdf.MeasureTextochTPdf.MeasureTextWidth: mäter renderad bredd och höjd för text med angivet teckensnitt och storlek utan att lägga till innehåll på sidan (i PDF-användarenheter, 1 enhet = 1/72 tum), vilket möjliggör layoutberäkningar och automatisk radbrytning ovanpåAddText; tillhandahålls av den fristående enhetenFPdfMeasuresom class helper
Ändrad (Ändrat)
Demo\Delphi\MergePDF,Demo\CBuilder\MergePDFochDemo\Lazarus\MergePDFförbättrade för alla tre IDE:er: sidintervallsval per fil, valfri utdatasökväg, deduplicering, körlogg, avbrytningsknapp och sammanfattning av sammanslagning; bokmärken och metadata importeras från första källanCreatePDF-demos för alla tre IDE:er inkluderar nu ett europeiskt textalternativ för att skriva accentuerad text på tjeckiska, franska, tyska, spanska, portugisiska, polska och turkiska för att verifiera teckensnittsval och Unicode-hantering (det tidigareEuropeanText-exemplet är integrerat)- Tog bort exemplen
ExtractTextPagesochEuropeanText: sidvis textutvinning iExtractTextPagestäcks nu av sidområdes- och sidaseparatoralternativen iExtractText; den flerspråkiga renderingen iEuropeanTextär integrerad iCreatePDF
Version 1.62.2
Åtgärdat (Åtgärdat)
- C++Builder-huvudfilerna (
.hpp) har genererats om för varje RAD Studio-version och plattform (Win32/Win64/Win64x); de hade glidit bort från Pascal-källorna och lämnat gamla funktionssignaturer samt saknade units som nådde C++Builder-användare via källdistributionen
Version 1.62.1
Åtgärdat (Åtgärdat)
- Källkompileringen har återställts för RAD Studio 12 Athens och tidigare: en tilldelning av
TArray<Byte>i PDF/UA-valideringsvägen använde en implicit arraykonvertering som bara finns i Delphi 13 och som inte gick att kompilera i äldre IDE:er
Version 1.62.0
Tillagt (Tillagt)
TPdf.RenderPageThumbnailrenderar valfri sida efter index till en bitmap med bibehållet sidförhållande utan att ändra dokumentets aktuella sida, inlästa sida eller utlösaOnPageChange
Åtgärdat (Åtgärdat)
TPdfThumbnailViewstyr inte längre värddokumentetsPageNumberunder ritning; tidigare laddade varje omritning om sidor, utlösteOnPageChangeoch kastade bort textsidan, vilket kunde störa en länkadTPdfViewoch skapa omritningsloopar. Miniatyrer renderas nu viaRenderPageThumbnailutan sådana bieffekter- PDF/X-konformitetsvalidering granskar nu dokument med cross-reference streams (PDF 1.6, typiskt för PDF/X-4) och objekt lagrade i compressed object streams, i stället för att rapportera sådana filer som helt icke-konforma; markören
GTS_PDFXVersionläses både från elementform och RDF-attributformad XMP - PDF/R-validering rapporterar nu
pvriInfoXmpMismatchnär Info-dictionaryn och XMP inte är överens om Producer eller Creator; problemet var tidigare deklarerat men aldrig utlöst - Form-fill timers spåras per begäran, så ett dokument som kör flera timers samtidigt, till exempel ett JavaScript-intervall bredvid blinkningen av fältets markör, behåller dem alla i stället för att tappa allt utom det senaste
TPdfView-ritning och dess publika metoderRenderPage/RenderTilehåller nu dokumentets renderlås och serialiseras mot worker thread-rendering av sammaTPdf, eftersom PDFium inte är trådsäkert- Text utanför ASCII som skrivs till PDF/X-, PDF/R- och PDF/VT-metadata (OutputIntent condition names, Creator, Producer) kodas nu som en UTF-16BE-sträng enligt ISO 32000-1 §7.9.2.2 i stället för rå UTF-8, som kompatibla läsare annars skulle misstolka
- Konformitetsstöd läser inbäddade metadataflöden vars
/Lengthär en indirekt referens korrekt, läser källdata medReadBufferså att en kort läsning misslyckas rent, och avvisar ett negativtstartxref-offset i stället för att riskera läsning utanför intervallet
Version 1.61.0
Ändrat (Ändrat)
- Korrigeringar av FFI/ABI-deklarationer som kan kräva omkompilering av kod som implementerar de berörda callbackerna: form-fill-callbacken
FFI_OpenFilebär nucdecl(Win32 stack convention), och parameternvalueiFPDFAnnot_SetStringValueochFPDFAttachment_SetStringValueär nuFPDF_WIDESTRING(UTF-16LE) för att matcha PDFium-huvudfilerna - Progressive-load-callbackerna
FX_FILEAVAIL.IsDataAvailochFX_DOWNLOADHINTS.AddSegmenttar nusize_t-offsets, ochsize_thar pekarbredd i Free Pascal / Lazarus Win64, där det tidigare trunkerades till 32 bitar, vilket rättar data-availability ochoutsize_t-API-anrop på FPC Win64
Åtgärdat (Åtgärdat)
- Minnessäkerhet: ett use-after-free i form-fill-timern när en
TPdfmed aktiv AcroForm-markör förstörs; en dubbelFPDF_CloseDocumentpå felvägen iImportNPagesToOne; Pascal-exceptioner som läcker ut urFPDF_FILEWRITE/FPDF_FILEACCESS-callbackerna över C-gränsen under sparning och JPEG-infogning; och ett heltalsöverskridande i textutvinning när läsning sker från ett startindex till slutet av sidan TPdfFuture<T>levererar nu tillförlitligt sin resultcallback; svaret tappades tidigare nästan alltid, och kunde röra en frigjord tråd, eftersom arbetstråden frigjorde sig själv innan det köade svaret kördes- Utdata för PDF/A, PDF/X, PDF/E, PDF/R, PDF/VT och PDF/UA skriver nu cross-reference entries som är exakt 20 bytes, enligt ISO 32000-1 §7.5.4
- Insättning av standardmarkör förstör inte längre en dictionary när den borttagna nyckeln, till exempel
/Trapped, var den sista posten, vilket tidigare svalde den avslutande>>och producerade ett felaktigt objekt - OutputIntent ICC profile streams anger nu det obligatoriska antalet komponenter
/Nför PDF/X och PDF/VT, redan närvarande för PDF/A; krypterade källdokument dekrypteras innan PDF/X-, PDF/E-, PDF/R-, PDF/VT- och PDF/UA-markörer läggs in, så utdata blir giltig i stället för tyst korrupt - UTF-8 xpacket BOM i genererad XMP skrivs nu ut som exakta byte, vilket rättar korruption på Delphi-installationer vars ANSI code page inte är Latin-1; trailers för inkrementella uppdateringar behåller nu dokumentets
/Info-referens SaveAsmed komprimering trunkerar inte längre flöden vars/Lengthär en indirekt referens, och ombyggda cross-reference tables använder nu 20-bytesposter, riktiga generationsnummer och släpper den gamla/Prev-pekaren- Konformitetsvalidering läser XMP-versionmarkörer i attributform för PDF/E och PDF/X, så attributserialiserade PDF/X-4-filer känns igen, kräver den exakta identifieraren
PDF/E-1, läser metadataflöden med indirekt/Lengthkorrekt och felmatchar inte längre en struktur-elements/ID- eller/StructTreeRoot-nyckel när PDF/UA-trailern kontrolleras; ett felaktigtstartxref-offset ger inte längre ett range-fel TPdfThumbnailView: den sista sidan kan nu nås med rullningslisten, värddokumentets aktuella sida återställs efter att miniatyrer ritats och standardhanteringen för mouse-leave skickas igen- Gråskalebitmappar för sidor och bilder renderas inte längre med fel palett;
TPdfViewlämnas inte längre med en hängande referens när dessTPdffrigörs först - Preflight-rapporter: HTML sparas som UTF-8 för att matcha sin deklarerade charset, och JSON-strängescapning producerar korrekta
\u-sekvenser för icke-ASCII-tecken i Free Pascal - Testbyggen: påminnelsedialogen för trial visas nu i stället för att döljas innan den hinner visas
TPdfStreamAdapteravvisar nu flöden större än 4 GiB med ett tydligt fel i stället för att tyst trunkera längden som skickas till PDFium
Version 1.60.1
Ändrat (Ändrat)
- AccessibilityReader-demosen för Delphi, Lazarus och C++Builder kör nu uppläsning på
TPdfReadingSession: varje sida byggs ihop till ett enda talat fragment medBuildSpokenTextFromWords, SAPI-word positions matarFeedSpokenPosition, och sessionen avancerar sidor och styr vyerns ordmarkör, vilket ersätter den handskrivna orkestrering som varje demo hade tidigare - Word-level karaoke tracking i demos fungerar nu också när NVDA är talsyntesmotorn:
EstimatePacingsätter tempot för reading cursor efter talad tid, där NVDA tidigare läste upp utan någon word tracking alls - Pause och Resume i demos fungerar nu även med NVDA:
ResumeRestartsChunkläser om den aktuella sidan från början vid Resume, medan SAPI behåller sin inbyggda in-place pause och resume
Version 1.60.0
Tillagt (Tillagt)
- Live-rendering för svagsynta i
TPdfView: de nya renderingsalternativenreInvertochreNightDuotonefärgsätter om varje renderad sidruta, alltså full färginvertering eller en nattlig duotone-palett, innan överlagren för sökning, markering, läsning och ordmarkören ritas, vilket för in de befintliga bitmapfärgtransformationerna i den interaktiva visaren för både enkelssidiga och facing-pages-layouter; att växla alternativen ritar om omedelbart NightDuotoneInkochNightDuotonePaperkonfigurerar nattpaletten, med bärnstensfärgad text på svart sida som standard;reInvertvinner när båda alternativen är satta
Version 1.59.0
Tillagt (Tillagt)
TPdfReadingSession: en talmotoroberoende komponent för uppläsningsorkestrering. Den håller fragmentmarkör, ordmarkör och uppspelningsstatus (Play/PlayFrom/Pause/Resume/Stop), avancerar genom laddadeTPdfSpokenText-fragment när värden rapporterar att motorn är ledig viaTick, översätter taltextoffsets tillbaka till sidtecken och styr automatiskt en anslutenTPdfView-ordmarkör; värden ansluter valfri talsyntesmotor viaOnSpeakoch händelserna för avbryt / pausa / återuppta, så biblioteket kopplar inte direkt till något tal-APIFeedSpokenPositiontar emot word positions från motorn, till exempel SAPIStatus.InputWordPosition;EstimatePacingmedEstimatedWordsPerMinutesätter tempo för motorer utan positionssignal;ResumeRestartsChunkläser om den aktuella chunk för motorer utan inbyggd pauseOnChunkChange,OnWordChangeochOnFinishedutlöses bara vid faktiska ändringar, och en frigjord ansluten vy kopplar loss sig själv automatiskt, så hostkoden förblir utan flimmer och kraschsäker
Version 1.58.0
Tillagt (Tillagt)
EstimateSpokenWordIndexuppskattar vilket ord en speech engine uttalar utifrån elapsed time och en hastighet i ord per minut, och ger längre ord proportionellt mer tid, så motorer som inte rapporterar någon word position, som NVDA controller client, fortfarande kan driva word-level reading cursor; anroparen tillhandahåller elapsed time, så rutinen förblir clock-free och unit-testbar
Version 1.57.0
Tillagt (Tillagt)
- Spoken-text-assembly med tvådomänsmappning för uppläsningsspårning:
BuildSpokenTextFromWordsochSpokenTextAppendbygger strängen som skickas till en text-to-speech engine från sidans word boxes samtidigt som en span table sparas, ochSpokenToPageCharöversätter en engine-rapporterad spoken offset, till exempel SAPIStatus.InputWordPosition, tillbaka till sidteckenindex, så word-level highlight tracking förblir korrekt när spoken text inte är hela sidtexten, till exempel vid skipped regions, per-unit reading och pronunciation overrides TPdfSpokenTextochTPdfSpokenSpanbär den talade strängen plus de källsidintervall som den byggdes från; offset på infogade separators löses till nästa mappade ord och offset efter de mappade körningarna rapporterar ingen träff
Version 1.56.9
Tillagt (Added)
Demo\Delphi\PreflightReportfår en förhandsgranskning av Action Plan som komprimerar underkända standarder, prioriteringar, nästa åtgärder, felkoder och rekommendationer till en checklista för åtgärderDemo\Delphi\PreflightReportCligodtarplan/actionplansom utdataformat för enkelfils- och batchkörningar och skriver samma checklista för åtgärder till en textfil
Ändrat (Changed)
- Båda Delphi-demonstrationerna av PreflightReport visar nu antal i statusarna pass / action / review bredvid det totala antalet standarder och fel
Version 1.56.8
Ändrat (Ändrat)
ViewerInteractionLabinnehåller nu sidhoppkontroller, manuell zoomkontroll, klickbaserad koordinatloggning förDeviceToPage/PageToDeviceoch en tydligare interaktionslogg för val, sökning, rotation och navigeringViewerInteractionLabreadme-sidorna dokumenterar nu det tillagda interaktionsflödet i den lokaliserade demo-readmeuppsättningen
Version 1.56.7
Tillagt (Tillagt)
AccessibilityWorkbenchClimappar varje hittat fynd till WCAG 2.1 Success Criteria och ISO 14289-1 (PDF/UA-1) och visar ett standards-coverage-segment i rapporternaAccessibilityWorkbenchCliberäknar en dokumenterad accessibility-poäng på 0-100 med publicerad penalty-rubrik och nivåerna excellent / good / needs work / poor, och visar den per fil och som batchgenomsnittAccessibilityWorkbenchCliaccepterarfailscore=Nför att misslyckas med exit code 2 när någon fil hamnar under NAccessibilityWorkbenchCliskriver en SARIF 2.1.0-logg när batchsammanfattningens namn slutar på.sarif, med en regel per finding-typ som innehåller WCAG 2.1- och PDF/UA-taggar för CI och code-scanningAccessibilityWorkbenchClilägger till kommandotversionsom skriver ut den länkade PDFium Delphi Component-versionen
Version 1.56.6
Tillagt (Tillagt)
IntakeWorkbenchCliberäknar SHA-256 forensisk hash för varje indatafil (faller tillbaka tillunavailablepå kompilatorer utanSystem.Hash) och rapporterar den i alla formatIntakeWorkbenchCliaccepterarpasswords=file.txtför att testöppna lösenordskrävande dokument från kandidatlistan, registrerar det matchande kandidatindexet utan att logga lösenordstextenIntakeWorkbenchCliaccepterarcopyto=dirför att routa varje granskad fil till en undermapp per risknivå, så att granskningen fungerar som intake sorterIntakeWorkbenchCliskriver en SARIF 2.1.0-logg när batchsammanfattningen slutar med.sarif, med en regel per riskflagg och ett resultat per markerad fil för CI och code-scanningIntakeWorkbenchClilägger till kommandotversionsom skriver ut den länkade PDFium Delphi Component-versionen
Version 1.56.5
Tillagt (Tillagt)
IntakeWorkbenchClihärleder nu rekommenderade efterintagshandlingar som accept, request-password, manual-review, quarantine och deduplicate, och exponerar åtgärdsräkningar i batchsammanfattningarAccessibilityWorkbenchClihärleder nu rekommenderade remediation-handelser som pass-through, remediate-tags, run-ocr, remediate-semantics och manual-review med matchande batchräkningar
Ändrat (Ändrat)
- Båda verktygs-CLI-demon visar den rekommenderade åtgärden i console, text, HTML, JSON och CSV så att batchoperatörer kan routa filer utan risker från efterbearbetning eller statusfält
Version 1.56.4
Åtgärdat (Åtgärdat)
- Vid loopad läsning av annoteringar, bokmärken eller länksannoteringar läcker textsträngarna från föregående objekt inte längre: resultatposterna för
TPdfAnnotationTBookmarkochTLinkAnnotationrensas nu med hantering av managed-types i stället för råminnesnollning, så dokument med mycket många textbärande annoteringar blåser inte längre upp processminnet under programmets livstid - Vid förstöring av en
TPdfmed registreradOnUnsupportedFeature-hanterare kopplas hanteraren nu bort från processövergripande PDFium callback, så att senare dokumentinläsning från en annanTPdfutan egen hanterare inte längre kan dispatcha till den frigjorda komponenten (use-after-free)
Version 1.56.3
Åtgärdat (Åtgärdat)
AccessibilityWorkbenchCliräknar inte längre tomma sidor som heuristiska reading-order-sidor, så taggade dokument med tomma separatorer behåller korrekt accessibility-status; sidor utan läsbar text rapporteras separatAccessibilityWorkbenchClitabellhuvuddetektering tilldelar inte längreTH-celler från en nästlad tabell till en yttre tabell, och fältnamn för form och typsnitt matchas skiftlägeskänsligt så att olika fält inte slås ihopIntakeWorkbenchCliURL-värdinventering tar nu bort userinfo, query och fragment, så en manipulerad länk som[email protected]kopplas till riktig värd ochmailto:-mål bidrar med sin domän i stället för att vara osynligaIntakeWorkbenchCliMarkdown-rapporter escapar backticks i attackkontrollerade sökvägar, värdar och bilagans namn så rapportformat inte kan förstöras från dokumentet
Ändrat (Ändrat)
AccessibilityWorkbenchClirapporterar font-scan- och form-field-scan-fel som separata räknare, markerar icke inbäddade teckensnitt som också har inbäddade instanser, och begränsar långa typsnittslistor med en tydlig trunkeringsmarkörIntakeWorkbenchClibatchsammanfattningar lägger till en kolumn för antal bilaganoteringar, och antalet annoteringar per sida begränsas till 20000 per sida med detta tak rapporterat i varje format
Version 1.56.2
Tillagt (Tillagt)
AccessibilityWorkbenchCligranskar nu teckensnittsinbäddning, tooltip för formulärfält, källa för läsordning, dokumentdispositioner, tabell- och liststruktur, misstänkt alternativtext och rikare granskningsdetaljer per sida så att accessibility-batchrapporter identifierar fler åtgärdsmålIntakeWorkbenchClirapporterar nu sidskanningsgränser, launch- och remote-go-to-åtgärder, URI-värdinventarier, annoteringsantal, PDFium-funktioner som inte stöds, dubbla dokumentidentifierare och utökade riskflaggor för automatiserad intake-granskning
Ändrat (Ändrat)
IntakeWorkbenchCliaccepterarmaxpages=Ni enkel fil- och batchläge för att begränsa sidskanning per dokument samtidigt som metadata-, attachment-, script-, XFA-, signature- och risk-rapportering slutförs
Version 1.56.1
Åtgärdat (Åtgärdat)
- Inläsning av en äldre
pdfium.dllsom saknar en nyare export misslyckas nu rent: felvägen återställer varje bunden API-ingångspunkt, såAssigned()-kontroller (till exempel förFPDF_GetLastErrorellerFPDF_GetSecurityHandlerRevision) rapporterar att biblioteket inte är inläst i stället för att anropa den redan avlastade modulen och krascha med en åtkomstöverträdelse UnloadLibraryrensar nu alla PDFium API-bindningar i stället för endast de valfria V8-hjälpfunktionerna, så inga gamla funktionspekare finns kvar efter att DLL-filen har frigjorts
Version 1.56.0
Tillagt (Tillagt)
- Ordvis karaoke-läsmarkör i
TPdfView:TrackReadingWordAtmappar en text-till-tal-motors teckenoffset för aktuellt ord, till exempel SAPIStatus.InputWordPosition, till sidans ordrutor, markerar ordet som innehåller offseten som en separat överlagring ovanför läsblocket, rullar det i vy och returnerar ordindexet så att det upplästa ordet lyser upp när rösten går vidare SetReadingWordochClearReadingWordställer in eller rensar det markerade ordet direkt från enTPdfWordBox; att ställa in samma ord igen är en no-op, så ordvis spårning får aldrig vyn att flimraReadingWordColorochReadingWordFollowstyr ordmarkörens färg och om vyn automatiskt rullar det upplästa ordet i vy
Version 1.55.2
Åtgärdat (Åtgärdat)
- ViewerInteractionLab ger nu verktygsradsraderna mer vertikalt utrymme så att Open PDF, Create Sample, navigering, sökning och markeringskontroller inte längre överlappar med skalade teckensnitt
Version 1.55.1
Åtgärdat (Åtgärdat)
- ViewerInteractionLab placerar nu Prev, Next och Rotate på andra verktygsradsraden och undviker startöverlappningen med Open PDF och Create Sample
Version 1.55.0
Tillagt (Tillagt)
- Länk mellan ord och markering för "läs det, markera det"-läsning:
TPdfView.SelectWordBoxochSelectWordSpanmarkerar en enskild ordruta eller ett spann av ordrutor på samma sida (frånPageWordBoxes) utifrån deras teckenintervall, så att ordet eller raden som läses just nu också kan markeras och kopieras WordBoxIndexAtCharIndexmappar ett teckenindex tillbaka till ordrutan som innehåller det, vilket driver ord-för-ord-markering medan en TTS-läsmarkör går framåt
Version 1.54.0
Tillagt (Tillagt)
- Röststyrda formulärifyllnadsaccessorer som läser det fokuserade fältet direkt från den logiska markören:
FocusedFormFieldValue,FocusedFormFieldNameochFocusedFormFieldDetailspåTPdfochTPdfViewrapporterar det aktuella fältets värde, ett läsbart namn (/TU-verktygstipset, med återfall till/T) och fullständigTPdfFormFieldInfo(typ, flaggor, alternativ) - allt som ett röstgränssnitt behöver läsa upp medan det går igenom ett formulär
Åtgärdat (Åtgärdat)
FocusedFormFieldValueläser fältet viaFocusedFormFieldIndexi stället för pdfiums interaktiva fokus, så en röststyrd formulärifyllare får rätt värde även utan någon markör på skärmen, medan det befintligaFocusedFormFieldTextfortfarande speglar pdfiums fokus och är oförändrat
Version 1.53.0
Tillagt (Tillagt)
- Stöd för ordvis markering:
TPdf.PageWordBoxesochTPdfView.PageWordBoxesdelar upp en sida iTPdfWordBox-poster, där varje post bär ordtexten, dess teckenintervall och en begränsningsrektangel i sidkoordinater, så att en hjälpmedelsläsare kan markera varje uppläst ord i tur och ordning genom att skicka rektangeln tillSetReadingHighlight BuildWordBoxesDelar sidtext i TPdfWordBox-poster med ordtext och FTextPage-teckenintervall
Version 1.52.0
Tillagt (Tillagt)
- Hjälpare för lågseende-rendering
InvertPdfBitmap,GrayscalePdfBitmapochDuotonePdfBitmaptillämpar färgtransformationer direkt på en renderad 32-bitars bitmap, så att en hjälpmedelsläsare kan visa sidor inverterade, i mörkt läge, i gråskala eller i ett anpassat tvåfärgsschema för lågseende användare - Hjälparen tvingar pf32bit och uppdaterar ScanLine-pixlar direkt, så den fungerar efter RenderPage eller ToBitmap utan extra mellanbuffert
Version 1.51.0
Tillagt (Tillagt)
- Meningsnivåbaserade läsenheter för assisterad lyssningsläsning:
TPdf.ReadingUnits,TPdf.DocumentReadingUnitsochTPdfView.ReadingUnitslineariserar det läsbara innehållsflödet till ordnadeTPdfReadingUnit-poster i meningsstorlek, där varje post bär texten som ska läsas upp tillsammans med sin semantiska typ, sida, markeringsrektanglar och språkflagga, så att en skärmläsarapp kan gå igenom en sida eller hela dokumentet en uppläst enhet i taget NextReadingUnitOfKindHittar nästa eller föregående TPdfReadingUnit vars Kind matchar önskad TPdfContentFragmentKindBuildReadingUnitskonverterar valfriaTPdfContentFragmentsdirekt till läsenheter: rubriker och figur-/altbeskrivningar hålls samman medan stycken delas vid meningsgränser, decimalpunkter bevaras och läsmarkören är ett vanligt index som ägs av anroparen
Version 1.50.0
Tillagt (Tillagt)
ValidatePdfAkan nu granska PDF 1.5+-dokument som lagrar katalogen, OutputIntent eller andra lexikon inuti komprimerade object streams (/Type /ObjStm). Object streams packas upp och de objekt de bär löses upp, så att sådana dokument valideras utifrån sina faktiska egenskaper i stället för att rapporteras som att de saknar sina PDF/A-markörer
Version 1.49.5
Åtgärdat (Åtgärdat)
ValidatePdfArapporterar inte längre en saknadpdfaExtension:schemas-beskrivning som ett problem. PDF/A-identifierarschemat (pdfaid) är välkänt, så varken veraPDF eller PDF/A-2/-3 kräver en extension-schema-beskrivning för det, och att flagga dess frånvaro felrapporterade varje regelriktig tredjeparts-PDF/A. Dokument som biblioteket självt framställer innehåller fortfarande beskrivningen
Version 1.49.4
Åtgärdat (Åtgärdat)
ValidatePdfAidentifierar nu konformitetsnivån när PDF/A-identifieraren är skriven som XML-attribut (pdfaid:part="2") i stället för som underordnade element, så att dokument på attributform inte längre rapporteras med okänd nivå. Detta korrigerar även en kedjereaktion där en oupptäckt nivå fick de delspecifika kontrollerna att falla tillbaka på de strikta PDF/A-1-reglerna och felaktigt flagga inbäddade filer och transparens som PDF/A-2 och PDF/A-3 tillåter
Version 1.49.3
Åtgärdat (Åtgärdat)
ValidatePdfAgranskar nu PDF 1.5+-dokument vars cross-reference-data är en cross-reference stream (filer som inte har någottrailer-nyckelord). Konformitetsnivån, trailerns/IDoch de övriga markörerna läses från cross-reference-stream-lexikonet, så att sådana dokument valideras utifrån sina faktiska egenskaper i stället för att rapporteras som helt icke-regelriktiga
Version 1.49.2
Åtgärdat (Åtgärdat)
ValidatePdfArapporterar inte längre ett felaktigt problem med icke-inbäddade teckensnitt på dokument som bäddar in alla sina teckensnitt. Den tidigare heuristiken jämförde antalet/FontDescriptor-token mot inbäddade teckensnittsprogram, men varje inbäddat teckensnitt bidrar med två/FontDescriptor-token (referensen till teckensnittslexikonet plus descriptor-objektet), så varje fil med inbäddade teckensnitt flaggades felaktigt. Kontrollen rapporterar nu enbart ett dokument som refererar till teckensnitt men inte bäddar in något teckensnittsprogram alls, i linje med motsvarandeValidatePdfUa-korrigering
Version 1.49.1
Åtgärdat (Åtgärdat)
- PDF/A-utdata valideras nu som regelriktig PDF/A-1b och PDF/A-1a med veraPDF: den inbäddade sRGB-OutputIntent-ICC-profilströmmen (refererad via
/DestOutputProfile) deklarerar nu det obligatoriska/N-komponentantalet (3 för den inbyggda RGB-profilen), enligt kraven i ISO 19005-1 6.2.3.2. Dokument som framställts avSaveAsPdfAklarade tidigare inte strikt PDF/A-1-validering eftersom destinationsprofilströmmen utelämnade/N; värdet härleds från ICC-profilhuvudet, så att en anroparlevererad CMYK- eller Gray-profil också får rätt antal
Version 1.49.0
Åtgärdat (Åtgärdat)
ValidatePdfUarapporterar inte längre felaktigt saknad XMP-identifiering på regelriktiga taggade PDF-filer – PDF/UA-identifieraren (pdfuaid:part),dc:title, XMP-datumen och trailerns/IDläses nu från det ursprungliga dokumentets byte i stället för från den omsparade kopian, som utelämnar/Metadata-XMP-strömmen och, för cross-reference-stream-filer, trailerns/IDValidatePdfUakontrollen av teckensnittsinbäddning är korrigerad så att ett dokument som bäddar in alla sina teckensnitt inte längre rapporteras ha icke-inbäddade teckensnitt; den flaggar nu enbart ett dokument som refererar till teckensnitt men inte bäddar in något teckensnittsprogram allsValidatePdfUagodtar nu ettFormula-strukturelement vars alternativtext tillhandahålls viaActualTexti stället för enAlt-post (ISO 14289-1 §7.7), i enlighet med den befintligaFigure-regeln
Version 1.48.0
Tillagt (Tillagt)
- Programstyrd textmarkering på
TPdfView:SelectTextRange(efter sida och teckenintervall) ochSetSelection(efter explicita intervall per sida) markerar text från koden – till exempel för att läsa och framhäva ett textavsnitt; båda ritar om och utlöserOnSelectionChangenär markeringen ändras.SelectionRangesläser den aktuella markeringen som teckenintervall per sida, ochSelectionRectanglesreturnerar dess rektanglar i sidkoordinater för anpassad framhävning eller rullning till markeringen
Version 1.47.0
Tillagt (Tillagt)
- Navigering bland formulärfält för röststyrd formulärifyllning, på både
TPdfochTPdfView:FormFieldTabOrder,FocusedFormFieldIndex,FocusFormField,FocusNextFormField,FocusPreviousFormField,ClearFormFieldFocusochFocusedFormFieldText. Dessa flyttar en logisk fältmarkör över sidans widgetfält i tabbordning (med radbrytning vid ändarna), så att en hjälpmedelsläsare kan vandra genom formuläret, läsa upp varje fält viaFormFieldInfo[Index].AlternateName(verktygstipset /TU) och fylla i det viaFormField[Index] - Händelsen
TPdfView.OnFormFieldFocusChange, som utlöses när fältmarkören flyttas (och bär med sig det nya fältindexet, eller -1 när markeringen rensas)
Version 1.46.0
Tillagt (Tillagt)
- Innehållsström för uppläsning som hjälpmedel:
TPdf.ReadableContent,TPdf.ReadablePageContent,TPdf.DocumentReadableContentochTPdfView.ReadableContentreturnerar en ordnad lista med semantiskaTPdfContentFragment-element, där vart och ett bär den upplästa texten (verkliga glyfer, ellerActualText/Alt för figurer), en fragmenttyp (rubrik med nivå, stycke, figur, listpunkt, tabellcell, länk, vanlig text), språk, 1-baserat sidnummer samt markeringsrektanglar för blocket och per rad. Taggade PDF-filer lineariseras i logisk läsordning utifrån strukturträdet; otaggade sidor faller tillbaka på renderingsordning så att vilket dokument som helst kan läsas upp - Synkroniserad läsmarkering på
TPdfView:SetReadingHighlight,ClearReadingHighlightoch den publiceradeReadingHighlightColormarkerar det block som för närvarande läses, ovanpå sök- och markeringsöverläggen - Nya publika typer
TPdfContentFragment,TPdfContentFragments,TPdfReadableContent,TPdfContentFragmentKindochTPdfReadingOrderSource, samt den nya hjälpmetodenClassifyStructType
Version 1.45.0
Tillagt (Tillagt)
ValidatePdfUagår nu även igenom det aktiva taggade strukturträdet och rapporterar tre högkonfidensintrång i innehållet som inte kan detekteras vid bytenivåskanning: ettFigure-element utan varken Alt-post eller ActualText (ISO 14289-1, 7.3), ettFormula-element utan Alt-attribut (7.7), och ettNote-element som saknar ett unikt ID (7.9). Tre nyaTPdfUaValidationIssue-värden exponerar dessa:pvuaiFigureMissingAlt,pvuaiFormulaMissingAltochpvuaiNoteMissingId. Strukturträdsvandringen hoppas över för otaggade dokument- Ny publik hjälpmetod
ValidatePdfUaStructureElementstillämpar dessa strukturträdsregler på en platt elementlista (såsom returnerad avTPdf.StructureElements), så att kontrollerna kan köras eller enhetstestas utan att ett komplett dokument laddas
Version 1.44.5
Åtgärdat (Åtgärdat)
- Kontrollen för teckensnittsinbäddning i
ValidatePdfA(pvaiFontNotEmbedded, ISO 19005-1, 6.3.4) identifierar nu även icke-inbäddade enkla teckensnitt som saknar/FontDescriptor, framför allt de 14 standard-Type-1-teckensnitten (Helvetica, Times, Courier med flera) som PDF/A kräver ska vara inbäddade utan undantag. Tidigare gick ett sådant teckensnitt obemärkt förbi; kontrollen räknar nu även enkla teckensnittslexikon (/Type1,/TrueType,/MMType1) mot de inbäddade teckensnittsprogrammen, i linje med PDF/UA-korrigeringen i 1.44.3
Version 1.44.4
Åtgärdat (Åtgärdat)
ValidatePdfVTavvisar nu felaktigt formade ISO 16612-2 §6.5 DPart-träd där/DPartsär en platt referensarray i stället för det obligatoriska array of arrays, eller där en leaf DPart upprepar sin/Start-sida som/Endtrots att intervallet bara innehåller en sidaValidatePdfVTvaliderar nu/NodeNameList-namn som XML NMTOKEN-värden efter expansion av PDF name#xx-escapes, så ogiltiga hierarkinivånamn rapporteras viapvviMissingDPartRooti stället för att accepteras som en användbar DPart-struktur
Version 1.44.3
Åtgärdat (Åtgärdat)
- Kontrollen för teckensnittsinbäddning i
ValidatePdfUa(pvuaiFontNotEmbedded, ISO 14289-1, 7.21.4) identifierar nu även icke-inbäddade enkla teckensnitt som saknar/FontDescriptor, framför allt de 14 standard-Type-1-teckensnitten (Helvetica, Times, Courier med flera) för vilka PDF/UA inte beviljar något undantag från inbäddningskravet. Tidigare gick ett sådant teckensnitt oupptäckt och ett dokument som använde det kunde rapporteras som regelrätt; kontrollen räknar nu även enkla teckensnittslexikon (/Type1,/TrueType,/MMType1) mot de inbäddade teckensnittsprogrammen med hjälp av ValidatePdfUa
Version 1.44.2
Åtgärdat (Åtgärdat)
ValidatePdfVTlämnar nu en befintlig men okändpdfvtid:GTS_PDFVTVersion-markör sompvcUnknowni stället för att sänka den tillpvcNone. Det gör ogiltiga filnivåsträngar somPDF/VT-2smöjliga att skilja från dokument som helt saknar PDF/VT-markör; PDF/VT-2s identifieras av MIME stream header i ISO 16612-2 Annex A, inte av PDF-filens XMP-markör/DPartRoot-kontrollen validerar nu tree semantics i ISO 16612-2 §6.5 mer strikt:/DPartRootNodeoch/NodeNameListmåste beskriva det faktiska DPart-djupet, DPart parent links måste bilda ett träd,/Startoch/DPartsutesluter varandra, och varje sidas/DPartmåste peka på den täckande leaf DPart i samma depth-first-ordning som page tree
Version 1.44.1
Åtgärdat (Åtgärdat)
SaveAsPdfVTskriver nu en minimal Document Part Hierarchy enligt ISO 16612-2 §6.5 när käll-PDF:en saknar en användbar/DPartRoot. Det skapade trädet länkar varje sida via/DPart, bevarar en befintlig giltig hierarki och lämnar rikare mottagar-/DPM-metadata till det anropande arbetsflödetValidatePdfVTvaliderar nu den användbara DPart-strukturen, läser PDF/VT-XMP-värden både från RDF-attribut och elementtext, och kräver exakt matchning mellan PDF/VT och PDF/X-bas: PDF/VT-1 kräver PDF/X-4, medan PDF/VT-2 kräver PDF/X-4p, PDF/X-5g eller PDF/X-5pgTPdfVTSaveOptions.Conformance = pvc2skriver inte längre ogiltiga PDF/VT-2-markörer för enstaka filer. Writer för enstaka filer normaliserar utdata till PDF/VT-1 eftersom PDF/VT-2 kräver filuppsättningssemantik
Version 1.44.0
Tillagt (Tillagt)
ValidatePdfUarapporterar nu även bytekontrollerbara innehållsnivåöverträdelser mot PDF/UA utöver filformatmarkörerna: ett teckensnittsprogram som inte är inbäddat (ISO 14289-1, 7.21.4), ett teckensnitt som saknar en/ToUnicodeCMap när ingen undantagen enkel-teckensnittskodning finns (7.21.7), samt ett dokument som innehåller anteckningar men inte deklarerar någon/Tabs /Stabbordning på sidan (7.18.3)- Tre nya
TPdfUaValidationIssue-värden —pvuaiFontNotEmbedded,pvuaiFontMissingToUnicodeochpvuaiMissingTabsOrder— exponeras avValidatePdfUaoch i preflight-rapporten. De är grova heuristiker avsedda som preflight-indikationer snarare än en fullständig ISO 14289-1-verifiering
Version 1.43.1
Åtgärdat (Åtgärdat)
SaveAsPdfUatillämpar nu de obligatoriska katalogposterna/ViewerPreferences/DisplayDocTitle trueoch/MarkInfo/Marked true/Suspects falseenligt ISO 14289-1, 7.1, även när källdokumentet redan tillhandahåller dessa lexikon med saknade eller motstridiga värden. Tidigare injicerades markörerna bara när lexikonen helt saknades, vilket innebar att ett källdokument som exempelvis innehöll/ViewerPreferencesutanDisplayDocTitleeller ett/MarkInfomed/Marked falseresulterade i en fil som inte uppfyllde kraven- Befintliga nycklar i ett redan förekommande
/ViewerPreferences- eller/MarkInfo-lexikon bevaras, och ett lexikon som tillhandahålls som en indirekt referens löses upp innan de obligatoriska nycklarna tillämpas
Version 1.43.0
Tillagt (Tillagt)
ValidatePdfAtillämpar nu PDF/A-2-/PDF/A-3-reglerna för inbäddade och associerade filer samt för text på nivå U. Inbäddade filer avvisas fortfarande för PDF/A-1; för PDF/A-3 flaggas en inbäddad fil som saknar den obligatoriska nyckeln/AFRelationship(ISO 19005-3 Annex E), medan PDF/A-2-bilagor tillåts (deras egen konformitet verifieras inte rekursivt). Ett nytt problempvaiUnicodeMappingMissingrapporterar ett PDF/A-2u- eller PDF/A-3u-dokument vars teckensnitt saknar/ToUnicode-mappning (ISO 19005-2 6.2.11.7). Transparens och valfritt innehåll flaggas fortfarande endast för PDF/A-1
Version 1.42.0
Tillagt (Tillagt)
- PDF/A-2 (ISO 19005-2) och PDF/A-3 (ISO 19005-3) stöds nu på alla tre konformitetsnivåerna — a, b och u — av
SaveAsPdfA,ValidatePdfAoch egenskapenPdfAConformance. UppräkningenTPdfAConformancefårpac2a,pac2u,pac3aochpac3u(PDF/A-1 har ingen nivå u). Vid sparning skrivs matchandepdfaid:part(2 eller 3) ochpdfaid:conformance(A, B eller U), och OutputIntent-subtypenGTS_PDFA1behålls, vilken ISO 19005-2 bibehåller av kompatibilitetsskäl. En begäran om nivå A nedgraderas fortfarande till motsvarande nivå B (för valfri del) när dokumentet saknar den taggade struktur som den nivån kräver
Version 1.41.0
Tillagt (Tillagt)
ValidatePdfAupptäcker nu, utöver de strukturella markörer den redan rapporterade, även PDF/A-överträdelser på innehållsnivå som inte kan repareras genom markörinjektion: JavaScript och andra förbjudna åtgärder, additional actions (/AA), inbäddade filer,LZWDecode, transparens (soft masks och transparency groups), valfritt innehåll (/OCProperties), förbjudna annotation-subtyper (FileAttachment, Sound, Movie, 3D, Screen), AcroForm/NeedAppearances trueoch/XFA, teckensnitt vars deskriptorer saknar ett inbäddat teckensnittsprogram, samt en Level A-uppgift utan den taggade struktur som ISO 19005-1 6.8 kräver. Kontrollerna av transparens, valfritt innehåll och inbäddade filer gäller endast PDF/A-1 (dessa funktioner är tillåtna i PDF/A-2 och PDF/A-3). NyaTPdfAValidationIssue-värden synliggör varje fall; de befintliga värdena är oförändrade
Version 1.40.3
Åtgärdat (Åtgärdat)
SaveAsPdfAtar nu bort all kryptering från källdokumentet innan PDF/A-utdata produceras. ISO 19005-1 6.1.3 förbjuder trailer-nyckeln/Encrypt, men sparvägen behöll tidigare källans säkerhetshanterare, så att spara ett krypterat dokument som PDF/A gav en krypterad, icke-konform fil. Vid PDF/A-sparning dekrypteras dokumentet nu först. Okrypterade dokument påverkas inte
Version 1.40.2
Åtgärdat (Åtgärdat)
- Hindrade
SaveAsPdfAfrån att utfärda en felaktig konformitetsuppgift för PDF/A Level A. När Level A (pac1a) begärs men källdokumentet saknar de markörer för taggad struktur som krävs enligt ISO 19005-1 6.8 — ett/StructTreeRooti katalogen och en/MarkInfo-ordbok med/Marked true— identifieras nu den sparade filen som motsvarande Level B (pdfaid:conformance=B) i stället för att hävda Level A. Rent visuell PDF/A-1b-utdata påverkas inte
Version 1.40.1
Åtgärdat (Åtgärdat)
- Skärpte valideringen av PDF-versionskompatibilitet så att åtgärden
SetOCGState(set-optional-content-group-state) känns igen som en PDF 1.5-funktion. Att spara till ett PDF 1.2-, 1.3- eller 1.4-mål som innehåller enSetOCGState-åtgärd avvisas nu för att överensstämma med ISO 32000-1 (Table 198); tidigare kunde en sådan åtgärd släppas igenom till utdata med lägre version. Den separata, föråldrade PDF 1.2-åtgärdenSetStategodtas fortfarande från och med PDF 1.2
Version 1.40.0
Tillagt (Tillagt)
- Band PDFium-API:t
FPDFPageObj_AddExistingMark(), som kopplar en befintlig innehållsmarkering till ett sidobjekt. När på varandra följande sidobjekt delar samma markering slår den sparade PDF:en ihop dem till en enda markering som omfattar alla; objekt som inte följer på varandra får separata kopior - Band PDFium-API:t
FPDFTextObj_SetFontSize()för att ändra punktstorleken på ett befintligt textobjekt, som komplement till den redan befintliga bindningenFPDFTextObj_GetFontSize()
Ändrat (Ändrat)
- Uppdaterade de medföljande PDFium-körtids-DLL:erna (Win32 och Win64, standard- och V8-byggen) till PDFium-ögonblicksbilden från 2026-06-02
Version 1.39.53
Ändrat (Ändrat)
- Delphi-exemplen
PDFViewer,SplitViewochMultiPageVieweröppnar nu dokument i lägetZoom to Pagesom standard - Den första renderingen passar nu in hela sidan i visningsområdet innan användaren väljer en manuell zoomnivå
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata har uppdaterats för att rapportera 1.39.53
Version 1.39.52
Ändrat (Ändrat)
- Förbättrade
Demo\Lazarus\CreatePDFså att introduktionsexemplet nu genererar en tvåsidig PDF med vektorbanor, tabellinnehåll, en inbäddad bild, en textannotering, roterad text och en tydligare genomgång av dokumentbygget - Lade till välpolerade
README.html-sidor för varje Delphi-, C++Builder- och Lazarus-demomapp, vilket ersätter den sista textbaserade demo-README:n med en guide som går att läsa i webbläsare - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.52
Version 1.39.51
- Förbättrade batchsammanfattningarna i
Demo\Delphi\PreflightReportClimed standardspecifika statustotaler för Pass, Action required och Review över de valda standarderna - Rader per fil innehåller nu action-required- och review-antal i TXT-, HTML-, JSON- och CSV-sammanfattningar, vilket gör CI-artefakter enklare att granska utan att öppna varje genererad rapport
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.51
Version 1.39.50
- Förbättrade katalogbatchläget i
Demo\Delphi\PreflightReportCliså attbatchdir=foldersamlar in upptäckta PDF-sökvägar, sorterar dem och sedan genererar rapporter i stabil ordning - Rekursiva katalogskanningar ger nu reproducerbar rapportordning och sammanfattningsrader, medan explicit behandling via
batch=list.txtfortfarande bevarar ordningen i listfilen - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.50
Version 1.39.49
- Förbättrade batchsammanfattningarna i
Demo\Delphi\PreflightReportCliså att de registrerar körinställningar: källtyp, källsökväg, rekursivt läge, utdatakatalog, rapportformat, valda standarder ochfailon=-läge - JSON-sammanfattningar innehåller nu ett
run-objekt, TXT- och HTML-sammanfattningar visar en sektion för körinställningar och CSV-rader upprepar samma granskningskolumner för kalkylblad och CI-pipelines - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.49
Version 1.39.48
- Förbättrade namnläggningen av batchutdata i
Demo\Delphi\PreflightReportCliså att dubblettnamn på indatafiler som delar sammaoutdir=inte längre skriver över varandras genererade rapporter - Batchkörningar lägger nu till suffixen
-2,-3och senare när en genererad rapportsökväg redan har tilldelats i samma körning, och sammanfattningarna registrerar den slutliga kollisionssäkra rapportsökvägen - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.48
Version 1.39.47
- Förbättrade batchsammanfattningarna i
Demo\Delphi\PreflightReportCliså att TXT- och JSON-utdata nu innehåller aggregerade totaler för totalt antal filer, bearbetade filer, misslyckade filer, problem ochfailon=-träffar - CSV-sammanfattningar förblir rena radtabeller för befintliga konsumenter, medan HTML-sammanfattningar fortsätter att visa samma aggregerade mått i dashboardens sidhuvud
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.47
Version 1.39.46
- Förbättrade
Demo\Delphi\PreflightReportClimedsummary=batch.html/.htmså att batchkörningar kan skapa en webbläsarläsbar dashboard vid sidan av TXT-, CSV- och JSON-manifest - HTML-sammanfattningar visar totaler för totalt, bearbetade, misslyckade, problem och
failon=-träffar och listar därefter varje indatafil med rapportlänkar, status, antal och feltext - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.46
Version 1.39.45
- Förbättrade
Demo\Delphi\PreflightReportClimedbatchdir=folderochrecursiveså att skript kan skanna PDF-kataloger direkt utan att först skriva en listfil - Katalogbatchläget återanvänder beteendet för
outdir=,summary=,standards=ochfailon=från listbaserat batchläge, medan icke-rekursiv skanning bara läser den valda katalogen ochrecursiveinkluderar underkataloger - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.45
Version 1.39.44
- Förbättrade
Demo\Delphi\PreflightReportClimedsummary=batch.csv|json|txtså att batchkörningar kan skapa ett maskinläsbart manifest bredvid rapporterna per fil - Batchsammanfattningar innehåller nu varje indatasökväg, rapportsökväg, status, antal standarder, antal godkända, antal problem,
failon=-träffstatus och feltext för CI-jobb och externa skript - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.44
Version 1.39.43
- Förbättrade
Demo\Delphi\PreflightReportClimedbatch=list.txtochoutdir=reportsså att skript kan generera preflight-rapporter för en lista med PDF-filer i en enda körning - Batchläget hoppar över tomma rader och kommentarrader som börjar med
#, härleder varje rapportnamn med.preflight.<ext>från indata-PDF:en, fortsätter efter fel per fil och sammanfattar bearbetade respektive misslyckade filer innan det avslutas - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.43
Version 1.39.42
- Förbättrade
Demo\Delphi\PreflightReportClimedfailon=none|issues|action|reviewså att CI-jobb kan omvandla genererade preflight-resultat till deterministiska avslutskoder - CLI:t returnerar nu avslutskod 2 när en vald
failon=-regel matchar efter att rapportfilen och eventuell bifogad rapport-PDF har genererats, medan körtidsfel fortfarande returnerar avslutskod 1 - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.42
Version 1.39.41
- Förbättrade
Demo\Delphi\PreflightReportClimedattach=output.pdfså att en genererad preflight-rapport kan bäddas in som bilaga på dokumentnivå i en ny PDF-kopia - CLI:t behåller den genererade TXT-, HTML-, Markdown-, JSON- eller CSV-rapportfilen på disk och vägrar att bifoga tillbaka till den ursprungliga indatasökvägen för PDF, vilket minskar risken för oavsiktlig överskrivning
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.41
Version 1.39.40
- Lade till
Demo\Delphi\PreflightReportCli, en Delphi-konsolkompanjon för skriptbar generering avFPdfPreflightReportutan att öppna en visare - CLI:t stöder skapande av exempelfil utan argument, in- och utargument, valfritt lösenord, utdataformaten
text,html,md,jsonochcsvsamt filtrering medstandards=för PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R och PDF/VT - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.40
Version 1.39.39
- Förbättrade
FPdfPreflightReportmedTPdfPreflightReport.ToMarkdownochSaveMarkdownToFileså att preflight-rapporter kan exporteras som Markdown som fungerar bra i ärendehanterare - Uppdaterade Delphi-, C++Builder- och Lazarus-exemplen
PreflightReportmed Markdown-förhandsvisning och Save MD-åtgärder vid sidan av det befintliga TXT-, HTML-, JSON- och CSV-flödet - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.39
Version 1.39.38
- Förbättrade Delphi-, C++Builder- och Lazarus-exemplen
SecurityAuditmed export av JSON-granskningsrapporter vid sidan av det befintliga TXT-flödet för spara och kopiera - JSON-rapporten innehåller
format,generatedAt,summary,findingCountoch strukturerade rader ifindingsmed fält för allvarlighetsgrad, område och detalj - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.38
Version 1.39.37
- Förbättrade
FPdfPreflightReportmedTPdfPreflightReport.ToCsvochSaveCsvToFileså att preflight-rapporter kan exporteras som kalkylbladsvänlig CSV - Uppdaterade Delphi-, C++Builder- och Lazarus-exemplen
PreflightReportmed CSV-förhandsvisning och Save CSV-åtgärder vid sidan av det befintliga TXT-, HTML- och JSON-flödet - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.37
Version 1.39.36
- Förbättrade
FPdfPreflightReportmedTPdfPreflightReport.IssueCategoryCountssamt återanvändbara typernaTPdfPreflightIssueCategoryCountochTPdfPreflightIssueCategoryCountsför att aggregera problem på markörnivå per kategori - Uppdaterade
TPdfPreflightReport.ToText,ToHtmlochToJsonså att genererad PreflightReport-utdata innehåller sammanfattningar av problemkategorier tillsammans med rader per standard och detaljerade problemrekommendationer - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.36
Version 1.39.35
- Bytte namn på det utökade exemplet
PrintDialogtillPrintPreferencesi Delphi, C++Builder och Lazarus så att demonamnet nu matchar dess arbetsflöde för utskriftsinställningar från PDF-författaren, N-up-utskrift, filtrering av udda/jämna sidor, gråskala, cellramar och duplexmappning - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.35
Version 1.39.34
- Förbättrade
Demo\Delphi\PrintPDFmed PDF-inläsning via dra-och-släpp och dokumenterade det befintliga arbetsflödet iDemo\CBuilder\PrintPDFtillsammans med Delphi- och Lazarus-exemplen för PrintPDF - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.34
Version 1.39.33
- Lade till
Demo\CBuilder\SplitView, vilket fullbordar SplitView-matrisen över Delphi, C++Builder och Lazarus - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.33
Version 1.39.32
- Lade till
Demo\Lazarus\SplitView, vilket ger Lazarus PDF-jämförelse sida vid sida med layouter i två eller tre paneler, navigering i aktiv vy, synkroniserade kommandon, zoomförval och rotation - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.32
Version 1.39.31
- Lade till
Demo\Lazarus\PrintPDF, vilket ger Lazarus det vanliga arbetsflödet för PDF-utskrift med förhandsgranskning, sidintervall, antal kopior, sorteringsläge, framsteg och avbrytning - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.31
Version 1.39.30
- Lade till
Demo\Lazarus\FontProperties, vilket fullbordar FontProperties-matrisen över Delphi, C++Builder och Lazarus - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.30
Version 1.39.29
- Lade till
Demo\CBuilder\FontProperties, vilket ger C++Builder indexerad inspektion av tecken- och teckensnittsmetadata vid sidan av Delphi-exemplet - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.29
Version 1.39.28
- Lade till
Demo\Delphi\ExtractTextPages, vilket fullbordar exempelsamlingen för textsidextraktion per sida över Delphi, C++Builder och Lazarus - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.28
Version 1.39.27
- Lade till
Demo\Lazarus\PrintDialog, vilket fullbordar PrintDialog-matrisen över Delphi, C++Builder och Lazarus - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.27
Version 1.39.26
- Lade till
Demo\CBuilder\PrintDialog, vilket ger C++Builder arbetsflödet för N-up-utskrift och utskriftsinställningar från PDF-författaren vid sidan av Delphi-exemplet - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.26
Version 1.39.25
- Lade till
Demo\CBuilder\ViewerInteractionLab, vilket fullbordar ViewerInteractionLab-matrisen över Delphi, C++Builder och Lazarus - Uppdaterade bibliotekets byggarbetsflöde och Win64-paketutdata för C++Builder så att visningsinteraktionsmetoderna i
TPdfViewlänkar korrekt i Win64-demon - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.25
Version 1.39.24
- Lade till
Demo\Lazarus\ViewerInteractionLab, vilket ger Lazarus det fokuserade arbetsflödet för visningsinteraktion vid sidan av Delphi-exemplet - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.24
Version 1.39.23
- Lade till
Demo\Lazarus\SearchAndSelect, vilket fullbordar SearchAndSelect-matrisen över Delphi, C++Builder och Lazarus - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.23
Version 1.39.22
- Lade till
Demo\CBuilder\ContentExtractionLabochDemo\Lazarus\ContentExtractionLab, vilket ger arbetsflödet för extraktion av innehåll i flera kategorier till alla stödda demo-IDE:er - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.22
Version 1.39.21
- Förbättrade
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportochDemo\CBuilder\PreflightReportmed en väljare för förhandsvisningsformat så att användare kan granska text- eller JSON-utdata innan rapporter sparas - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.21
Version 1.39.20
- Lade till JSON-export i
FPdfPreflightReportviaTPdfPreflightReport.ToJsonochSaveJsonToFile, vilket ger maskinläsbara sammanfattningar, status och prioritet per standard, nästa åtgärder och problemdetaljer - Uppdaterade
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportochDemo\CBuilder\PreflightReportmed Save JSON-åtgärder vid sidan av TXT- och HTML-export - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.20
Version 1.39.19
- Förbättrade
FPdfPreflightReportmedTPdfPreflightStatus, problemkategorier, prioritet per standard och vägledning om nästa åtgärd i TXT- och HTML-rapporter - Uppdaterade
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportochDemo\CBuilder\PreflightReportså att de visar status, prioritet, problemantal och nästa åtgärd i sammanfattningsrutnätet - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.19
Version 1.39.18
- Lade till
Demo\Lazarus\SecurityAudit, vilket fullbordar demo-matrisen över Delphi, C++Builder och Lazarus för arbetsflödet med skrivskyddad granskning av PDF-riskyta - Lazarus-exemplet listar behörigheter, bilagor, JavaScript-åtgärder, URI- och Launch-länkannoteringar, webblänkar, signaturer, XFA-status, tillgänglighet för V8/XFA-hjälpare och callbacks för funktioner som inte stöds, och sparar eller kopierar sedan fyndlistan som en TXT-rapport
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.18
Version 1.39.17
- Lade till
Demo\CBuilder\SecurityAudit, vilket ger C++Builder arbetsflödet för skrivskyddad granskning av PDF-riskyta vid sidan av det befintliga Delphi-exemplet - C++Builder-exemplet listar behörigheter, bilagor, JavaScript-åtgärder, URI- och Launch-länkannoteringar, webblänkar, signaturer, XFA-status, tillgänglighet för V8/XFA-hjälpare och callbacks för funktioner som inte stöds, och sparar eller kopierar sedan fyndlistan som en TXT-rapport
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.17
Version 1.39.16
- Lade till
Demo\CBuilder\SearchAndSelect, vilket ger C++Builder det fristående arbetsflödet SearchAndSelect för visare vid sidan av det befintliga Delphi-exemplet - C++Builder-exemplet skapar eller öppnar PDF-filer, listar träffar på alla sidor med förhandsvisning av sida och teckenindex, stöder navigering med Previous och Next samt dubbelklicksnavigering och markerar träffar på aktuell sida med
HighlightSearchText - Det exponerar också
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangeoch alternativ för spriddDisplayMode, och versionsmetadata rapporterar nu 1.39.16
Version 1.39.15
- Lade till
Demo\CBuilder\WatermarkStamp, vilket fullbordar demo-matrisen över Delphi, Lazarus och C++Builder för återanvändbara arbetsflöden med vattenstämplar och stämplar baserade på Form XObject - C++Builder-exemplet skapar mål- och stämpel-PDF-filer, återanvänder stämpelsidan via
CreateXObjectFromPage, tillämpar transformationer medTPdfMatrixoch sparar centrerade vattenstämplar, hörnstämplar och etiketter för sidnummer - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.15
Version 1.39.14
- Lade till
Demo\Lazarus\WatermarkStamp, vilket ger Lazarus arbetsflödet för återanvändbara vattenstämplar och stämplar med Form XObject - Lazarus-exemplet skapar mål- och stämpel-PDF-filer, återanvänder stämpelsidan via
CreateXObjectFromPage, tillämpar transformationer medTPdfMatrixoch sparar centrerade vattenstämplar, hörnstämplar och etiketter för sidnummer - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.14
Version 1.39.13
- Lade till
Demo\CBuilder\PreflightReport, vilket fullbordar demo-matrisen över Delphi, Lazarus och C++Builder för det återanvändbara arbetsflödet medFPdfPreflightReport - C++Builder-exemplet använder
FPdfPreflightReport.hppför att generera standardsammanfattningar, förhandsvisningar av TXT-rapporter, rapportfiler i TXT och HTML samt beteendet Open Last Report - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.13
Version 1.39.12
- Lade till
Demo\Lazarus\PreflightReport, vilket ger Lazarus arbetsflödet för preflight-rapportering för PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R och PDF/VT - Lazarus-exemplet kan öppna eller skapa en PDF, välja målstandarder, förhandsgranska sammanfattningsrader och TXT-rapportutdata, spara TXT- och HTML-rapporter samt öppna den senast sparade rapporten
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.12
Version 1.39.11
- Förbättrade
Demo\Delphi\SearchAndSelectmed en träfflista för sökning över alla sidor som registrerar sidnummer, teckenindex och förhandsvisningstext - Lade till navigering med Previous och Next samt hopp till träff via dubbelklick, samtidigt som beteendet för
HighlightSearchTextpå aktuell sida bevaras - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.11
Version 1.39.10
- Förbättrade
Demo\Delphi\SecurityAuditmed åtgärderna Save Report och Copy Report som exporterar den aktuella sammanfattningen och fyndraderna som en TXT-granskningsrapport - Demon rensar nu statusen för rapportexport när granskningspanelen återställs, så att kopierade eller sparade rapporter hålls i synk med de synliga fynden
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.10
Version 1.39.9
- Förbättrade
Demo\Delphi\ContentExtractionLabmed sparning av käll-PDF, kopiering av rapport till urklipp och åtgärder för att välja alla eller inga kategorier - Demon ogiltigförklarar nu den aktuella rapporten när kategorival ändras, så att TXT- och JSON-export återspeglar det synliga extraktionsomfånget
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.9
Version 1.39.8
- Lade till
Demo\Delphi\ContentExtractionLab, ett enhetligt exempel för arbetsflödet med extraktion av dokumentmetadata, sidtext, sidobjekt, bilder, bilagor, länkar, annoteringar, bokmärken samt teckensnitts- och teckenmått - Exemplet kan öppna en befintlig PDF eller skapa en syntetisk PDF med text-, bild-, bilage- och annoteringsinnehåll och därefter generera sammanfattningsrader och detaljerade TXT- och JSON-rapporter
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.8
Version 1.39.7
- Lade till
Lib\FPdfPreflightReport.pas, en återanvändbar rapporthjälpare som samlarValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRochValidatePdfVTi ett endaTPdfPreflightReport-objekt - Lade till
Demo\Delphi\PreflightReport, ett arbetsflödesexempel som öppnar eller skapar en PDF, väljer målstandarder, förhandsgranskar sammanfattningsrader och problemrekommendationer samt sparar TXT- eller HTML-rapporter - De genererade rapporterna beskriver uttryckligen den inbyggda valideringsgränsen på markörnivå så att program kan kombinera dem med särskilda preflight-verktyg för innehållsnivå när det behövs
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata, paketprojektlistor och installationsprogrammets versionsmetadata så att de rapporterar 1.39.7
Version 1.39.6
- Lade till
Demo\Delphi\SearchAndSelect, ett fokuserat exempel på visningsarbetsflöde för sökmarkering, textmarkering, förhandsvisning av vald text, kopiering, rensning och spridda visningslägen - Exemplet demonstrerar
HighlightSearchText, sökalternativen matcha skiftläge och hela ord,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardochClearSelectionutan att lägga till något nytt biblioteks-API - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.6
Version 1.39.5
- Byggde ut
Demo\Delphi\ViewerInteractionLabtill ett SearchAndSelect-liknande användargränssnittsexempel för visaren medHighlightSearchText, alternativ för matcha skiftläge och hela ord, förhandsvisning av vald text och befintliga kontroller för markering och urklipp - Utökade
Demo\Delphi\PrintDialogså att den granskar PDF-författarens utskriftsinställningar:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlingoch synlig duplexmappning viaSetPdfPrintPaperHandlingDevMode - Lade till
Demo\Delphi\SecurityAudit, ett skrivskyddat riskyteexempel som listar behörigheter, bilagor, JavaScript på dokumentnivå, URI- och Launch-länkar, webblänkar, signaturer, XFA-status och tillgänglighet för V8/XFA-hjälpare - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.5
Version 1.39.4
- Lade till
Demo\CBuilder\ImageToPDFochDemo\Lazarus\ImageToPDF, vilket fullbordar ImageToPDF-matrisen över Delphi, C++Builder och Lazarus - De nya exemplen demonstrerar val av flera bilder, förhandsvisning av vald bild, en PDF-sida per bild, A4-storlek i stående eller liggande format, centrerad bildskalning, framsteg per bild och öppning av den genererade PDF-filen efter sparning
- Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.4
Version 1.39.3
- Lade till
Demo\CBuilder\BatchExport, vilket ger C++Builder arbetsflödet för export av flera PDF-filer till JPG vid sidan av de befintliga Delphi- och Lazarus-exemplen - Exemplet demonstrerar
LoadCustomDocument,IPdfCancellationTokenSource, strömmande indata viaTFileStream, framsteg per fil och sida, hantering av avbrytning, inmatningar för DPI, kvalitet och lösenord samt öppning av utdatakatalogen efter slutförande - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.3
Version 1.39.2
- Lade till
Demo\Delphi\WatermarkStamp, ett körbart arbetsflödesexempel för Form XObject som skapar en mål-PDF och en återanvändbar stämpel-PDF och sedan lägger centrerade vattenstämplar, övre högra stämplar och etiketter för sidnummer på varje sida - Exemplet demonstrerar
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixochFPDFPageObj_SetMatrixutan att lägga till något nytt biblioteks-API - Uppdaterade
Docs\en-us\Examples.htmlså att den använder det aktuella mönstret medTPdfMatrix.Handlenär matriser skickas tillFPDFPageObj_SetMatrix - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.2
Version 1.39.1
- Lade till
Demo\Delphi\ViewerInteractionLab, ett fokuseratTPdfView-exempel för visningslägen, anpassningslägen, sidfärger, rotation, användartextmarkering, urklippsåtgärder och koordinatåterkoppling viaDeviceToPage - Lade till
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLabså att Lazarus-användare kan köra arbetsflödet för validering och markörutdata för PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R och PDF/VT - Listade standardenheterna i
Lib\37.0\PDFiumPas.dprojochLib\FPC\PDFiumLaz.lpkoch rättade Delphi-bygget för demonSplitViewgenom att ta bort en duplicerad import avWinapi.ShellAPI - Rättade blockerare i Delphi-demons batchbyggen i
BatchExport,PDFViewer,MultiPageViewerochSplitViewutan att ändra deras körningsbeteende - Rättade kompatibiliteten för C++Builder-demons batchbyggen i
PDFViewerochMultiPageViewergenom att ersättanullptrmedNULLför det aktuella projektläget - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.1
Version 1.39.0
- Lade till
Demo\Delphi\StandardsLab, ett körbart standardarbetsflödesexempel som laddar eller skapar en PDF, körValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRochValidatePdfVToch visar upptäckt konformitet, godkänd/underkänd-status och antal problem i ett enda rutnät - StandardsLab-knapparna för att spara anropar
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRochSaveAsPdfVT, vilket gör utdata för PDF-standardmarkörer synlig utan att skriva en egen testhärva - Uppdaterade
TPdf.AboutInfo, Lazarus-paketmetadata och installationsprogrammets versionsmetadata så att de rapporterar 1.39.0
Version 1.38.0
TPdfView-överlägg för sökning och textmarkering använder nu riktig alfablendning i stället för logisk maskmålning, vilket bevarar sidinnehållet under markeringar- Lade till
SetPdfPrintPaperHandlingDevModeför att mappaTPrintPaperHandlingtill Windows-värden iDEVMODE.dmDuplex:DMDUP_SIMPLEX,DMDUP_HORIZONTALochDMDUP_VERTICAL TPdfView.SmoothScrollanimerar nu rad- och sidkommandon i rullningslisten i timerdrivna segment, medan tumspårning fortfarande är omedelbar- Uppdaterade
TPdf.AboutInfooch installationsprogrammets versionsmetadata så att de rapporterar 1.38.0
Version 1.37.0
TPdfäger nu ett renderlås per instans som serialiserarRenderPage,RenderTile,RenderPageProgressive, sidomladdning och avlastning av dokument. Arbetsstyrd rendering genom en delad komponent är nu praktisk, medan program fortfarande samordnar dokumentmutation och livslängd- Rättade omslaget för zero-copy-bitmap så att det avvisar bottom-up-
TBitmap-DIB-layouter och faller tillbaka till en PDFium-ägd buffert före kopiering ut, vilket eliminerar fel med korrupt radsteg och åtkomstöverträdelse i VCL-renderingstester - Skärpte markeringsbeteendet i
TPdfView:AllowUserTextSelectionstyr nu endast användarinmatning, kodnivå-API:er för markering ritar fortfarande ochSelectAllföljer det faktiskt synliga uppslaget så att omslagssidan inte längre markerar sida 2. Delphi-, Lazarus- och C++Builder-testerna utökades därefter - Uppdaterade
TPdf.AboutInfooch installationsprogrammets versionsmetadata så att de rapporterar 1.37.0
Version 1.36.0
- Aktiverade textmarkering för slutanvändare i
TPdfView- egenskapenAllowUserTextSelectionsom reserverades i v1.17.0 driver nu en fullständig pipeline för dra-och-markera. Vänsterklick på ett texttecken går in i markeringsläge, medan vänsterklick på ett tomt område fortsätter att panorera som tidigare. Form-fill-widgeten behåller prioritet, så klick på ett formulärfält fokuserar fortfarande fältet i stället för att starta en markering - Dubbelklick markerar ordet, trippelklick markerar raden,
Ctrl+Amarkerar den aktuella sidan eller båda sidorna i uppslagslägen, ochCtrl+Ckopierar markeringen till Windows-urklippet somCF_UNICODETEXT Shift+Left/Shift+Rightutökar markeringen ett tecken i taget och spiller över till angränsande sida i uppslagsläge, medanShift+Home/Shift+Endutökar till den visuella radkanten med utgångstecknets boxhöjd som tolerans för radklustring, så att rader med blandade teckenstorlekar hålls korrekt samlade- När muspekaren hålls över text ändras markören till
crIBeam, och när den lämnar text återställs standardmarkören. Medan en dra-och-markera-operation pågår får en dragning in i en dödzon på 20 pixlar vid någon visarkant sidan att auto-rulla, så att markeringen kan fortsätta förbi den aktuella vyn utan att musknappen först släpps - Markering över flera sidor fungerar i uppslagslägena
dmTwoPageContinuousochdmTwoPageContinuousWithCover: en dragning som börjar på vänstersidan och slutar på högersidan markerar det sammanhängande intervallet över båda.SelectedTextsammanfogar delarna per sida med CR/LF så att den återlästa texten ser ut som normalt flerradigt innehåll - Ny publicerad egenskap
SelectionColormed standardvärdetclHighlight, alltså Windows systemfärg för markering, är oberoende avHighlightColorsom färgar sökresultat gult. Sökmarkeringar och en aktiv dra-och-markera-operation kan därför visas samtidigt utan färgkonflikt - Ny publicerad händelse
OnSelectionChangeutlöses när markeringsintervallen faktiskt ändras och aldrig vid identisk återapplicering, så värdprogram kan koppla den direkt till statusfältstext eller knappstatus utan debouncing - Nytt publikt API på
TPdfView:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAllochCopySelectionToClipboard. Dessa är ingångar på kodnivå och fungerar alltid oavsettAllowUserTextSelection, eftersom flaggan bara styr användarinmatning som mus, Ctrl+C, Ctrl+A och shift-pilar - En standard-popupmeny för högerklick med
Copy/复制kopplas automatiskt in när värden inte har tilldelat en egenPopupMenu, så standardflödet markera text, högerklicka, kopiera fungerar direkt. Rubriken väljs mellan engelska och kinesiska viaSysLocale.PriLangID, och värdar som behöver full lokalisering kan bara tilldela en egenPopupMenu - Markeringen rensas automatiskt vid övergångar i
SetPdf,SetPageNumber,SetActive(False)ochDisplayMode, med exakt en utlösning avOnSelectionChangenär den tidigare markeringen inte var tom. Form-fill-delsystemet behåller prioritet, så när ett formulärfält redigeras skjuts alla markeringsgenvägar upp så att fältet själv fårCtrl+C,Ctrl+AochShift+arrows - Utökade regressionssviterna för Delphi och Lazarus till 202 fall vardera och sviten för C++Builder till 159 fall, med täckning för standardvärden, round-trip, offentligt API-beteende, rensningar vid tillståndsändringar, musdragning, klick kontra dragning, byte till IBeam-markör, dubbelklick på ord, trippelklick på rad, tangentbordsgenvägar, automatisk popupmeny och markering över uppslag, inklusive en round-trip-kontroll för CR/LF via urklippet
Version 1.35.0
- Lade till stöd för injektion av PDF/VT-markörer enligt ISO 16612-2:2010: TPdf.SaveAsPdfVT upphöjer det aktuella dokumentet till en PDF/VT-1- eller PDF/VT-2-kompatibel fil. Eftersom PDF/VT bygger på PDF/X-4 skriver injiceraren hela uppsättningen PDF/X-4-markörer, inklusive XMP
pdfxid:GTS_PDFXVersion = "PDF/X-4", Info/GTS_PDFXVersion (PDF/X-4)och/Trapped, samt katalogens/OutputIntentsmed inbäddad ICC-profil - Den PDF/VT-specifika injektionen omfattar XMP
pdfvtid:GTS_PDFVTVersionochpdfvtid:GTS_PDFVTModDate, som hålls synkroniserad medxmp:ModifyDate, samt en pdfaExtension:schemas-beskrivning som deklarerar både pdfxid- och pdfvtid-namnrymderna viahttp://www.npes.org/pdfx/ns/id/ochhttp://www.npes.org/pdfvt/ns/id/och en trailer med/ID-array - Lade till TPdf.SaveAsPdfVTToStream för PDF/VT-utdata i minnet samt standardgenvägen
TPdf.SaveAsPdfVT(FileName)som producerar PDF/VT-1 med den medföljande sRGB IEC61966-2.1 OutputIntent på 3144 byte och/Trapped /False - Lade till TPdf.ValidatePdfVT, som kontrollerar markörer för PDF/VT-kompatibilitet som förekomst av
pdfvtid:GTS_PDFVTVersionochGTS_PDFVTModDate, likhet mellanpdfvtid:GTS_PDFVTModDateochxmp:ModifyDate, närvaro av den underliggandepdfxid:GTS_PDFXVersion, katalogens/DPartRootenligt §6.5,/OutputIntentsmed/DestOutputProfile, trailer-ID, krypteringsstatus ochxmp:CreateDate/ModifyDate - Lade till egenskapen TPdf.PdfVTConformance, som returnerar det öppna dokumentets konformitetsnivå som pvc1, pvc2, pvcNone eller pvcUnknown utan att ValidatePdfVT behöver anropas explicit
- Nya typer exporterade i enheten FPdfPdfvt: TPdfVTConformance, TPdfVTTrappedState, TPdfVTValidationResult, TPdfVTValidationIssue och TPdfVTSaveOptions
- Document Part Hierarchy med
DPartRootochDPartär struktur på applikationsnivå som beror på arbetsflödets mottagare och sidintervall. SaveAsPdfVT syntetiserar därför inte något DPart-träd - en saknad/DPartRootrapporteras sompvviMissingDPartRootså att anroparen kan skicka PDF/VT-filer vidare till ett separat steg som bygger DPart - Uppdaterade TPdf.AboutInfo-strängen så att den rapporterar den aktuella produktversionen
Version 1.34.0
- Lade till stöd för injektion av PDF/R-1-markörer enligt ISO 23504-1:2020: TPdf.SaveAsPdfR upphöjer det aktuella dokumentet till en PDF/R-1-kompatibel fil (den rasterbildsdelmängd av PDF som används för inskannade dokument). Injektionen omfattar de krav på filformatnivå som kan bifogas genom efterbearbetning — den unika versionsidentifierande kommentaren
%PDF-raster-1.0som skrivs mellan trailerlexikonet och startxref-nyckelordet (§5), kataloglexikonet strippat ner till vitlistan i §6.3 (endast Version / ViewerPreferences / PageLayout / PageMode / AcroForm / Metadata överlever), Document Information Dictionary strippad till vitlistan i §6.4.3 (endast Creator / Producer / CreationDate / ModDate), en katalog-/Metadata-XMP-ström med de fyra posterna från §6.4.4 Table 1 (xmp:CreatorTool / pdf:Producer / xmp:CreateDate / xmp:ModifyDate) samt en trailer-/ID-array - Lade till TPdf.SaveAsPdfRToStream för PDF/R-utdata i minnet samt standardgenvägen
TPdf.SaveAsPdfR(FileName)för normalfallet - Lade till TPdf.ValidatePdfR, som kontrollerar en öppen PDF mot PDF/R-1-kompatibilitetsmarkörer (slutkommentaren
%PDF-raster-x.y, rubrikversion, avsaknad av /Type /ObjStm, vitlistaefterlevnad i katalogen, vitlistaefterlevnad i Info-lexikonet, förekomst av XMP-metadataström och trailer-/ID) och returnerar TPdfRValidationResult med den upptäckta konformitetsnivån och de problem som hittats - Lade till egenskapen TPdf.PdfRConformance, som returnerar det öppna dokumentets konformitetsnivå som prc1, prcNone eller prcUnknown utan att ValidatePdfR behöver anropas explicit
- Nya typer exporterade i den nya enheten FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue och TPdfRSaveOptions.
TPdfRSaveOptions.Defaultsätter StripInfoOptionalEntries och StripCatalogOptionalEntries till True, så injektorn producerar som standard en katalog och ett Info-lexikon som följer §6.3 / §6.4.3; anropare kan sätta dem till False för att bevara källposterna (utdata uppfyller då inte de PDF/R-klausulerna, men övriga markörer följer fortfarande med) - Krav på innehållsnivå ligger fortfarande på käll-PDF:en: per-sida-Contents-strukturen (§6.5.1), MediaBox-formen
[0 0 w h](§6.5.3), filterrestriktionerna (§6.2.2 — endast FlateDecode, bitonal CCITTFaxDecode och DCTDecode 8-bitars grå/RGB), avsaknad av objektströmmar (§6.2.4) samt strip-layouten enligt §6.6. Det går inte att tvinga fram med efterbearbetning — PDF/R är strukturellt en mycket striktare delmängd än de andra PDF/x-standarderna och kräver att källbytorna genereras korrekt. ValidatePdfR visar de filformatproblem som enheten kan upptäcka; kombinera med en PDF/R-valdator från TWAIN Working Group för fullständiga kontroller på innehållsnivå - Uppdaterade TPdf.AboutInfo-strängen så att den rapporterar den aktuella produktversionen
Version 1.33.0
- Lade till stöd för injektion av PDF/X-markörer för ISO 15930-familjen: TPdf.SaveAsPdfX upphöjer det aktuella dokumentet till en PDF/X-1a:2001-, PDF/X-3:2002- eller PDF/X-4-kompatibel fil via efterbearbetning med en inkrementell uppdatering. Injektionen omfattar en XMP-metadataström med
pdfxid:GTS_PDFXVersionoch vid behovpdfxid:GTS_PDFXConformance, motsvarande pdfaExtension:schemas-beskrivning, ett omskrivet Info-lexikon med/GTS_PDFXVersion,/GTS_PDFXConformanceoch/Trapped, en uppdaterad katalog med/OutputIntents [N 0 R]som refererar till ett OutputIntent-lexikon med/S /GTS_PDFXoch en inbäddad ICC-profil samt en trailer med/ID - Lade till TPdf.SaveAsPdfXToStream för PDF/X-utdata i minnet samt standardgenvägen
TPdf.SaveAsPdfX(FileName)som producerar PDF/X-4 med den inbyggda sRGB IEC61966-2.1 OutputIntent på 3144 byte - Lade till TPdf.ValidatePdfX, som kontrollerar markörer för PDF/X-kompatibilitet som pdfxid-identifieraren i XMP, likhet med värdet i Info-lexikonet, pdfxid extension schema-beskrivningen, OutputIntents-arrayen med DestOutputProfile, titel, trailer-ID, krypteringsstatus och förekomst av XMP-datumen
- Lade till egenskapen TPdf.PdfXConformance, som returnerar det öppna dokumentets konformitetsnivå som pxc1a, pxc3, pxc4, pxcNone eller pxcUnknown utan att ValidatePdfX behöver anropas explicit. XMP-versionsträngen parsas för att skilja de tre konformitetsnivåerna åt
- Nya typer exporterade i enheten FPdfPdfx: TPdfXConformance, TPdfXTrappedState, TPdfXValidationResult, TPdfXValidationIssue och TPdfXSaveOptions.
TPdfXSaveOptions.Defaultriktar in sig på PDF/X-4 med sRGB OutputIntent och/Trapped /False, medan anropare kan åsidosättaConformance, levereraIccProfileDataeller ändraOutputCondition,OutputConditionIdentifierochRegistryName - Krav på innehållsnivå som att alla teckensnitt ska vara inbäddade, att JavaScript inte får förekomma, att synliga annoteringar ska saknas och att transparensreglerna för PDF/X-1a och PDF/X-3 ska uppfyllas ligger fortfarande på dokumentförfattaren och PDFiums renderingspipeline. Kombinera ValidatePdfX med ett preflight-verktyg för fullständig konformitetsverifiering
- Uppdaterade TPdf.AboutInfo-strängen så att den rapporterar den aktuella produktversionen
Version 1.32.0
- Lade till stöd för injektion av PDF/E-1-markörer enligt ISO 24517-1:2008: TPdf.SaveAsPdfE upphöjer det aktuella dokumentet till en PDF/E-1-kompatibel fil via efterbearbetning av bas-PDF:en med en inkrementell uppdatering. Injektionen omfattar de krav på filformatnivå som kan bifogas genom efterbearbetning — en XMP-metadataström med
pdfe:ISO_PDFEVersion = "PDF/E-1"plus motsvarande pdfaExtension:schemas-beskrivning, ett omskrivet Document Information Dictionary med den obligatoriska posten/ISO_PDFEVersion (PDF/E-1)som §5 kräver, Info-XMP-bryggblocken ärvda från 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) samt en trailer-/ID-array som §6.2 kräver - Lade till TPdf.SaveAsPdfEToStream för PDF/E-utdata i minnet samt standardgenvägen
TPdf.SaveAsPdfE(FileName)för normalfallet - Lade till TPdf.ValidatePdfE, som kontrollerar en öppen PDF mot PDF/E-1-kompatibilitetsmarkörer (förekomst av XMP pdfe:ISO_PDFEVersion och likhet med värdet i Info-lexikonet, pdfe extension schema-beskrivning, posten /ISO_PDFEVersion i Info-lexikonet, trailer-/ID samt förekomst av xmp:CreateDate / xmp:ModifyDate) och returnerar ett strukturerat resultat med den upptäckta konformitetsnivån och de problem som hittats
- Lade till egenskapen TPdf.PdfEConformance, som returnerar det öppna dokumentets konformitetsnivå som pec1, pecNone eller pecUnknown utan att ValidatePdfE behöver anropas explicit
- Nya typer exporterade i den nya enheten FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue och TPdfESaveOptions
- Omskrivningen av Info-lexikonet är en nypionjär för PDFium Delphi Components PDF/x-efterbearbetningsväg — den skriver om det befintliga Info-objektet med samma objektnummer (så att referenserna i xref-delsektionen och trailerns /Info förblir giltiga) och syntetiserar ett nytt Info-lexikon när källtrailern saknar /Info-post. PDFium själv genererar ett Info-lexikon i varje SaveAs-utdata, så normalfallet är omskrivningsvägen
- Krav på innehållsnivå (teckensnittsinbäddning, ToUnicode-CMaps, förbjudna XObjects / ExtGState-nycklar / XFA-formulär och så vidare) ligger fortfarande på dokumentförfattaren — SaveAsPdfE bifogar filformatmarkörerna men ändrar inte sidinnehållet eller tar bort förbjudna funktioner
- Uppdaterade TPdf.AboutInfo-strängen så att den rapporterar den aktuella produktversionen
Version 1.31.0
- Lade till stöd för injektion av PDF/UA-1-markörer enligt ISO 14289-1:2014: TPdf.SaveAsPdfUa upphöjer det aktuella dokumentet till en PDF/UA-1-kompatibel fil via efterbearbetning med en inkrementell uppdatering. Injektionen omfattar en XMP-metadataström med
pdfuaid:part = 1och motsvarande pdfaExtension:schemas-beskrivning, obligatoriskdc:title, katalogposterna/MarkInfo << /Marked true /Suspects false >>och/ViewerPreferences << /DisplayDocTitle true >>, valfri katalog-/Langsamt en trailer med/ID - Lade till TPdf.SaveAsPdfUaToStream för PDF/UA-utdata i minnet samt standardgenvägen
TPdf.SaveAsPdfUa(FileName)för normalfallet - Lade till TPdf.ValidatePdfUa, som kontrollerar markörer för PDF/UA-1-kompatibilitet som förekomst av StructTreeRoot, Lang, MarkInfo med Marked true och Suspects = false, ViewerPreferences med DisplayDocTitle true, XMP-identifieraren pdfuaid:part, dc:title, trailer-ID och krypteringsstatus
- Lade till egenskapen TPdf.PdfUaConformance, som returnerar det öppna dokumentets konformitetsnivå som puc1, pucNone eller pucUnknown utan att ValidatePdfUa behöver anropas explicit
- Nya typer exporterade i enheten FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue och TPdfUaSaveOptions
- Fält som lämnas tomma i TPdfUaSaveOptions för Title, Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate, DocumentId, InstanceId och Language fylls automatiskt från FPDF_GetMetaText, FPDF_GetFileIdentifier och FPDFCatalog_GetLanguage, så befintliga anropare kan spara med en enda rad
- Krav på innehållsnivå som fullständig taggning i StructTreeRoot, Alt-text för Figure, ToUnicode-CMaps och inbäddade teckensnitt ligger fortfarande på dokumentförfattaren - SaveAsPdfUa fäster bara filformatmarkörerna och hittar inte på taggar. Avsaknad av StructTreeRoot visas som
pvuaiMissingStructTreeRootså att anroparen kan skicka otaggade dokument vidare till en separat taggningspipeline - Uppdaterade TPdf.AboutInfo-strängen så att den rapporterar den aktuella produktversionen
Version 1.30.0
- PDF/A-1b-utdata uppfyller nu ISO 19005-1 (med Cor.1:2007) krav på ekvivalens mellan Document Information Dictionary och XMP: varje Info-lexikonpost som PDFium skriver in i bas-PDF:en speglas in i XMP-paketet, inklusive Title (dc:title), Author (dc:creator), Subject (dc:description enligt Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) och ModDate (xmp:ModifyDate). xmp:MetadataDate genereras också
- Trailern i ett PDF/A-dokument innehåller nu alltid en /ID-array (hårt krav enligt ISO 19005-1 6.1.3). När TPdf.SaveAsPdfA behandlar ett dokument vars källa redan har en filidentifierare återanvänds de befintliga permanenta och föränderliga ID:n på 16 byte; i annat fall härleds ett deterministiskt reserv-ID på 16 byte från källbytorna
- Den injicerade XMP:en bäddar nu in pdfaid extension schema-beskrivningen som ISO 19005-1 6.7.8 (ersatt av Cor.1) kräver — pdfaid behandlas som ett extension schema relativt XMP Specification 2004, så alla kompatibla filer måste deklarera dess egenskapsnamn, värdetyper och kategorier i pdfaExtension:schemas-behållaren
- TPdfASaveOptions har fått fem nya valfria fält: Producer, CreationDate, ModDate (PDF-datumsträngar på formen “D:YYYYMMDDHHmmSSOHH'mm'”), DocumentId och InstanceId (bytesträngar på 16 byte för trailer-/ID-arrayen). TPdf.SaveAsPdfA / SaveAsPdfAToStream fyller automatiskt i saknade fält från FPDF_GetMetaText och FPDF_GetFileIdentifier, så befintliga anropare fortsätter fungera utan ändringar
- TPdf.ValidatePdfA / TPdf.PdfAConformance rapporterar nu tre ytterligare problem: pvaiMissingTrailerId (ingen /ID i trailern), pvaiMissingXmpDates (xmp:CreateDate eller xmp:ModifyDate saknas) och pvaiMissingExtensionSchema (pdfaid extension schema-beskrivning saknas)
- Icke-ASCII-tecken i Title, Author, Subject, Keywords, Creator och Producer kodas nu som UTF-8 i XMP-paketet (XMP Specification kräver UTF-8), så att flerspråkig metadata klarar round-trip genom SaveAsPdfA
- Uppdaterade TPdf.AboutInfo-strängen så att den rapporterar den aktuella produktversionen
Version 1.29.0
- Uppdaterade de medföljande PDFium-DLL:erna (Win32 och Win64, både standard- och V8-byggen) till PDFium-ögonblicksbilden från 2026-05-22, vilket tar med fixar för FPDFText_SetText / FPDFText_SetCharcodes-kraschvägarna och diverse intern härdning från PDFium-projektet
- Exponerade PDFiums nya sparflagga FPDF_SUBSET_NEW_FONTS i FPdfPageOps.pas, så att FPDF_SaveAsCopy-anropare kan begära automatisk subsetting av inbäddade teckensnittsfiler för nyligen tillagda textobjekt. De befintliga konstanterna FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL och FPDF_REMOVE_SECURITY definieras nu i PDFiums bitshift-form (det äldre numeriska värdet 3 bevaras som FPDF_REMOVE_SECURITY_DEPRECATED av hänsyn till binär kompatibilitet)
- Lade till enum-typen FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) och det motsvarande fältet m_FontLibraryType på FPDF_LIBRARY_CONFIG i FPdfView.pas, så att program som initierar PDFium med Skia-renderaren nu kan välja teckensnittsbackend vid start
- Uppdaterade signaturen för TFPDFPage_InsertObject så att den matchar PDFiums C-export: funktionen returnerar nu FPDF_BOOL (TRUE vid lyckat resultat, FALSE om page_object är NULL eller ägaröverföringen misslyckas) i stället för void. Befintliga PDFium Delphi Component-anropare kompilerar oförändrat, eftersom Delphi / FPC tillåter att en funktions returvärde ignoreras
- Korrigerade TPdf.AboutInfo-strängen så att den rapporterar den aktuella produktversionen (den hade fastnat på v1.27.0 eftersom v1.28.0 bara var en dokumentationsrelease)
Version 1.28.0
- Utökade dokumentationen på postsidorna kraftigt genom hela API-referensen: varje post för egenskap, metod, händelse och global funktion har nu en Description på tre stycken, en Remarks-lista, ett flerradigt Delphi-Example och ett rikare See Also-block — över 200 tidigare tunna sidor, bland dem alla TPdf-räknare, metadata-getters, teckensnitts- och teckenaccessorer, egenskaper på sidnivå, indexerade records, metoder på dokumentnivå och hela TPdfViews yta för tillstånd, visning och händelser
- Finjusterade hjälplayouten så att den matchar losLabs visuella baslinje: matchade h1-/h2-storlekarna, samlade API-navigeringens rutnätsstilar i det gemensamma StyleSheet:et och tog bort de per-sida-inline-CSS-överstyrningarna på Navigation.html
- Dokumentationen levereras nu med ett hjälpskript (Docs\Build-Expand-Entries.ps1) som återskapar berikandet av postsidorna från en enda datatabell, för ett underhåll som går att upprepa
Version 1.27.0
- Lade till stöd för att skapa PDF/A-1b: TPdf.SaveAsPdfA sparar vilket öppet dokument som helst som en PDF/A-1b-kompatibel fil genom att efterbearbeta bas-PDF:en med en inkrementell uppdatering som injicerar en XMP-metadataström, en sRGB ICC OutputIntent och en uppdaterad dokumentkatalog — allt utan att några extra DLL-API:er krävs. Fungerar på alla plattformar som PDFium Delphi Component stödjer
- Lade till TPdf.SaveAsPdfAToStream för PDF/A-utdata i minnet
- Lade till TPdf.ValidatePdfA, som kontrollerar en öppen PDF mot PDF/A-kompatibilitet (XMP pdfaid-markörer, OutputIntent med inbäddad ICC-profil, kryptering) och returnerar ett strukturerat resultat med den upptäckta konformitetsnivån och en uppsättning specifika problem som hittats
- Lade till egenskapen TPdf.PdfAConformance, som returnerar det öppna dokumentets konformitetsnivå som pac1b, pac1a, pac2b, pac3b, pacNone eller pacUnknown utan att ValidatePdfA behöver anropas explicit
- Nya typer exporterade: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue och TPdfASaveOptions (i den nya enheten FPdfPdfa.pas)
- SaveAsPdfA stödjer en egen ICC-profil via TPdfASaveOptions.IccProfileData; lämnas fältet tomt används den inbyggda sRGB IEC61966-2.1-profilen (HP/Microsoft, 3144 byte) automatiskt
- Ersatte den monolitiska HTML-referensen med ett omstrukturerat webbhjälpsystem: 302 individuella API-postsidor (en per egenskap, metod, händelse och global funktion) som täcker TPdf och TPdfView, var och en med fullständig beskrivning, parametertabell, Delphi-kodexempel och See Also-länkar
- Lade till Navigation.html: ett heltäckande API-navigeringsindex på en sida, organiserat i sex sektioner (TPdf-egenskaper/metoder/händelser, TPdfView-egenskaper/metoder/händelser, globala funktioner) med ett flexrutnät på 5 kolumner för snabb avläsning
- Byggde om TPdf.html och TPdfView.html till kompakta komponentöversiktssidor som behåller typreferenssektionerna (Types, Constants, Global Variables) och länkar ut till de enskilda postsidorna för alla medlemmar
- Lade till fulltextssökning driven av Search.js med inkrementell matchning på klientsidan över alla 312 indexerade sidor
- Uppdaterade alla navigeringsfält på hela webbplatsen så att de pekar på Navigation.html
Version 1.26.0
- Lade till Demo/Lazarus/BatchExport, LCL-porten av Delphi-demon BatchExport från v1.14.0. Samma funktionsuppsättning: PDF -> JPG-export för flera filer med totalframsteg per fil, aktuellt framsteg per sida, inmatning av DPI / kvalitet / lösenord och en sats som kan avbrytas kooperativt via IPdfCancellationToken. Utdatamappen öppnas i plattformens filhanterare när extraktionen har lyckats
Version 1.25.0
- Lade till återanvändning av Form XObject-sidor i TPdf, vilket möjliggör vattenstämplar, mallöverlägg och arbetsflöden av typen “stämpla en sida på många”: CreateXObjectFromPage tillverkar ett återanvändbart handle från valfri sida i ett annat dokument, och InsertFormObjectFromXObject infogar EN kopia av den omslutna sidan i den aktuella sidan. Returnerar det infogade FPDF_PAGEOBJECT så att anroparen kan positionera / skala / rotera det med FPDFPageObj_SetMatrix och TPdfMatrix-hjälpmedlen från v1.9.0
- Den nya Pascal-klassen TPdfXObject omsluter PDFiums FPDF_XOBJECT-handle och stänger det automatiskt i sin destruktor, vilket gör slut på det manuella FPDF_CloseXObject-ritualet
- Utökade regressionssviterna för Delphi och Lazarus till 147 fall vardera och sviten för C++Builder till 123 fall, med täckning av kontrakten för handle-skapande och infogning av sidobjekt
Version 1.24.0
- Lade till TPdf.RenderPageProgressive — en avbrytbar variant av RenderPage som driver PDFiums progressiva renderingsloop och pollar en IPdfCancellationToken från v1.7.0 mellan iterationerna, så att långa hög-DPI-renderingar kan avbrytas mitt på sidan i stället för att blockera anroparen tills de är klara
- Returnerar ett TPdfProgressiveStatus-värde: prsDone, prsCancelled eller prsFailed. Skicka AToken = nil för att rendera klart utan att någonsin pausa (ingen möjlighet till prsCancelled)
- Använder samma zero-copy-snabba väg som introducerades i v1.21.0 — PDFium renderar direkt in i mål-TBitmapens DIB. Samma äldre reservväg gäller när DIB:en inte kan omslutas
- Utökade regressionssviterna för Delphi och Lazarus till 145 fall vardera och sviten för C++Builder till 121 fall, med täckning av nil-token (klart till slut), föravbruten token (prsCancelled) och pixelekvivalens med synkron RenderPage på en aktiv token
Version 1.23.0
- Lade till sex nya TPdfView-metoder som exponerar PDFiums textmarkering i formulärwidgetar samt Undo/Redo för program: GetSelectedFormText returnerar den aktuellt markerade texten i den fokuserade formulärwidgeten, SelectAllFormText markerar alla tecken, och FormUndo / FormRedo / FormCanUndo / FormCanRedo driver den fokuserade widgetens redigeringshistorik. De underliggande PDFium-API:erna var redan bundna men saknade en ingång på hög nivå. Alla sex avbryter tidigt på ett säkert sätt när vyn är inaktiv eller dokumentet inte har någon AcroForm-widget i fokus
- Utökade regressionssviterna för Delphi och Lazarus till 142 fall vardera och sviten för C++Builder till 119 fall, med täckning av kontraktet ingen formulär–ingen fokus för varje ny metod
Version 1.22.0
- Lade till sidkomponeringsomslutningar i TPdf: ImportPagesByIndex tar en nollbaserad indexarray för att kopiera specifika sidor från ett källdokument, ImportNPagesToOne returnerar en helt ny TPdf vars sidor är N-up-kompositter av detta dokument, och MovePages ordnar om sidor på plats. De underliggande PDFium-API:erna var redan bundna men saknade en Pascal-vänlig ingång
- ImportPagesByIndex accepterar en tom array för att importera alla källsidor (motsvarar att skicka nil på C-ABI-nivå)
- Utökade regressionssviterna för Delphi och Lazarus till 136 fall vardera och sviten för C++Builder till 115 fall, med täckning av delmängdsimport, import av hela dokumentet, sidoomordning och N-up-komposit
Version 1.21.0
- Förbättrade renderingsprestandan genom att byta TPdf.RenderPage / TPdf.RenderTile (och motsvarande TPdfView-hjälpmetoder) till en zero-copy-utdataväg. PDFium skriver nu direkt in i mål-TBitmapens DIB-buffert i stället för in i en intern buffert som sedan kopierades rad för rad, vilket sparar en minneskopia på bredd x höjd x 4 byte per rendering. Förbättringen syns mest vid hög DPI (miniatyrbildspaneler, export i utskriftskvalitet, batchexport)
- Den äldre per-scanline-vägen behålls som säkerhetsreserv för det osannolika fallet att mål-DIB:en inte kan omslutas (extrema dimensioner, ovanlig stride, OOM). Beteendet är byte-identiskt mellan de två vägarna, bara långsammare i reservvägen
- Utökade regressionssviterna för Delphi och Lazarus till 132 fall vardera och sviten för C++Builder till 112 fall, med täckning av uppgradering av anroparens bitmap till pf32bit, dimensioners round-trip och ett stride-sanitytest för stora bitmaps
Version 1.20.0
- Lade till framhäving av sökresultat i TPdfView: HighlightSearchText(Text, MatchCase, MatchWholeWord) skannar den aktuella visningssidan, returnerar antalet träffar och målar en HighlightColor-mask över varje träff vid varje omritning. ClearHighlight tar bort framhävingarna; byter vyn till en annan sida rensas de automatiskt, eftersom träffar är sidspecifika
- HighlightColor har standardvärdet clYellow och är publicerad så att program kan anpassa framhävingens färg efter sin UI-palett
- Utökade regressionssviterna för Delphi och Lazarus till 129 fall vardera och sviten för C++Builder till 109 fall, med täckning av standardfärg, färg-round-trip, “riktiga ordträffar mot fixturen” mot strängen i sample.pdf och kontraktet “saknat ord ger noll träffar”
Version 1.19.0
- Lade till egenskapen FitMode i TPdfView med fyra värden: pfmNone (manuell zoom), pfmActualSize (100 %), pfmFitPage (hela sidan ryms i visningsytan) och pfmFitWidth (sidbredden matchar visningsytans bredd). Det aktiva anpassningsläget återappliceras automatiskt vid Resize och när den aktuella sidan byts, så att långa dokument med blandade sidstorlekar alltid hålls perfekt inramade
- Sätter man Zoom direkt avbryts det aktiva anpassningsläget (FitMode återgår till pfmNone), i linje med den vanliga PDF-visningskonventionen där man skriver in ett zoomvärde för att lämna Fit Page / Fit Width
- Standard är pfmNone så att befintliga program behåller sitt beteende med explicit zoom
- Utökade regressionssviterna för Delphi och Lazarus till 124 fall vardera och sviten för C++Builder till 106 fall, med täckning av standardvärde, läges-round-trip, att fit-page ger en verklig zoom på ett laddat dokument och att manuell zoom avbryter anpassningsläget
Version 1.18.0
- Lade till egenskapen PageColor i TPdfView, vilken frikopplar den renderade PDF-sidans bakgrund från den omgivande kontrollens Color. Standard är clWhite, så PDF-sidor renderas nu som pappersvita oavsett värdprogrammets tema. Visare i mörkt läge kan nu hålla rullningsytan mörk medan själva PDF-sidan förblir vit (eller valfri färg programmet väljer)
- Beteendeändring: program som tidigare satte TPdfView.Color för att omfärga PDF-sidan ska i stället sätta PageColor. Standardupplevelsen blir bättre i normalfallet (vita sidor mot tematiserade kontrollbakgrunder) utan någon kodändring
- Utökade regressionssviterna för Delphi och Lazarus till 120 fall vardera och sviten för C++Builder till 103 fall, med täckning av standardvärde och färg-round-trip
Version 1.17.0
- Lade till låsbrytare för användarinmatning i TPdfView, så att program som bäddar in visaren i kiosker, förhandsgranskningspaneler eller skrivskyddade sammanhang kan stänga av navigeringsgester utan subclassing: AllowUserPageChange styr de nya kortkommandona PgUp / PgDn / Ctrl+Home / Ctrl+End, ChangePageOnMouseScrolling styr de nya sidhoppen med mushjul upp/ner, och AllowUserTextSelection är reserverad för den framtida vägen för textmarkering med musdrag. Alla tre har standardvärdet True, så befintliga program uppgraderas utan beteendeändring
- Sidnavigering med mushjulet hoppar över Ctrl+hjul, så att program kan behålla Ctrl+hjul reserverat för zoom
- Utökade regressionssviterna för Delphi och Lazarus till 118 fall vardera och sviten för C++Builder till 101 fall, med täckning av standardvärden och brytar-round-trip
Version 1.16.2
- Utökade TPdfView-regressionstäckningen för annoteringslänkklick när visarens sida skiljer sig från den associerade TPdf-sidan, med en verklig headless-musklicksväg i Delphi, Lazarus och C++Builder
- Delphi- och Lazarus-sviterna kör nu 114 fall vardera, och C++Builder kör nu 99 fall
Version 1.16.1
- Åtgärdade TPdfViews länkklickshantering så att automatiska annoterings- och weblänkåtgärder använder den sida som visaren för närvarande visar, även när den associerade TPdf-komponenten står parkerad på en annan sida
- Härdade TPdfThumbnailView mot hängande Pdf-referenser när den länkade TPdf-komponenten förstörs
- Lade till regressionstäckning för miniatyrbildsreferensernas livslängd; Delphi- och Lazarus-sviterna kör nu 113 fall vardera och C++Builder kör nu 98 fall
- Synkroniserade README, testdokumentation, sök-/indexinnehållet i HTML Help och de genererade C++-paketutdata med integrationsuppdateringarna från v1.7.0 till v1.16.0
Version 1.16.0
- Lade till en ny Delphi-demo PrintDialog (Demo/Delphi/PrintDialog) som fokuserar på N-up-utskrift (1 / 2 / 4 / 9 sidor per ark) med filtrering på udda/jämna sidor, gråskalerendering och valfria cellramar på 1 pixel. Den är en medvetet liten kompanjon till den befintliga PrintPDF-demon, som redan täcker förhandsgranskning, senaste filer, zoom och skalning
Version 1.15.0
- Lade till en ny komponent TPdfThumbnailView (enheten FPdfThumbnail) som renderar en sidominiatyr per rad i en rullningsbar sidopanel, med hover- och markeringsframhäving samt navigering där ett klick hoppar till sidan. Den är designad för att sitta bredvid en TPdfView så att slutanvändare kan bläddra i ett långt dokument per sida
- Komponenten registreras på palettfliken losLab bredvid TPdf och TPdfView; nyckelegenskaper: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor samt händelsen OnPageClick
- Utökade regressionssviterna för Delphi och Lazarus till 112 fall vardera och sviten för C++Builder till 97 fall, med täckning av standardvärden, round-trip för miniatyrstorlek, fastspänning av extremvärden, färg-round-trip och tilldelning av händelsehanterare
Version 1.14.0
- Lade till en ny Delphi-demo BatchExport (Demo/Delphi/BatchExport) som visar hur man konverterar många PDF-filer till JPG i ett svep, med TPdf.LoadCustomDocument för strömmande inläsning, IPdfCancellationToken för kooperativ avbrytning och framstegsribbor per fil och per sida. Demon använder en TPdf-instans per fil (PDFium är i sig inte trådsäkert) och öppnar utdatamappen i Explorer när extraktionen har lyckats
Version 1.13.0
- Lade till ett UI-överlägg för asynkron rendering i TPdfView via tre nya egenskaper: AsyncRendering, LoadingText och LoadingColor. När AsyncRendering är True ritar enkelsidets ritningsväg en liten “Loading...”-indikator över den renderade sidan, så att program som använder en egen worker för långa renderingar får en konsekvent visuell signal
- Standardvärdena bevarar det befintliga beteendet: AsyncRendering är False, så program som inte väljer att använda funktionen ser ingen visuell förändring
- Dokumentationen klargör att PDFium i sig inte är trådsäkert — att faktiskt lägga över renderingen på en worker kräver att anroparen håller en TPdf per worker; den kommande batchexportdemon visar det mönstret
- Utökade regressionssviterna för Delphi och Lazarus till 106 fall vardera och sviten för C++Builder till 93 fall, med täckning av standardvärden och round-trip för de tre egenskaperna
Version 1.12.0
- Lade till klickstyrd länkhantering i TPdfView. Den nya egenskapen LinkOptions styr det automatiska beteendet för PDF:ns fyra länkåtgärdstyper: goto (sidhopp), URI (ShellExecute), launch (ShellExecute) och inbäddad GotoR (reserverad). Standard aktiverar loAutoGoto och loAutoOpenURI; loAutoLaunch och loAutoEmbeddedGoto förblir avstängda, så att ett oavsiktligt klick inte kan köra ett godtyckligt program
- Lade till händelserna OnAnnotationLinkClick och OnWebLinkClick, som utlöses innan någon automatisk åtgärd görs och låter program granska länken, markera den som Handled eller omdirigera den (till exempel till en säkerhetsfråga)
- Länkklicksdetekteringen körs bara när gesten är ett klick och inte en dragning, med ett färskt MouseDown-ankare, så att panorering fortfarande går via den befintliga rullningsvägen oförändrat
- Utökade regressionssviterna för Delphi och Lazarus till 102 fall vardera och sviten för C++Builder till 91 fall, med täckning av standardvärda LinkOptions, round-trip av uppsättningen och tilldelning av händelsehanterare
Version 1.11.0
- Lade till visuell finess i TPdfView: egenskaperna PageShadowSize, PageShadowColor och PageBorderColor ritar en valfri skugga under sidrektangeln och en enpixelram runt den. Standardvärdena bevarar det tidigare platta utseendet (PageShadowSize = 0; ramen ritas i standardfärgen clBlack men smälter in i den vita standardbakgrunden tills anroparen ändrar färgerna)
- Lade till egenskapen SmoothScroll som en opt-in-flagga för framtida inkrementell rullningsanimation; egenskapen round-trippar i dag och är kopplad så att program kan spara preferensen, medan renderingssidan fortfarande använder det befintliga omedelbara rullningsbeteendet
- Utökade regressionssviterna för Delphi och Lazarus till 98 fall vardera och sviten för C++Builder till 89 fall, med täckning av standardvärden, egenskaps-round-trip och fastspänningen av negativ skuggstorlek
Version 1.10.0
- Lade till direkt bildinsättning via nya överlagringar TPdf.AddImage och TPdfView.AddImage som tar antingen en filsökväg eller en TBitmap, utöver den befintliga TPicture-baserade AddPicture. AddImage(FileName) känner igen alla format som registrerats i VCL:s eller LCL:s grafikenheter (BMP, PNG via enheten PngImage, JPG och så vidare) och går via samma pipeline som AddPicture, så beteendet är identiskt
- AddImage(TBitmap) hoppar över TPicture-mellanhanden, vilket förenklar för anropare som redan har en TBitmap från rendering eller batchgenerering
- Utökade regressionssviterna för Delphi och Lazarus till 92 fall vardera och sviten för C++Builder till 84 fall, med täckning av bitmapinsättning, sidobjektens gränser, avvisning av nil-bitmap och inläsning av BMP-filer
Version 1.9.0
- Lade till stöd för transformationsmatriser på hög nivå genom den nya klassen TPdfMatrix i enheten FPdfMatrix. TPdfMatrix omsluter PDFiums FS_MATRIX med ett OO-API för Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew och Multiply, lämpat för att komponera transformationer innan de skickas vidare till FPDFPageObj_SetMatrix och liknande PDFium-API:er
- TPdfMatrix.Multiply tar korrekt en ögonblicksbild av de sex matriselementen innan de nya radvärdena beräknas, vilket åtgärdar en dold bugg där de alternativa Pascal-implementationerna skriver över tidigare element under samma anrop och ger felaktiga resultat för alla kompositioner utöver ren translering
- Utökade regressionssviterna för Delphi och Lazarus till 88 fall vardera och sviten för C++Builder till 81 fall, med täckning av identitet, återställning, translate / scale / flip, kompositionsordning vid eftermultiplikation och Multiply-regressionsfallet
Version 1.8.0
- Lade till strömläsning på begäran genom den nya metoden TPdf.LoadCustomDocument(AStream, AOwnsStream) och hjälpklassen TPdfStreamAdapter, backade av PDFiums FPDF_LoadCustomDocument. PDFium läser nu block från den angivna TStream:en först när det behövs, så mycket stora eller fjärrbelägna PDF:er kräver inte längre en förhandsgenererad kopia i minnet
- Lade till valfritt strömägande: skickar man AOwnsStream = True överlämnas TStream:ens livslängd till TPdf, som frigör den när UnloadDocument körs
- Utökade regressionssviterna för Delphi och Lazarus till 79 fall vardera och sviten för C++Builder till 75 fall, med täckning av strömmande inläsning via TFileStream, städning av ägda strömmar och kontraktet att externägda strömmar överlever unload
Version 1.7.0
- Lade till kooperativa primitiver för asynkron avbrytning i den nya enheten FPdfAsync, som exponerar IPdfCancellationToken / IPdfCancellationTokenSource och en återanvändbar PdfNoCancellationToken-singleton, så att långvariga renderings- och exportarbetsflöden kan stödja ren semantik för avbryt från UI
- Lade till en lättviktig TPdfFuture<T>-hjälp som kör en worker på en bakgrundstråd och postar TPdfFutureResult<T>-kuvertet tillbaka till huvudtråden, med åtskillnad mellan lyckat resultat, avbrytning och misslyckande
- Utökade regressionssviterna för Delphi och Lazarus till 76 fall vardera och sviten för C++Builder till 73 fall, med delad täckning av avbrottstillstånd, idempotent cancel, callback-utspridning och registrering efter avbrott
Version 1.6.10
- Lade till TPdf.PrintPageRanges-åtkomst på hög nivå till PDF-visarens inställning för utskriftssidointervall, som returnerar sidointervall med ettbaserad numrering för programkod
- Lade till TPdf.SetFormFieldFlags / SetFormFieldFlagsAt och motsvarande TPdfView-hjälpmetoder, så att program kan uppdatera AcroForm-fältflaggor via det publika API:et, med täckning även för lösenords- och flervalsflaggor
- Härdade ABI-täckningen i PDFium-bindningen för FPDF_DWORD med Windows-storlek, FPDF_FILEACCESS-callbacks och slotsfälten för V8 embedder
Version 1.6.9
- Lade till lågnivåbindningar för Skia-rendering av de nyligen exporterade API:erna FPDF_RenderPageSkia och FPDF_FFLDrawSkia i de medföljande standard- och V8-PDFium-DLL:erna
- Utökade kontrollerna av den publika bindningstäckningen, så att inläsning av standard- och V8-DLL nu verifierar Skias renderingsingångspunkter vid sidan av de befintliga V8/XFA-kapacitetssonderingarna
Version 1.6.8
- Lade till TPdf.SetTextPositions och TPdfSingleArray för att sätta position per tecken på befintliga textobjekt via det nyligen exporterade API:et FPDFText_SetPositions
- Upphöjde FPDFText_SetPositions till obligatorisk bindning för de aktuella medföljande PDFium-DLL:erna, samtidigt som det bekräftades att Skias renderingsingångspunkter fortfarande inte är tillgängliga, eftersom DLL:erna fortfarande inte exporterar dem
- Utökade regressionssviterna för Delphi, C++Builder och Lazarus till 65 fall vardera, med täckning av textpositioner
Version 1.6.7
- Lade till TPdf-åtkomst på hög nivå till dokumentets JavaScript-namnträdsåtgärder, som returnerar åtgärdsnamn och skript via JavaScriptAction och JavaScriptActions
- Lade till TPdf.FileIdentifier för att läsa permanenta och föränderliga trailer-ID:n som binära TBytes utan PDFiums termineringsbyte
- Lade till TPdf.PageBox, GetPageBox och SetPageBox för MediaBox, CropBox, BleedBox, TrimBox och ArtBox på den aktuella sidan
- Bekräftade att de aktuella medföljande PDFium-DLL:erna vid körning lämnar endast Skias renderingsingångspunkter otillgängliga, eftersom dessa exporter saknas
- Utökade regressionssviterna för Delphi, C++Builder och Lazarus till 64 fall vardera, med täckning av dokument-JavaScript, trailer-ID och page box
Version 1.6.6
- Lade till körtidsstöd för den medföljande V8-aktiverade PDFium-DLL:en. Sätter man EnableV8Engine före inläsning väljs nu pdfium.v8.dll från träden DLLs\Win32 eller DLLs\Win64, och V8/XFA-specifika bindningar exponeras när den laddade DLL:en tillhandahåller dem
- Lade till V8FeaturesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags samt valfria bindningar på låg nivå för FPDF_BStr_*, FPDF_GetRecommendedV8Flags och FPDF_GetArrayBufferAllocatorSharedInstance
- Gjorde FPDFText_SetPositions valfri, så att PDFium Delphi Component fortsätter läsa in även med PDFium-DLL:er som inte exporterar den experimentella sättaren för textpositioner
- Utökade regressionssviterna för Delphi, C++Builder och Lazarus till 61 fall vardera, med kapacitetstäckning för standard-DLL och V8-DLL