PDFiumPas udgivelsesnoter
Versionshistorik for PDFiumPas' brugervendte funktioner, rettelser, forbedringer af fremviseren, dokumentgenerering, PDF/A-output, rendering og dokumentationsopdateringer
Sidste udgivelse
- Sidste version: 2.57.0; Udgivelsesdato:
Version 2.57.0
Tilføjet (Added)
TPdfThumbnailView.Orientationunderstøtter vertikale og horisontale miniaturelayout, mens den eksisterende vertikale standard bevaresFirstVisiblePageIndex,LastVisiblePageIndexogEnsureCurrentPageVisibleeksponerer og styrer miniaturevisningen med et-baserede sideindekser
Ændret (Changed)
- Ændring af
CurrentPageIndexruller nu den valgte miniature ind i visningen i begge orienteringer - Delphi-, Lazarus- og C++Builder-test dækker nu orienteringsstandarder, skift, synlige intervaller og valgt-side-synlighed
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.57.0
Version 2.56.2
Ændret (Changed)
HighlightSearchText,AddSearchTextHighlightogClearHighlightinvaliderer nu kun de rektangler for søgeområder, der blev tilføjet eller fjernet, i stedet for at gentegne hele fremviseren- Erstatning af fremhævninger med de samme match eller tilføjelse af dublet-match planlægger ikke længere en unødvendig gentegning
- Delphi-, Lazarus- og C++Builder-test dækker nu afgrænset invalidation, idempotente opdateringer, rydning og sikkerhed ved inaktiv visning
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.56.2
Version 2.56.1
Ændret (Changed)
TPdfThumbnailViewgenbruger nu renderede bitmaps for sider, der forbliver synlige på tværs af gentegninger og tilstødende rullepositioner- Cachen bevarer kun det aktuelle synlige sideområde og frigiver poster præcist, når sider forlader dette område, det tildelte dokument ændres, eller miniaturedimensioner ændres
- Delphi-, Lazarus- og C++Builder-test dækker nu genbrug af cache, beskæring af viewport, størrelsesinvalidation, dokumentudskiftning og komponentødelæggelse
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.56.1
Version 2.56.0
Tilføjet (Added)
TPdfView.CutSelectedFormTextToClipboardogTPdfView.PasteFormTextFromClipboardtilbyder Unicode-udklipsholderredigering for den fokuserede redigerbare form-widget
Ændret (Changed)
- Fokuserede form-redigerere håndterer nu standard copy-, cut-, paste- og select-all-tastaturgenveje, før tekstinput videresendes til PDFium
- Cut og paste afviser skrivebeskyttede felter og sessioner uden form-udfyldnings- eller ændringstilladelse, mens cut kopierer med succes før fjernelse af valgt tekst
- Delphi-, Lazarus- og C++Builder-test dækker nu ingen-fokus, retur-genvejs- og skrivebeskyttet-afvisningsadfærd
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.56.0
Version 2.55.0
Tilføjet (Added)
TPdfView.AddSearchTextHighlighttilføjer unikke match for endnu en søgeterm til det aktuelle sideoverlay, hvilket tillader flere forespørgsler at forblive fremhævet sammen
Ændret (Changed)
HighlightSearchTextforbliver erstatningsindgangspunktet og deler nu den additive scanner, mens duplikerende tegnområder ignoreres ogClearHighlightfjerner det komplette akkumulerede sæt- Delphi-, Lazarus- og C++Builder-test dækker nu akkumulering af forskellige forespørgsler og undertrykkelse af duplikerende områder
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.55.0
Version 2.54.0
Tilføjet (Added)
TPdfeksponerer nu komplette sideobjekt-øjebliksbilleder, grupperede stilopdateringer, affine objekttransformeringer, stisegmenter, klippestier og Form XObject-børn- Tegningsinspektion omfatter nu fyld- og stregfarver, skrifttypenavn og -flag, løse glyf-grænser, effektive matricer, tekstobjekt-håndtag og tegn-til-tekst-indekskonvertering
- Annoteringer round-trip nu kantgeometri og normale, rollover- og down-udseende-strømme
- Nye rå og afkodede miniature-accessors, sideindholds- og annoteringstransformeringer samt
RenderPageWithMatrixtilbyder direkte avancerede renderings- og redigeringsstier
Ændret (Changed)
- Sideobjekt-stilændringer kan nu commit'es som én batch, så PDFium kun regenererer sideindhold én gang
- Matrix-rendering bruger den eksisterende zero-copy bitmap-sti, når destinationsbitmap-layoutet er kompatibelt
Version 2.53.1
Løst (Fixed)
- Den indbyggede kinesiske Copy-menu-caption bruger nu kodningsuafhængige Unicode-kodepunkter og vises korrekt i Lazarus-builds
- Ældre Delphi-toolchains kan kompilere
FPdfAsync, når deresWinapi.Windows-enhed udeladerGetTickCount64-erklæringen
Version 2.53.0
Tilføjet (Added)
- Ny
Tests.ApiCoverage-testfixture, der dækker offentlige TPdf-API'er, som tidligere havde nul end-to-end-testdækning:GetPageBox/SetPageBox(MediaBox/CropBox læse/skrive, manglende-boks-fejl og gem round-trip),FlattenPage/FlattenAllPages(returværdi og bevarelse af sideantal),GenerateFormAppearances(no-op på ikke-form-dokumenter),SaveAsEncrypted/SaveAsEncryptedToStream(AES-256 med adgangskode round-trip — verificerer at den krypterede fil nægter at åbne uden adgangskoden og åbner med den),DeletePage-grænsevalidering (side 0 og uden for intervallet rejserEPdfError) ogHasContents/HasAuthor-annotering-sentinel-værdierne introduceret i v2.38.0 (verificerer atDefault(TPdfAnnotation)lader dem væreFalse)
Version 2.52.0
Tilføjet (Added)
TPdfView.CopySelectedFormTextToClipboardkopierer tekstmarkeringen inde i den fokuserede AcroForm-widget til Windows-udklipsholderen somCF_UNICODETEXT
Ændret (Changed)
- Side-tekst- og fokuseret-form-kopieringsoperationer deler nu den samme defensive Unicode-udklipsholderskriver og lader udklipsholderen uændret, når deres markering er tom
- Delphi-, Lazarus- og C++Builder-test dækker nu inaktive eller ufokuserede form-kopieringskald og en fokuseret form-markerings round-trip gennem Windows-udklipsholderen
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.52.0
Version 2.51.0
Tilføjet (Added)
TPdfView.SelectLineAtvælger den visuelle tekstlinje, der indeholder en et-baseret side og et nul-baseret tegnindeks, uden at der kræves musinput
Ændret (Changed)
- Programmatisk linjevalg, trippel-klik-valg og
Shift+HomeellerShift+Enddeler nu én tegn-boks-linjegrænsesmodel - Delphi-, Lazarus- og C++Builder-test dækker nu stabilt linjevalg og ugyldige side- eller tegnindekser
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.51.0
Version 2.50.0
Tilføjet (Added)
TPdf.LoadDocumentaccepterer nu et nul-baseretIndex- ogCount-vindue ind i enTBytes-buffer, hvilket tillader indlejrede PDF'er at indlæse uden at allokere et midlertidigt byte-array-slice
Ændret (Changed)
- Byte-område-indlæsning afviser negative eller uden-for-område-vinduer, før dokumenttilstanden ændres, og bevarer de eksisterende bufferede og lånte-buffer-levetidsmuligheder
- Delphi-, Lazarus- og C++Builder-test dækker nu indlejrede PDF-vinduer og ugyldige byte-område-argumenter
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.50.0
Version 2.49.1
Tilføjet (Added)
TPdfView.FitModeunderstøtter nupfmFitHeighttil at tilpasse den aktuelle side til den synlige viewport-højde med horisontal rulning efter behov
Løst (Fixed)
- Tilpasningstilstande konvergerer nu efter at en rullelistændring ændrer klientområdet, hvilket holder fit-page-, fit-width- og fit-height-resultater konsistente mellem VCL og LCL
- Delphi-, Lazarus- og C++Builder-fremvisertest dækker nu
pfmFitHeight-valg og optællings-returture TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.49.1
Version 2.49.0
Tilføjet (Added)
- Den offentlige PDFium-bindingsflade dækker nu alle 470 eksporterede funktioner i de gennemgåede headers, herunder adgang til vedhæftningsbeskrivelser via
FPDFAttachment_SetDescriptionogFPDFAttachment_GetDescription TPdfeksponerer nu vedhæftningsbeskrivelser, krydsreference-gyldighed, trailer-slut-offsets, security-handler-revision, 64-bit hukommelsesindlæsning, signaturbyteområder, weblink-tekstområder og udvidede billeddata-, filter-, metadata- og ICC-profil-snapshots- Formularassistenter understøtter nu indbygget feltfokus, forespørgsler og opdateringer af fokuserede valgmuligheder, musehjuls-videresendelse, skrivbare blækstreger og formularoverlejringer efter progressiv rendering
Ændret (Changed)
FormFieldCount, formularfelt-indekser og tabulatorrækkefølge beskriver nu kun widget-annotationer i stedet for at inkludere urelaterede side-annotationer- Headless
TPdf-sider går nu ind i og forlader formular-udfyldning-sidelivscyklussen så indbygget fokus og fokuserede felt-API'er fungerer uden enTPdfView - Vedhæftningsbeskrivelses-eksporter er kapacitetsbegrænsede så programmer, der bruger en ældre PDFium-build, stadig kan indlæse biblioteket og opdage den utilgængelige funktion
Løst (Fixed)
- Progressiv siderendering tegner nu formular-kontrolelementer når formularudfyldning er aktiveret
- Delphi-, Lazarus- og C++Builder-test dækker nu den nye dokumentdiagnostik, vedhæftningsbeskrivelser, blækstier, formularadfærd, signaturbyteområder, weblinkområder og billedmetadata
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.49.0
Version 2.48.0
Tilføjet (Added)
TPdfMatrixeksponerer nu fabrikker, kloning og tildeling, endelig-tilstand- og invertibilitetsdiagnostik, tolerancebaseret sammenligning, translationsadgang, determinantrapportering og affin dekomponering- Prepend-komposition, pivot-bevidst rotation, skalering, skævvridning og spejlvendinger, plus stretch-, contain- og cover-rektangel-mapping understøtter lokalt-rum- og tilpasset-layout-arbejdsprocesser uden manuel koefficientaritmetik
- Ikke-muterende invers adgang, invers punkt-mapping, vektor- og firkant-transformationer, dynamiske punkt- og rektangel-batcher, in-place-varianter og enpas-transformerede grænser udvider den genanvendelige geometriflade
Ændret (Changed)
- Translation, skalering og akse-spejlvendinger opdaterer nu kun de berørte koefficienter i stedet for at rute gennem generel affin multiplikation
- Rektangeltransformation normaliserer sit input én gang, bruger en specialiseret eksakt akse-justeret sti hvor muligt og beregner generelle roterede grænser uden midlertidige punktposter
- Punkt- og rektangel-batchtransformationer allokerer ét resultat-array eller genbruger kalder-lagring, mens transformerede punktgrænser akkumuleres i ét pas uden et mellem-array
Løst (Fixed)
- Rektangel-mapping afviser nul-størrelse, ikke-endelige og
Single-overflydende resultater før offentliggørelse af en ubrugelig matrix - Delphi-, Lazarus- og C++Builder-test verificerer nu kompositionsrækkefølge, pivot-invarianter, inverse returture, tilpassede rektangler, dekomponering og masse-geometriadfærd
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.48.0
Version 2.47.0
Tilføjet (Added)
FPdfAsyncleverer nu strukturerede annulleringsårsager og -meddelelser, fjernbare tilbagekaldsregistreringer, timeout-baserede kilder, annulleringsventen og atomiske try-cancel-operationer gennem udvidede grænseflader, der bevarer den oprindelige APITPdfFuture<T>.RunExtilføjer konfigurerbar svar-afsendelse og worker-prioritet, mens resultat-konvolutter eksponerer operations-ID'er, værdigyldighed, undtagelsesklassenavne, fuldførelsestidstagning og genanvendelige fuldførelses-hjælpereTPdfAsyncExecutortilføjer en genanvendelig fast worker-pool med fire FIFO-prioritetsbaner, valgfri begrænset-kø-backpressure, annullerbare opgavehåndtag, timeout-bevidst venten, opgave-snapshots, aggregeret statistik og yndefuld nedlukning
Ændret (Changed)
- Gentagne asynkrone job kan genbruge worker-tråde og O(1)-kø-operationer i stedet for at oprette en tråd pr. opgave, mens synkroniseret fuldførelse forbliver tilgængelig for UI-værter
- Executor- og future-fejl bevarer undtagelsesklasse- og meddelelsesdiagnostik, annullering bevarer sin oprindelige årsag, og tilbagekaldsundtagelser forbliver isoleret fra worker-livscyklus og nedlukning
- Delphi-, Lazarus- og C++Builder-test dækker nu den udvidede annullerings-, future-metadata-, opgavekontrol-, backpressure-, prioriteringsordnet-, statistik-, fejl- og nedlukningsflade
Løst (Fixed)
- Samtidige annulleringsejere modtager nu et deterministisk første-skriver-resultat i stedet for at stole på en separat observations- og annulleringssekvens
- Hovedtråds-lediggangsventen behandler synkroniserede opgavesvar, hvilket forhindrer at en fuldført worker lader executoren blive permanent ikke-ledig under koordineret nedlukning
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.47.0
Version 2.46.0
Tilføjet (Added)
FPdfAsn1eksponerer nu identifikatorklasser, 64-bit højt-tag-nummer-kodning og -afkodning, parsede TLV-poster, nul-kopiering-barn-læser-vinduer, typede primitive afkodere og indholds- eller kodet-værdi-slices- DER-skrivere understøtter nu det fulde usignerede 64-bit INTEGER-interval, valideret vilkårligt INTEGER-indhold, ENUMERATED, automatisk UTCTime- eller GeneralizedTime-valg, application- og private-tags, multi-værdi-SEQUENCE og kanonisk sorteret SET OF-output
ValidateDerreturnerer offset-bevidste valideringsfejl mens den håndhæver konfigurerbare indlejring-, knudeantal-, indholdslængde-, fejlantal-, rod- og valgfri SET-sorteringsgrænser
Ændret (Changed)
- DER-sammenkædning og multi-værdi-komposition bruger én outputallokering, writer-buffere eksponerer reserve-, count-, capacity- og ejerskifs-operationer, og SET OF-sortering bruger nu
O(n log n)flettesortering - BOOLEAN-, INTEGER-, BIT STRING-, OBJECT IDENTIFIER-, NULL-, UTF8String-, PrintableString-, IA5String-, UTCTime- og GeneralizedTime-værdier modtager kanoniske form-tjek under kodning, typet afkodning eller validering
- Lazarus-runtime-pakken eksporterer nu
FPdfAsn1, og Delphi-, Lazarus- og C++Builder-test-suites øver den samme offentlige DER-flade
Løst (Fixed)
- Kontekstspecifikke tag-numre større end 30 afkortes ikke længere til de lave fem identifikator-bits
- Fejlagtige højt-tag-identifikatorer, ikke-minimale bestemte længder, ugyldig UTF-8, ikke-nul BIT STRING-padding, ugyldige tidsfelter, efterstillede rødder og ressourcegrænse-overtrædelser afvises deterministisk
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.46.0
Version 2.45.0
Tilføjet (Added)
FPdfPreflightReporttildeler nu Info-, Warning- eller Error-alvorlighed til hvert problem og eksponerer pr.-standard- og rapportniveau-alvorligheds-, status-, kategori-, problemkode-, opslags-, søge-, udfladnings- og filtrerings-API'er- Preflight-rapporter eksporterer nu SARIF 2.1.0, JUnit XML, NDJSON og oprindelig XML via matchende
To*- ogSave*ToFile-metoder til CI-, automations- og streaming-pipelines - Stabile SHA-256-rapport-fingeraftryk identificerer ækvivalente valideringsresultater uafhængigt af kildestier og genereringstidsstempler
Ændret (Changed)
- JSON-, CSV-, tekst-, Markdown- og HTML-rapporter inkluderer nu alvorlighed og udvidede status-sammendrag; HTML tilføjer tilgængelige tabeltekster og et statussammendrag
- Problem- og standard-samlingskonstruktion bruger geometrisk kapacitetsvækst, forespørgselsresultater er foruddimensioneret, JSON-escaping skriver til én begrænset output-buffer, og alle rapportfiler bruger én direkte UTF-8-writer
- Problem-kategori-sammendrag bruger deterministisk rækkefølge, tidsstempler inkluderer millisekunder, JSON bærer
formatVersion: 2, og CSV-celler neutraliserer regnearksformler
Løst (Fixed)
- JSON-eksport bevarer nu gyldige supplerende Unicode-par og erstatter isolerede UTF-16-surrogat-kodenheder i stedet for at udsende fejlbehæftede skalar-data
- HTML-eksport escaper nu apostroffer, og filtrerede rapportvisninger ejer uafhængige problem-arrays i stedet for at dele muterbar resultatlagring
TPdf.AboutInfo, Lazarus-pakke-metadata og installationsmetadata rapporterer nu ensartet Version 2.45.0
Version 2.44.0
Tilføjet (Added)
- Bogmærker og destinationer eksponerer åben tilstand, antal efterkommere, handlingsmål, destinationsvisningstilstande og op til fire visningsparametre
Metadata,GrantedPermissions,UserGrantedPermissions,HasPermissionogUserHasPermissiontilbyder typede dokumentinspektionssnapshots og rettighedsforespørgslerExtractThumbnail(PageNumber)renderer en anmodet side uden at ændre den aktive side, og RFC 3161-tidsstempelresultater eksponerer politik, genereringstidspunkt og nonce-detaljer
Ændret (Changed)
- Bogmærke-, JavaScript-, metadata-, destinations- og thumbnail-stier bruger validerede to-pass-buffere, geometrisk samlingsvækst og cyklussikker gennemløb
- Gem-postbehandling opløser den aktive katalog, sidetræ og åben handling gennem den nuværende xref-revision, cacher afkodede objektstreams og scanner PDF-ordbøger med leksikale grænser
- Delt PDF-parsing håndhæver nu nøjagtige objekthoveder, generationer, ordbogsnøgler, streamlængder, predictor-geometri, heltalsintervaller samt kommentar-, literal-streng- og heksadecimal-streng-grænser
- RFC 3161-svarvalidering binder nu både nonce og SHA-256-
messageImprint, kræver en strukturelt gyldig underskriver og anvender strenge DER-længde-, OID-, INTEGER- og GeneralizedTime-regler
Rettet (Fixed)
- Inkrementelle dokumenter vælger ikke længere inaktive duplikerede kataloger eller fejlbehæftede referencesuffikser, når en standard åben-handling tilføjes
- Tidsstempeltokens med long-form-DER-længder bevarer det komplette kodede token, mens fejlbehæftet CMS-valgfelt-rækkefølge og tomme underskridersæt afvises
- Rene Delphi-builds skriver nu PAdES-nonce-seed-felter gennem aligning-sikre bytekopier og videregiver XFA-svarbytes med den nøjagtige native pegeertype
Version 2.43.0
Tilføjet (Added)
- XFDF-felt- og annotationsposter eksponerer nu tilstedeværelsesflag, der skelner mellem en udeladt XML-værdi og en eksplicit tom værdi
Ændret (Changed)
- XFDF-import accepterer navnerums-præfikserede elementer og attributter, blandet tekst- og CDATA-indhold, entitetsreferencer og mellemrumssignifikante værdier, mens ugyldige Unicode-skalarreferencer afvises
- XFDF-import og -eksport bruger indekseret feltmatchning og afgrænsede geometriske buffere, hvilket forbedrer gennemløb og spidsallokeringsadfærd for dybt indlejrede formularer, store annotationssamlinger, ink-lister, hjørner og markup-firkant-områder
- PDF/A- og PDF/UA-validering bruger afgrænset vækst for store side-, stream-, strukturnavn- og RoleMap-samlinger; PDF/UA-RoleMap-opløsning følger nu direkte arrays og eksakte indirekte navne- eller array-objekter
Rettet (Fixed)
- XFDF-roundtrips bevarer nu dybt indlejrede feltstier, eksplicitte tomme feltværdier, eksplicit tomt annotationsindhold og forskellen mellem manglende og tomt indhold
- Ugyldige indlæsninger af hukommelsesbuffere og sidetildelinger uden for området afvises uden at efterlade delvis dokument- eller sidestatus, og en mislykket native sidegenindlæsning bevarer den tidligere aktive side
- Store marked-content-identifikatorer og signatur-metadatabuffere afgrænses og valideres før allokering eller native adgang
Version 2.42.0
Tilføjet (Added)
TPdfMatrixtilbyder nuInvert,TryInvert,TransformPointogTransformRecttil koordinatafbildning, hit-testing, normaliserede grænser og eksplicit singular-matrix-håndteringTPdf.WrapTexthar fået enBreakLongWords-overload, der opdeler CJK- og anden tekst uden mellemrum, mens gyldige UTF-16-surrogatpar holdes sammenTPdfAnnotation.AttachmentPointSetseksponerer enhver firkant i flerlinjede markup-annotationer, mens det eksisterendeAttachmentPoints-felt forbliver et alias for det første sæt
Ændret (Changed)
- Tekstudtrækning, opbygning af læsbart indhold, ordopslag og spoken-text-offset-kortlægning bruger nu afgrænset allokering og binære opslagsstier, hvilket reducerer gentagne allokeringer og lineære scanninger på store sider
- ASN.1-serialisering og krypteret PDF-generering bruger nu geometriske outputbuffere; sortering af krypterede objekter bruger
O(n log n)-sortering, og xref-rækker skrives direkte til den endelige buffer WrapTextbevarer CR-, LF- og CRLF-linjegrænser og genbruger ét native målingsobjekt til hele operationen- XFDF-import og -eksport bevarer enhver markup-firkant; import anvender også RGB-/interne farver og analyserer decimal-koordinater uafhængigt af processens locale
Rettet (Fixed)
- Legacy-kaldere kan igen opdatere annotationsindhold og forfatter ved at tildele ikke-tomme strenge uden at indstille de nyere
HasContents- ogHasAuthor-sentineler - Eksplicit tomme annotationsstrenge bruger nu en gyldig nul-termineret native buffer, så sletning af
/Contents,/Tog andre valgfrie tekstnøgler ikke længere sender en nil-pointer til PDFium
Version 2.41.0
Ændret (Changed)
- Preflight-rapporten
SaveJsonToFile,SaveMarkdownToFileogSaveTextToFileskriver nu UTF-8 på Delphi (svarende til den eksisterendeSaveHtmlToFile) i stedet for systemets ANSI-tegntabel; tegn uden for ASCII-området i filstier, anbefalinger og omfangsbemærkninger blev forvrænget på Delphi, når de blev gemt via disse metoder SaveCsvToFileskriver nu UTF-8 med et BOM-præfiks, så Excel til Windows automatisk registrerer kodningen; uden BOM behandler Excel en UTF-8 CSV som tegntabel 1252 og forvrænger eventuelle tegn uden for ASCII-området
Rettet (Fixed)
ExtractImages-demoen lækkede de cachelagredeTBitmap-objekter iFExtractedImages, når formularen blev lukket uden først at rydde dem eksplicit; formularen tilsidesætter nuDestroyfor at kaldeClearExtractedImages, hvilket frigiver alle cachelagrede bitmaps
Version 2.40.0
Ændret (Changed)
TPdf.RenderPage(HDC, ...)maskerer nu FPU/SSE-undtagelser omkringFPDF_RenderPage-kaldet, hvilket matcherTPdfView.RenderPage(HDC)(rettet i v2.25.0) og alle bitmap-returnerende renderingspunkter; den direkte-til-DC-overload påTPdf-niveau efterlod tidligere FPU-undtagelser umaskeret på compilere før D12
Rettet (Fixed)
ColorToARGBreturnerer nu en fuldt gennemsigtig pixel (alfa 0) forclNoneogclDefaulti stedet for at behandle sentinel-værdien som en bogstavelig RGB-farve; den tidligere adfærd gav en mørk, næsten uigennemsigtig udfyldning, når en kalder angivclNoneog forventede “ingen farve”
Version 2.39.1
Rettet (Fixed)
- Eksplicitte PDF 1.3-gemninger fjerner nu posterne
/SMask /None,/AIS falseog/TK true, som kun gentager den oprindelige grafikstatus, mens de fortsætter med at afvise ikke-standardiserede gennemsigtighedsstatusser
Version 2.39.0
Ændret (Changed)
CreatePDFogImageToPDFbruger nu bekræftede gemme-destinationer og rapporterer succes, nårSaveAser fuldførtBatchExport,PDFtoJpgogSplitPDFallokerer nu unikke outputmapper, så gentagne kørsler og input med samme navn bevarer tidligere resultaterSplitViewomslutter nu søgningen én gang uden at efterlade skjult sidestatus efter annullering eller manglende match, og afbryder ufuldstændige udskriftsjob i stedet for at sende delvist output
Rettet (Fixed)
MergePDFafviser nu fejlformaterede sidetalstokens og kildeoverskrivende outputstier, tæller de faktisk importerede sider og nægter at gemme et tomt resultat- Delphi- og C++Builder-
Attachment-demoerne gemmer nu på samme sti via en rollback-sikker filudskiftning, så et mislykket omdøb ikke kan fjerne den originale PDF
Version 2.38.0
Ændret (Changed)
SetAnnotationDatabeskytter nu skrivning af/Contentsog/AuthorbagHasContents/HasAuthor-sentinels påTPdfAnnotation, hvilket matcher det eksisterendeHasName/HasSubject/HasIcon-mønster; tidligere blev disse to felter skrevet betingelsesløst, så tildeling af enDefault(TPdfAnnotation)-record for kun at opdatere farve eller flag stiltiende overskrev annotationens eksisterende indhold og forfatter med tomme strenge;GetPageAnnotationsætter nu disse sentinels, så en læs-rediger-skriv-cyklus bevarer de oprindelige værdier
Rettet (Fixed)
GenerateFormAppearanceslæser nu værdien af afkrydsningsfeltet/radioknappen viaFPDFAnnot_GetFormFieldValue(som navigerer to overordnet feltordbog i henhold til ISO 32000-1 §12.7.5) i stedet forFPDFAnnot_GetStringValue(Annot, 'V', ...)(som læser widget-ordbogen); widgetten indeholder normalt ikke/V, så/ASblev aldrig synkroniseret med den markerede tilstand, og et fladgjort afkrydsningsfelt/radioknap blev vist som ikke-markeret
Version 2.37.0
Ændret (Changed)
ParseTsaUrlbegrænser nu porten til1..65535efter parsing; en for stor portværdi ville ellers blive afkortet viaDWORD-truncering og kunne ende på en gyldig port- XFDF
ParseFieldaccepterer nu en dybdeparameter (standard 0, begrænset til 64) og returnerer et tomt felt ved grænsen, så en ondsindet indlejret<field>-kæde med en dybde på 100.000 ikke længere kan forårsage stakoverløb
Rettet (Fixed)
- TSA HTTP-anmodning beskytter nu mod en tom anmodningskrop før overførsel af
@ReqDer[0]tilWinHttpSendRequest; en dereferering af et dynamisk array med længden nul ville tilgå en ugyldig pointer;BuildTimeStampReqreturnerer altid en ikke-tom SEQUENCE, men kaldestedet beskytter nu kontrakten
Bemærkninger (Notes)
FPdfTsaWin-headerkommentaren om HTTPS-tilbagekaldelseskontrol er blevet rettet: WinHttp validerer servercertifikatkæden som standard, men udfører ikke CRL/OCSP-tilbagekaldelseskontrol, medmindre det udtrykkeligt er aktiveret viaWinHttpSetOption; den tidligere formulering påstod, at tilbagekaldelseskontrol “er inkluderet uden beregning”, hvilket var misvisende
Version 2.36.0
Ændret (Changed)
- TSA HTTP-anmodninger sender nu en eksplicit
Content-Length-header ud overContent-Type- ogAccept-headere; WinHttp danner den ud fra den samlede længde, men nogle RFC 3161-proxyer kræver en eksplicit header og afviser anmodningen med411 Length Requireduden den - XFDF-eksport dropper nu C0-styretegn (bortset fra TAB/LF/CR, som allerede er undviget) i stedet for at udsende en ugyldig backslash-hex-sekvens; den tidligere
\-01F-undvigelse var ikke gyldig XML (backslash har ingen speciel betydning i XML), så enhver kompatibel læser ville have afvist dokumentet som fejlbehæftet InjectAssociatedFilesskriver nu/Subtypei EmbeddedFile-strømordbogen, når kalderen levererTAssociateFile.MIMEType; feltet var erklæret og dokumenteret, men injektoren hårdkodede tidligere/Type /EmbeddedFileog ignorerede det (ISO 32000-2 §7.11.4 tillader/Subtypepå strømmen)
Rettet (Fixed)
- XFDF-import sprang det første indholdsbyte over efter en UTF-8 BOM og det første byte, når der ikke var nogen BOM:
BytesToAnsi(Bytes, 4, ...)(BOM) ogBytesToAnsi(Bytes, 1, ...)(uden BOM) brugte start-offsets, der var forskudt med én, fordiBytesToAnsitager et 0-baseret array-indeks; kaldene bruger nu3og0 ExtractSignatureValuehavde to indrykningsfejl med dinglendeif, hvorR.Position:= CNkørte betingelsesløst for de valgfriecertificates [0]- ogsignedAttrs [0]-forgreninger; forgreningerne are nu omsluttet afbegin/end, så positionen kun rykkes frem, når den valgfrie TLV faktisk blev læst (samme type fejl blev rettet iAddSignatureTimestampToCmsi v2.22.0)
Version 2.35.0
Ændret (Changed)
TFPDFAvail_IsDocAvail,TFPDFAvail_IsPageAvailogTFPDFAvail_IsFormAvailtager nuhints: PFX_DOWNLOADHINTSi stedet forvar hints: FX_DOWNLOADHINTS, så den dokumenteredenullptrkun-forespørgsel-tilstand (kontroller nuværende tilgængelighed uden at anmode om flere data) kan nås fra Delphi; PDFium-headeren tillader udtrykkeligt, athintser null; den tidligerevar-binding gjorde dette umuligtTFPDF_SetSystemFontInfotager nupFontInfo: PFPDF_SYSFONTINFOi stedet forvar pFontInfo: FPDF_SYSFONTINFO, så kaldere kan sendenilfor at bede PDFium om at stoppe med at bruge en tidligere registreret systemskrifttypegrænseflade (den dokumenterede deaktiveringssti)TPdfThumbnailView.Paintberegner nuVisibleRowsmed samme formel somUpdateScrollBarRange(ClientHeight div RowHeight), så antallet af tegnede rækker matcher rullepanelets sidestørrelse; den tidligere formel kun til tegning ((ClientHeight - FMarginY) div RowHeight + 1) kunne afvige med én række ved grænsehøjder, hvilket spildte en rendering på en række uden for siden eller klippede den sidste synlige række
Version 2.34.0
Tilføjet (Added)
TPdf.SaveAsEncrypted/SaveAsEncryptedToStream— højniveaus-API, der gemmer dokumentet og derefter krypterer det med PDF 2.0 AES-256-CBC (V=5/R=5/R=6); tager enTPdfEncryptOptionsmed bruger-/ejeradgangskode, tilladelser og revision; delegerer tilEncryptDocumentBytes- StrF-kryptering af bogstavelige strenge:
EncryptDocumentByteskrypterer nu bogstavelige strenge(...)i ikke-strøm-objekter (Info-ordbog osv.) til AES-256-CBC hex-strenge, hvilket matcher formatet for strømkryptering (16-byte IV + PKCS7-ciphertekst); hex-strenge<...>efterlades uændret
Version 2.33.0
Tilføjet (Added)
- Fuld-dokument AES-256-CBC krypteringsinjektor i
FPdfEncrypt.pas;EncryptDocumentBytestager en klartekst-PDF og en adgangskode, krypterer ethvert indirekte strømobjekt (16-byte IV + AES-256-CBC PKCS7 under filnøglen), retter/Length, tilføjer/Encrypt-ordbogsobjektet og genopbygger en komplet klassisk krydsreferencetabel + trailer med/Encryptog/ID; fuldender PDF 2.0-krypteringsstakken (AES-blok + GCM + SHA-512/384 + R6-nøgleudledning + ordbog + dokumentskanning) EncryptStreamPayload-hjælper — PDF 2.0 AES-256-strømformatet (IV foranstillet AES-CBC-PKCS7-ciphertekst), som kan genbruges af kaldere, der administrerer deres eget objektlayout
Version 2.32.0
Tilføjet (Added)
- SHA-512 / SHA-384-hash (FIPS 180-4) i den nye
FPdfSha512.pas-unit; Pure-Pascal, overført fra HotPDF; påkrævet af PDF 2.0 R6 adgangskode-hash-iterationen, som forgrener sig på en 128-bit mod-3-værdi for at vælge SHA-256/384/512 i hver runde; bekræftet med kendte svar ifølge FIPS-180-4 B.1 - PDF 2.0-krypteringsnøgleudledning og Encrypt-ordbogsbygger i den nye
FPdfEncrypt.pas-unit; implementerer ISO 32000-2 §7.6.4.3-algoritme 2.B (R6-hash-dans: AES-128-CBC + iterativt SHA-256/384/512-valg), udleder den 32-byte filkrypteringsnøgle samt posterne/O,/U,/OE,/UE,/Permsog bygger V=5/R=5/R=6 Encrypt-ordbogen med/CFM /AESV3; overført fra PDFlibPas, tilpasset til TBytes-stil
Version 2.31.0
Tilføjet (Added)
- AES-blokkrypteringsprimitiver (FIPS 197) i den nye
FPdfAes.pas-unit; Pure-Pascal AES-128- og AES-256-blokkryptering plus CBC-tilstandshjælpere og en CSPRNG-backend, overført fra HotPDF; test med kendte svar i FIPS-197 Appendix C.2 / C.3 bekræfter korrektheden; dette er det kryptografiske fundament for PDF 2.0-krypteringsstakken - AES-GCM godkendt kryptering (NIST SP 800-38D) i den nye
FPdfAesGcm.pas-unit; implementerer GHASH (GF(2^128)-multiplikation), GCTR og GCM AEAD-konstruktionen oven på AES-blokprimitiverne; NIST GCM-testtilfælde 1 og 3 (AES-128) matcher den autoritative ciphertekst og tag nøjagtigt; testtilfælde 13 (AES-256) kører fejlfrit begge veje; GCM er ISO/TS 32003-tilstanden for PDF 2.0 - Integritetsvalidering af PDF/A Level A ParentTree og ClassMap (ISO 19005-1 §6.8.3);
pvaiParentTreeMissingflager en StructTreeRoot uden /ParentTree-nummertræet;pvaiClassMapUnresolvedflager en /C-klasse-reference uden et /ClassMap
Version 2.30.0
Tilføjet (Added)
- Injektion af associerede filer (
InjectAssociateFiles/TPdf.SaveAsWithAssociateFiles, ISO 32000-2 §7.11.4); den nyeFPdfAssocFiles-unit tilknytter/AF-arrays af filspecifikationsreferencer til kataloget eller enhver sideordbog, hvilket dækker alle otte ISO 32000-2 Table 45/AFRelationship-værdier; genbruger det mønster for trinvis opdatering, der blev afprøvet afInjectPadesDssMarkers - Understøttelse af PDF/X-6 (ISO 15930-9:2020);
TPdfXConformancetilføjerpxc6; injektoren og validatoren fører det igennem identifikation afpdfxid:GTS_PDFXVersion; PDF/X-6 is den PDF 2.0-baserede efterfølger til PDF/X-4 til komplet udveksling - PDF/A forbyder
/Thread-handlingen (ISO 19005-1 §6.6.1 whitelist-hul); listen over forbudte handlinger dækker nu Thread sammen med Launch, ResetForm, ImportData, SetOCGState, SetState, GoTo3DView, Rendition og Hide
Rettet (Fixed)
- PDF/A-4e-valideringsstien overholder nu de samme kontroller af tagget struktur, MarkInfo og orddeling som Level A; v2.29.0-gemmenedgraderingen dækkede
PdfAIsLevelE, men treValidatePdfACompliance-porte kontrollerede udelukkendePdfAIsLevelA, så et PDF/A-4e-dokument, der manglede tagget struktur, slap stiltiende igennem - OCG
/BaseStatetestafvigelse: v2.28.0 PostProcess-kørslen udvidede korrekt accepten til/ONeller/OFF(ISO 32000-1 Table 8.70), men Delphi- og C++-testene forventede stadig, at/OFFblev afvist; testene bruger nu en helt ugyldig værdi (/Undefined), og en ny positiv test låser accepten af/OFF - Geospatiel
/Subtype /GEOovermatching:ContainsDictionarySubtype('GEO')matchede enhver ordbog, der bar tokenet, inklusive urelaterede som en tilfældig/ViewerPreferences << /Subtype /GEO >>; den nyeContainsMeasureDictionarySubtypekræver desuden/Type /Measureeller en Measure-eksklusiv søskendenøgle, så ordbøger, der ikke er Measure, ikke længere udløser ADBE ExtensionLevel 3-kravet
Version 2.29.0
Tilføjet (Added)
- Understøttelse af PDF/A-4 (ISO 19005-4:2020) på tværs af validator, XMP-injektor og Pdfium-objektmodellaget;
TPdfAConformancetilføjerpac4base,pac4fogpac4e; basisniveauet er PDF 2.0 (ISO 32000-2) og erstatter de ældre A/B/U-niveauer med basis + F (formular) + E (tilgængelighed);ValidatePdfAlæser enpdfaid:part=4XMP-pakke (basis udelader overensstemmelseselementet),SaveAsPdfAudsender den, ogSignPadesWithPdfAacceptererpac4basesom en langsigtet arkivcontainer - Binding af
FPDFBookmark_GetColor— den sidste ubundne PDFium offentlige eksport (469/469);TBookmarkfårHasColor- ogColor-felter udfyldt fra bogmærkets/C-array (ISO 32000-1 §12.3.3); bindingen bruger tolerant indlæsning, så ældre DLLs, der ligger forud for eksporten, fortsat fungerer - PDF/E-1 (ISO 24517-1 §5) headerversionskontrol
pveiBadPdfVersion— PDF/E-1 er baseret på PDF 1.6, og en ikke-1.6 header flages nu - PDF/R-1 (ISO 23504-1)
pvriEncryptVersionMismatch— kryptering er kun tilladt på en%PDF-2.0-header; en 1.x krop, der indeholder/Encrypt, flages nu (tidligere en no-op erklæring) - PDF/R-1
pvriBadMediaBox— hver sidesMediaBoxskal være[0 0 w h];PdfRHasNonZeroMediaBoxOriginis en sproguafhængig ASCII-scanner, som springer MediaBoxes med indirekte referencer over - PDF/A Level A
pvaiRoleMapUnresolved(ISO 19005-1 §6.8.3.4) — et tilstedeværende, men ufuldstændigt RoleMap, der efterlader brugerdefinerede/S-strukturtyper uafbildede, flages nu, hvilket lukker hullet fra den eksisterendepvaiRoleMapMissing-kontrol, der kun tjekkede for tilstedeværelse
Rettet (Fixed)
PdfVersionToName(20)returnerede"1.0"i stedet for"2.0", hvilket korrumperede katalogets/Version-post og validatorbeskeder for enhver PDF 2.0-gemning; formateringen opdeler nu eksplicit major.minor for versionskoder>= 20FPdfAsn1.pasnegativ-INTEGER-koderen kunne ikke kompilere under Delphi 12 (E2015påInteger(-(V<0))), hvilket blokerede hele testprojektet; rettet ved at brugeInt64(-Ord(V<0))til fortegnsudvidelsesmasken- Listen over forbudte annotationer i PDF/A inkluderer nu
/RichMediapå tværs af alle dele (blev tidligere overset; ISO 32000-1 §12.5.6.35 forbyder det i PDF/A)
Version 2.28.0
Tilføjet (Added)
TPdfVersioninkluderer nupv20for PDF 2.0 (ISO 32000-2);DecodePdfVersion(20)returnererpv20i stedet forpvUnknown, ogEncodePdfVersion(pv20)udsender 20, så en PDF 2.0-dokuments version ikke længere går tabt ved genindlæsning og kan skrives eksplicit
Ændret (Changed)
DecodeDateparser nu PDF-datostrenge med valgfrie efterfølgende felter i henhold til PDF Reference 3.8.3, i stedet for at kræve den fulde 23-tegns formD:YYYYMMDDHHmmSSOHH'mm'; kompatible afkortede datoer såsomD:20260712,D:20260712153000ogD:20260712153000Zaccepteres nu; tidligere blev de afvist af en hårdLength=23-kontrol; tidszone-timeskift valideres nu i forhold til det virkelige område UTC-12..UTC+14 i stedet for> 23FPdfMeasure.MeasureTextkoder nu skrifttypenavnet som FPCAnsiString/ DelphiUTF8Encode, hvilket matcher bibliotekets andre FPDF_BYTESTRING-kaldesteder, i stedet for en renAnsiString-typekonvertering, der forvrængede ikke-ASCII-familienavne gennem den aktuelle tegntabel
Rettet (Fixed)
TDerWriter.Integer-vejen til negative værdier gik ned eller dannede fejlbehæftet DER: løkkenwhile V <> -1 do V := V shr 8efterlodInnertom forValue = -1(områdefejl på den efterfølgendeInner[Length(Inner)-1]) og overproducerede bytes for andre negative værdier; koderen udtrækker nu to-komplement-bytes med fortegnsudvidende skift og stopper korrekt, når resten er ren fortegnsudvidelse; CMS/PAdES INTEGER-felter er positive, så dette påvirker kun kaldere, der sender negative værdier, men vejen er nu korrektTPdf.GetCharacterOriginogTPdfView.GetCharacterOriginignorerede returværdien forFPDFText_GetCharOriginog returnerede et ikke-initialiseret punkt ved fejl; resultatet is nu nul-initialiseret, og en mislykket læsning returnerer udgangspunktet (hvilket matcher kontrakten forGetCharacterRectangle)
Version 2.27.0
Ændret (Changed)
- Delphi, C++Builder og Lazarus
PDFViewer- ogMultiPageViewer-demoer håndterer nu dokumentsøgning,Enter/F3til næste resultat ogEsctil annullering - Udskrivning følger fremviserens rotation og vælger stående eller liggende papir
ViewerInteractionLab-demoerne understøtterCtrl+A,Ctrl+C,Enter,F3ogEsc
Rettet (Fixed)
- Annullering af C++Builder- og Lazarus-udskrivning afbryder nu printerjobbet
- Delphi
MultiPageViewerCancel-knappen er forbundet, og søgefelter bevarer native tastaturredigering
Version 2.26.0
Ændret (Changed)
TPdf.GetObjectBitmap,TPdf.GetBitmap,TPdf.GetThumbnailogTPdfView-modstykker bruger nu render lock omkringFPDFImageObj_GetBitmap/FPDFPage_GetThumbnailAsBitmapTPdf.RenderPageThumbnailrespekterer/Rotatefor/Rotate 90og270
Rettet (Fixed)
TPdfView.GetCharacterRectanglereturnererRect(0,0,0,0)ved mislykketGetCharBoxGetLinkAnnotationsbruger nu bufferlængdensize-1
Version 2.25.0
Ændret (Changed)
TPdf.AddText,SetText,AddPathogInsertFormObjectFromXObjectugyldiggør nu cachelagret tekst og links før regenereringTPdfView.RenderPage(HDC, ...)bruger render lock og maskerer FPU/SSE-undtagelser omkringFPDF_RenderPage- Delphi
PrintPDFkalderPrinter.Abortved annullering
Rettet (Fixed)
- Kodepunkter over U+FFFF returnerer nu U+FFFD; brug
GetTextfor fuld UTF-16 - Negative resultater fra
GetWebLinksbegrænses til nul TPdf.DestroysletterPasswordviaUniqueString+FillChar
Version 2.24.0
Tilføjet (Added)
TPdf.DeletePage,GetAttachment,GetAttachmentName,GetAttachmentType,SetAttachmentogDeleteAttachmentvaliderer nu indeks og rejserEPdfErroruden for området
Rettet (Fixed)
- Leaks af
FPDF_PAGEOBJECTved fejl i tekst- og billedfunktioner er rettet TPdf.UnloadPagedestruerer nu forladteFPath-handlesTPdf.InsertFormObjectFromXObjectkalderUpdatePage(FPDFPage_GenerateContent) efter indsættelse
Version 2.23.0
Rettet (Fixed)
/BaseState-validering accepterer nu/OFFud over/ONifølge ISO 32000-1 Table 8.70/Intent-validering accepterer/Designog arrays som[/View /Design]- Geospatial Measure-detektion kræver ikke længere
/Type /Measureved PDF 1.7/Extensions /ADBEExtensionLevel 3 og matcher kun/Subtype /GEO
Version 2.22.0
Ændret (Changed)
TPdfViewfit-zoom bruger nuClientWidth/ClientHeighti stedet forWidth/HeightAddSignatureTimestampToCmsrejser en eksplicitExceptionfor et ulæseligt CMS SignerInfo-felt og retter blokkenbegin/endomkringsignedAttrs [0]
Rettet (Fixed)
- CNG-nøglen i
ResolveWinSignerfrigives viaNCryptFreeObjectved fejl EcDsaP1363ToDerafviser nul-halvdelerellersi stedet forINTEGER 0
Version 2.21.12
Rettet (Fixed)
- Eksplicitte PDF 1.5 til PDF 1.7-gem afviser nu fejlformaterede katalog-
/OCProperties-strukturer, inklusive manglende påkrævede/OCGs- eller/D-poster, ugyldige standardkonfigurationsværdier og ikke-array-tilstandsposter
Version 2.21.11
Rettet (Fixed)
- Eksplicitte PDF-version-gem afviser nu direkte eller indirekte side-
/Annots-poster, hvis annotationsordbøger udelader den påkrævede/Subtype- eller/Rect-post
Version 2.21.10
Rettet (Fixed)
- Eksplicitte PDF 1.7-gem kræver nu, at geospatiale
/Type /Measure /Subtype /GEO-ordbøger og Projection-annotationer erklærer/Extensions /ADBEmed/BaseVersion /1.7og/ExtensionLevel 3eller nyere
Version 2.21.9
Rettet (Fixed)
- Eksplicitte PDF 1.7-gem kræver nu, at RichMedia-annotationer og
RichMediaExecute-handlinger erklærer/Extensions /ADBEmed/BaseVersion /1.7og/ExtensionLevel 3eller nyere
Version 2.21.8
Rettet (Fixed)
- Eksplicitte PDF 1.7-gem kræver nu, at PRC 3D-streams erklærer
/Extensions /ADBEmed/BaseVersion /1.7og/ExtensionLevel 1eller nyere, i stedet for at behandle PRC som en kerne PDF 1.7-funktion
Version 2.21.7
Rettet (Fixed)
- Eksplicitte PDF 1.4 og ældre gem afviser nu billede-XObject
/SMaskInData-poster, inklusive en eksplicit værdi på0, fordi indlejrede JPEG 2000-bløde maskekanaler kræver PDF 1.5 eller nyere
Version 2.21.6
Rettet (Fixed)
- Eksplicitte PDF 1.4 og ældre gem afviser nu 16-bit billede-XObjects, der kræver PDF 1.5 eller nyere, mens PDF 1.5 til PDF 1.7-mål bevarer deres
/BitsPerComponent 16billeddata
Version 2.21.5
Rettet (Fixed)
- Eksplicitte PDF 1.4 og ældre gem afviser nu dokumentkatalog-
/PageLayout /TwoPageLeftog/TwoPageRight-værdier, der kræver PDF 1.5 eller nyere, mens PDF 1.5 til PDF 1.7-mål bevarer det ønskede tositers layout
Version 2.21.4
Rettet (Fixed)
- Eksplicitte PDF 1.3-gem afviser nu dokumentkatalog
/Lang-poster, der kræver PDF 1.4 eller nyere, mens PDF 1.4 til PDF 1.7-mål bevarer sprogidentifikatoren
Version 2.21.3
Rettet (Fixed)
- Eksplicitte PDF 1.3-gem afviser nu dokumentets
/EmbeddedFiles-navnetræer, der kræver PDF 1.4 eller nyere, uden at afvise indlejrede filstrømme refereret via ældre filspecifikationer
Version 2.21.2
Rettet (Fixed)
- Seneste version: 2.21.2; Udgivelsesdato:
Version 2.21.1
Rettet (Fixed)
- Hybrid-referenceverificering anvender nu supplerende
/XRefStm-poster før klassiske xref-pladsholdere fra samme revision, så komprimerede annoteringer og andre versionsbegrænsede objekter ikke længere overses, når kompatibilitetstabellen markerer dem som frie
Version 2.21.0
Ændret (Changed)
- Alle Delphi-, C++Builder- og Lazarus-visningseksempler kan nu åbne en PDF, der gives som første kommandolinjeargument, og C++Builder- og Lazarus-
MultiPageViewer-eksemplerne giver eksplicitte genveje til vælg-alle og kopiér
Rettet (Fixed)
- Seneste version: 2.21.3; Udgivelsesdato:
Version 2.20.0
Ændret (Changed)
- Alle Delphi-, C++Builder- og Lazarus-visningseksempler giver nu konsistente genveje til åbning, søgning, gemning, udskrivning, zoom og sidenavigation, mens alle
ViewerInteractionLab-varianter også understøtter sideskift, valideret 10–60 % manuel zoom, vedvarende interaktionslogger og klik-koordinat-rundturkontroller
Version 2.19.1
Rettet (Fixed)
- Seneste version: 2.21.4; Udgivelsesdato:
Version 2.19.0
Ændret (Changed)
- Seneste version: 2.21.12; Udgivelsesdato:
Rettet (Fixed)
- C++Builder-
CJKTextLabmåler nu tekst via de eksporterede PDFium-redigeringsfunktioner, ogMergePDFundgår en flertydigt VCL-besked-overload, hvilket gendanner rene RAD Studio 37-builds
Version 2.18.3
Rettet (Fixed)
- PAdES B-LTA Document Time-stamp er nu registreret som et synligt signaturfeltet — en usynlig Widget, der kan nås via første sides
/Annotsog AcroForm/Fields(ETSI EN 319 142-1 §5.4.3) — i stedet for et utilgængeligt forældreobjekt, som signaturfelts-opregne validatorer ikke kunne finde; eksisterende annotationer og felter bevares
Version 2.18.2
Rettet (Fixed)
- PAdES-signering og klassisk krydsreference-skrivning giver nu en tydelig fejl, når en byte-offset overskrider den faste 10-cifrede feltbredde (~9,3 GB), i stedet for stiltiende at efterlade
/ByteRange-pladsholdere uskrevet (hvilket producerer en ugyldig signatur) eller overløbe den 20-byte xref-linje (ISO 32000-1 §7.5.4); krydsreference-stream-output bruger 8-byte binære felter og er upåvirket
Version 2.18.1
Rettet (Fixed)
- PAdES-signering løser nu indirekte første-sides
/Annots-,/AcroForm- og/Fields-referencer ved hele objekthovedet (ISO 32000-1 §7.5.3) og ved referencens faktiske generations-nummer; en simpel delstreng-søgning matchede tidligere et objektnummer inde i et længere (og løste5 0 Rtil15 0 obj), og et hardkodet generationsnummer gik glip afgen>0-objekter, hvilket korrupterede signaturfelts-arrays eller afviste gyldige dokumenter - Når kataloget, første side,
/Annots,/AcroFormeller/Fieldsbefinder sig inde i en objekt-stream, forsøger signeringen nu at signere en udvidet kopi inden den fejler i stedet for at afvise dokumentet direkte
Version 2.18.0
Tilføjet (Added)
ReadPdfVersionInforapporterer headerversionen, den effektive kerneversion, katalogtilsidesættelsen og Adobe-udviklerudvidelsesniveauet fra en PDF-stream
Ændret (Changed)
- Eksplicitte PDF 1.3–1.7-lagringer validerer nu katalog-, sidereressource-, XFA-, redaktions- og udviklerudvidelsesstrukturer i deres ejende objekt-kontekst; krypteret eksplicit-version-output og PDF 1.3 inkrementel normalisering afvises for at bevare dokumentintegriteten
- Fil-sti-lagringer skriver nu til en søsterfil og erstatter kun destinationen efter alle komprimerings-, normalerings- og versionskontroller er gennemført
Rettet (Fixed)
- PDF 1.3-output bærer nu den påkrævede fulde
/ProcSet-ressource og fjerner PDF 1.4-transparensnøgler, når de kun gentager PDF 1.3-standardværdierne for grafiktilstand - Hybrid-reference-, xref-stream- og objekt-stream-filer omskrives ikke længere af den klassiske xref-kompressor, hvilket forhindrer at komprimerede objektindgange droppes
- Navne der ligner transparens- eller katalog-funktionsnøgler inde i strenge, kommentarer eller ikke-relaterede ressourcemaps forårsager ikke længere falske mål-version-fejl
Version 2.17.0
Tilføjet (Added)
- PAdES-signaturer er nu registreret som usynlige Widget-annotationer i første sides
/Annots-array og i AcroForm/Fields-array, hvilket bevarer eksisterende annotationer og formularfelter
Ændret (Changed)
- Inkrementelle PDF/A-, PDF/X-, PDF/E-, PDF/R-, PDF/UA-, PDF/VT- og PAdES-opdateringer bevarer nu kildedokumentets krydsreference-repræsentation: xref-stream-dokumenter modtager en xref-stream-opdatering som krævet af ISO 32000-1 §7.5.8.1, mens klassiske dokumenter fortsat modtager en xref-tabel
- Krydsreference-offsets,
startxref,/Prev, PAdES ByteRange-værdier og SHA-256 rækkevidde-behandling bruger nu 64-bit positioner med chunked hashing, hvilket muliggør filer større end 2 GB i 64-bit builds - Genererede skrivbare XMP-pakker reserverer nu 2048 bytes polstring før den afsluttende pakke-instruktion
Version 2.16.10
Rettet (Fixed)
- Objekt-stream-udvidelse genopvækker ikke længere forældede kopier af objekter, som en inkrementel opdatering har migreret ud af objekt-streamen til en almindelig definition (ISO 32000-1 §7.5.7); overensstemmelsestjek og markørinjicering løste tidligere det forældede katalog eller metadata-ordbog på sådanne filer
Version 2.16.9
Rettet (Fixed)
- På Free Pascal udvides tekststrenge, hvis input ikke er gyldigt UTF-8, byte-for-byte som Latin-1 og skrives som UTF-16BE hex-strenge; de rå høje bytes lækkede tidligere ind i en bogstavelig streng, hvilket ikke er en lovlig PDF 1.7-tekststreng-kodning
- Stream-dekodning genkender nu rå deflate-data uden RFC 1950 zlib-indpakning (en almindelig defekt hos dårlige skribenter) og dekomprimerer den i råtilstand, så overensstemmelsesscans ikke længere er blindt tavsende på sådanne streams
Version 2.16.8
Rettet (Fixed)
- Inkrementelle opdateringer skrevet af lagringens efterbehandlingssti opdaterer nu det andet (ændrende) trailer-
/ID-element som krævet af ISO 32000-1 §14.4; begge elementer kopieres tidligere ordret, så caching- og synkroniseringsværktøjer så et uændret identifikator efter hver opdatering
Version 2.16.7
Rettet (Fixed)
- Stream-kroppen blanking brugt af overensstemmelsesscans kræver nu, at
stream-nøgleordet efterfølges af et linjeskift (ISO 32000-1 §7.3.8.1); ordet inde i en bogstavelig streng såsom(downstream)blankede tidligere al efterfølgende struktur op til det næsteendstream, hvilket skjulte reelle overtrædelser for byte-niveau-kontrollerne - PDF/X- og PDF/E-forbudne-funktions-scans blanker desuden bogstavelige strenge og kommentarer (§7.2.2), så en værdi som
/Title (see /JavaScript docs)eller et kommenteret token ikke længere producerer et falskJavaScript-,AcroForm- ellerLZWDecode-fund
Version 2.16.6
Rettet (Fixed)
- PDF/VT DPM-indgange valideres nu ved skrivetidspunktet som dokumenteret: nøglenavne der overtræder ISO 16612-2 §6.6 NMTOKEN-reglen eller Annex E-registrant-præfiks-reglen, og duplikatnavne, afvises i stedet for at blive skrevet ind i DPart-ordbogen — et navn der indeholder et mellemrum opdelte sig tidligere i et falsk nøgle/værdi-par og korrupterede ordbogen
Version 2.16.5
Rettet (Fixed)
- Fjernelse af en ordbogindgang, hvis værdi er en hex-streng (som
/Check <...>), fjerner nu hele indgangen; injektorerne efterlod tidligere en forældet hex-værdi, hvilket producerede en syntaktisk ødelagt ordbog - Fjernelse af en indgang, hvis indirekte reference bruger linjeskift mellem tokens (ISO 32000-1 §7.3.10 tillader ethvert whitespace), efterlader ikke længere generationsnummeret og
R-nøgleordet
Version 2.16.4
Rettet (Fixed)
- Maksimal-objekt-nummer-scanningen kræver ikke længere, at objekthoveder starter en linje (ISO 32000-1 §7.5.3 tillader ethvert whitespace eller afgrænsning før dem), så injektorer ikke kan allokere et objektnummer der kolliderer med et inline
N G obj-hoved og stiltiende korrumperer filen; objektnumre er begrænset af Annex C-loftet - Streams hvis
/Lengther en indirekte reference løser nu det refererede heltalsobjekt og bruger dets værdi, når det stemmer overens med det afsluttendeendstream; sådanne streams var tidligere begrænset af en mønster-søgning, som afkortede kroppe der lovligt indeholdtendstream-byte-sekvensen — typisk for indlejrede PDF-vedhæftninger
Version 2.16.3
Rettet (Fixed)
- Stream-komprimering passerer krydsreference-stream-dokumenter (PDF 1.5+-filer uden et klassisk
trailer-nøgleord) uændret; genopbygningsstien fejlparsede tidligerestartxrefsom tabelplacering og syntetiserede en gættet trailer, der kunne producere en uåbnelig fil - Kompressoren springer XMP-metadata-streams over, så et PDF/A-dokument beholder sin obligatoriske ufiltrerede metadata-stream (ISO 19005-1 §6.7.2), og lader eksterne fil-streams (
/Fmed/FFilter) urørte - Den genopbyggede krydsreferencetabel scanner en stream-afskrabet kopi af dokumentet, så binært stream-indhold ikke kan simulere objekthoveder eller oppuste tabellen; den genopbyggede trailers
/Sizeafspejler nu den faktiske tabel, og objektnumre er begrænset til Annex C-loftet - Lokalisering af den originale krydsreferencetabel accepterer CR-kun linjeskift (ISO 32000-1 §7.5.1) og kan ikke længere matche
xref-bogstaverne inde istartxref; stream-nøgleordsscanningen har fået den sammeendstream-hale-vagt der bruges andre steder, og rykker nu frem forbi skippede stream-kroppe
Version 2.16.2
Rettet (Fixed)
- Heltals-parsing på tværs af byte-niveau PDF-læserne accepterer nu det eksplicitte
+-tegn tilladt af ISO 32000-1 §7.3.3 og afviser cifre-løb der ville overløbe, så fjendtlige eller korrupte dokumenter ikke længere kan wrape parsede længder og offsets til vildledende værdier
Version 2.16.1
Rettet (Fixed)
- PDF/UA-injektor skriver katalog-
/Lang-værdien som en korrekt PDF-tekststreng; den kørte tidligere værdien gennem XML-escaperen, så et sprog-tag der indeholdt&eller parenteser producerede en korrupt indgang, og ikke-ASCII-input blev skrevet som rå UTF-8 - PDF/E
/ISO_PDFEVersionInfo-indgangen bruger den delte tekststreng-encoder, hvilket holder ikke-ASCII-værdier lovlige i PDF 1.7 - XML-escaping til XMP-pakker dropper kontroltegn der er ulovlige i XML 1.0, så metadata kopieret fra et skadet kildedokument ikke længere kan gøre hele metadata-streamen fejlformet
- PDF-til-XMP dato-konvertering validerer at datofelter er numeriske og polstrer et manglende minut-felt, hvilket forhindrer misdannede ISO 8601-datoer i genereret XMP; på ikke-Windows-platforme inkluderer reservetidsstemplet nu tidspunktet på dagen i stedet for den bare dato
Version 2.16.0
Tilføjet (Added)
- Stream-dekodning rekonstruerer nu
/DecodeParms-prædiktorer (PNG-prædiktorer 10–15 og TIFF-prædiktor 2, ISO 32000-1 §7.4.4.4) efter FlateDecode, med respekt for/Colors,/BitsPerComponentog/Columns; objekt-streams komprimeret med en prædiktor — et almindeligt PDF 1.5+-skrivevalg — viste tidligere differentierede bytes, så de objekter de bærer var stiltiende usynlige for overensstemmelsesscans og markørinjicering
Rettet (Fixed)
- FlateDecode-detektion parser nu
/Filter-værdien som et navn eller array i stedet for en delstreng-match, så kaskaderede filter-kæder og forekomster af ordet inde i ikke-relaterede værdier ikke længere udløser en falsk inflate; ikke-understøttede kæder falder tilbage til de rå bytes som før
Version 2.15.1
Rettet (Fixed)
- Ordbog-scanneren springer nu bogstavelige strenge, hex-strenge og kommentarer over, mens den balancerer
<</>>(ISO 32000-1 §7.2.2), så ordbøger der indeholder værdier som(A >> B)eller en hex-streng der støder op til den afsluttende afgrænsning, ikke længere afkortes under trailer-, katalog- og overensstemmelses-scan-parsing - Bogstavelig streng-udtrækning dekoder nu det fulde §7.3.4.2 Tabel 3 escape-sæt —
\n \r \t \b \f, oktal\ddd, linjekontinuationer og ikke-escaped EOL-normalisering — i stedet for at kopiere escape-bogstavet ordret, og gendanner korrekte/Producer-,/GTS_PDFXVersion- og/ISO_PDFEVersion-sammenligninger for skribenter der bruger oktale escapes - Bogstavelige strenge skrevet af markørinjektorerne escaper nu CR, LF og andre kontroltegn, så værdier overlever læsersidens linjeskift-normalisering byte-for-byte
Version 2.15.0
Rettet (Fixed)
- Inkrementelle opdateringer skrevet af PDF/A-, PDF/X-, PDF/E-, PDF/R-, PDF/UA- og PDF/VT-markørinjektorerne og af PAdES-signeringen og DSS-stierne bevarer nu kildedokumentets permanente fil-identifikator: det første trailer-
/ID-element bæres over ordret som krævet af ISO 32000-1 §14.4, og kun det andet (ændrende) element opdateres; tidligere blev begge elementer regenereret, så eksterne referencer og langtidsvaliderings-workflows så en forskellig dokumentidentitet efter hver lagring - PAdES-signaturer, DSS-injicering og B-LTA Document Time-stamps bærer nu kildtrailerens
/Info-reference fremad (ISO 32000-1 §7.5.6), så dokumentegenskaber ikke længere forsvinder fra læserpaneler efter signering; Document Time-stamp-traileren får også/ID-array - Trailer-
/Info-reserven for krydsreference-stream-dokumenter finder nu XRef-stream-ordbogen korrekt og bevarer referencens generations-nummer; den matchede tidligere aldrig på overensstemmende PDF 1.5+-filer og droppede stiltiende/Info
Version 2.14.4
Rettet (Fixed)
- Signaturordbogens
/M-dato skrevet afTPdf.SignPadesogSignPadesBytesbærer nu det obligatoriskeD:-præfiks ogZUTC-offset-markøren krævet af ISO 32000-1 §7.9.4; strenge validatorer afviste tidligere signeringstidspunktet som en misdannet datostreng
Version 2.14.3
Rettet (Fixed)
- Ordbognøgle-opslag i den delte PDF-læser matcher nu hele navn-tokens (ISO 32000-1 §7.3.5); tidligere blev en stream, hvis ordbog listede
/Length1før/Length(typisk for FontFile-streams), afkortet til det forkerte byte-antal og blinde PDF/A-, PDF/UA- og andre overensstemmelsesscans der læser fonte-, CMap- eller metadata-streams stiltiende /Encrypt-,/Root-,/Size- og/Info-trailer-opslag matcher ikke længere længere nøgler der deler det samme præfiks (som/EncryptMetadata)- Objekt-stream-udvidelse stoler ikke længere på en korrupt eller fjendtlig
/N-værdi: ikke-heltalsværdier giver nu 0 i stedet for et uinitialiseret nummer, og en øvre grænse afledt fra/Firstforhindrer oversized allokeringer under scanning af misdannede dokumenter
Version 2.14.2
Rettet (Fixed)
- PDF/X-, PDF/VT-, PDF/UA-, PDF/E- og PDF/R-markørinjektorerne kopierer nu krypterede kildedokumenter uændret i stedet for at tilføje klartekst-opdateringsafsnit; den tidligere adfærd producerede filer, hvis seneste trailer mistede
/Encrypt-indgangen (ISO 32000-1 §7.5.6), så overensstemmende læsere fejllæste den krypterede krop som klartekst TPdf.SignPades,SignPadesBytesogInjectPadesDssMarkerskaster nuEPadesCrypto, når kildedokumentet er krypteret, i stedet for stiltiende at udsende en korrupt eller ikke-verificerbar fil; fjern kryptering inden signering eller indlejring af DSS-materiale
Version 2.14.1
Rettet (Fixed)
TPdf.SignPadesogSignPadesBytesudfylder nu alle fire/ByteRange-felter i signaturordbogen; tidligere forblev de tre sidste felter ved deres nul-pladsholdere, så producerede signaturer deklarerede et tomt byte-interval og fejlede verificering i overensstemmende validatorer- PAdES B-LTA Document Time-stamp-ordbøger modtager den samme
/ByteRange-tilbagefylde-rettelse ValidatePadesComplianceaccepterer nu det standardsignatur-layout, hvor byte-interval-hullet indeholder hex-/Contents-værdien, og kontrollerer at det andet intervals segment slutter nøjagtigt ved filens afslutning; tidligere bestod kun gapless intervaller dæknings-tjekket
Version 2.14.0
Tilføjet (Added)
TPdf.ExportXFDFserialiserer alle formularfelt-værdier og annotationer på tværs af alle sider til et XFDF-dokument (ISO 19444-1), og udsender<fields>til hierarkiske formularværdier og<annots>til alle understøttede annotations-undertyper (text, highlight, underline, strikeout, squiggly, line, circle, square, caret, polygon, polyline, stamp, ink, freetext, fileattachment, sound, link, redact)TPdf.ImportXFDFlæser et XFDF-dokument tilbage i den indlæste PDF og genopretter annotationer på de matchende sider og anvender feltværdier på deres widget-annotationerTPdfAnnotation-posten fikName(NM),Subject,ModificationDate(M),CreationDate,Icon,Opacity(CA), linje-endepunkter, polygon/polyline-hjørner og ink-liste-gestus-felter, så XFDF-rundture bevarer den fulde annotations-metadata- Nyt
XfdfLab-eksempel i Delphi-, C++Builder- og Lazarus-demo-sæt demonstrerer eksport/import-rundturen
Version 2.13.6
Rettet (Fixed)
ValidatePdfAbehandler nu katalog-/Metadata-streams uden/Type /Metadataeller/Subtype /XMLsom manglende XMP-metadata viapvaiMissingXmpMetadata- PDF/A preflight-rapporter klassificerer nu
pvaiMissingXmpMetadatasom Metadata og anbefaler en katalog-/Metadata-stream med/Type /Metadata,/Subtype /XML, ufiltreret XMP ogpdfaid-markører
Version 2.13.5
Rettet (Fixed)
ValidatePdfArapporterer nu Widget-annotationer uden en udseende-ordbog og PDF/A-2 / PDF/A-3-annotationer der kræver men mangler/APviapvaiAnnotationApDictViolation- PDF/A preflight-rapporter kategoriserer nu
pvaiAnnotationApDictViolationsom indhold, som markørinjicering ikke kan reparere
Version 2.13.4
Rettet (Fixed)
ValidatePdfArapporterer nu PDF/A-2 og PDF/A-3 inline-billeder, hvis/I- eller/Interpolate-værdi ertrue, viapvaiImageDictionaryViolation, hvilket matcher den eksisterende Image XObject-ordbogsækning- PDF/A preflight-rapporter kategoriserer nu
pvaiImageDictionaryViolationsom indhold, som markørinjicering ikke kan reparere
Version 2.13.3
Rettet (Fixed)
ValidatePdfArapporterer nu PDF/A-1 inline-billeder der bruger/LZWDecodeeller forkortet/LZW-filtre inde i indholdsstrøm viapvaiInlineImageLzwForbidden, hvilket matcher den eksisterende PDF/A-2 og PDF/A-3 inline-billed-dækning- Inline-billed-filter-scanneren rykker nu forbi indledende ressourcenavne som
/GS1, og undgår stalemates under scanning af bredere PDF/A-1-indholdsstrøm
Version 2.13.2
Tilføjet (Added)
TPdf.SetFocusedFormFieldTextskriver tekst ind i det aktuelt fokuserede formularfelts redigeringsbuffer viaFORM_ReplaceSelection, symmetrisk tilFocusedFormFieldText. For AcroForm-tekst/combo-felter bekræftes værdien til/Vved fokustab og bevares; for XFA-tekstfelter lander skrivningen kun i hukommelsesbufferen (PDFium eksponerer ingen offentlig API til at afstemme XFA-værdier tilbage til datasets-pakken, så det bevares ikke på tværs af lagringer)- JavaScript-værtplatformen tilknyttes nu, når V8-motoren er tilgængelig, uanset om dokumentet er XFA — så indlejret AcroForm JavaScript (dok-niveau-scripts, felt-beregninger,
app.alert) kan udføres. Tidligere varm_pJsPlatformkun konfigureret for XFA-dokumenter, hvilket efterlod AcroForm JS stiltiende deaktiveret
Ændret (Changed)
- JavaScript-platform-tilknytning er nu uafhængig af XFA-beslutningen i
InitializeFormFill—m_pJsPlatform-tabellen bygges, nårV8FeaturesAvailableer sand, og anvendes efter XFA-version/callback-konfigurationen frem for indlejret inden i den
Version 2.13.1
Tilføjet (Added)
- Nye værtshændelser viser information, som v2.13.0 formularfylde-callbacks tidligere slugte:
OnXfaUriAction,OnXfaPageCountChanged,OnXfaFocusChange,OnXfaEmail,OnXfaHttpRequest,OnXfaOpenFile,OnJavaScriptBeep,OnJavaScriptPrint,OnJavaScriptMail,OnJavaScriptSubmitForm. Alle hændelser bruger den eksisterende no-op-adfærd som standard, når de er utildelt, så eksisterende værter er upåvirkede TPdf.XfaFormPacketsskrivebeskyttet egenskab returnerer et engangs-snapshot af alle XFA-pakker (TXfaPacketList), og opfylder deTXfaPacket/TXfaPacketList-typer der tidligere var deklareret men ubrugte- XFA-specifikke PDFium-fejlkoder
FPDF_ERR_XFALOAD/FPDF_ERR_XFALAYOUTer nu bundet og overflades viaLastPdfError, og erstatter den generiske “Unknown error” ved XFA load/layout-fejl
Ændret (Changed)
FFI_DoURIActionWithKeyboardModifierkonsulterer nuOnXfaUriAction, inden den shell-udfører en URI fra et XFA-felt, og giver værten en vetoret (sikkerhed: et ondsindet XFA-felt kunne tidligere starte vilkårlige URL'er ubetinget). Utildelte handlere bevarer den tidligereShellExecuteW-standardDecodeFormFieldTyperuter nu XFA-felttyper viaIsXfaFormFieldfrem for en eksplicit 8-grenet case, og holder enum-en justeret medFPDF_FORMFIELD_XFA_*ved ordinals-offset
Rettet (Fixed)
ValidatePdfArapporterer nu PDF/A-1-krav der bruger PDF 1.5 krydsreference-streams eller objekt-streams med den nyepvaiPdfA1Pdf15Structure-problemet, mens objekt-streams fortsat tillades for PDF/A-2 og PDF/A-3
Version 2.13.0
Tilføjet (Added)
- Fuld XFA (XML Forms Architecture) runtime-understøttelse:
TPdf.InitializeFormFillkonfigurerer nu alle 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) og tilknytter enIPDF_JsPlatform, så en XFA-aktiveretpdfium.dllkan rendere og scripte dynamiske XFA-formularer - Ny
Lib\FPdfXfa.pas-enhed der deklarerer XFA-konstanterne (FXFA_PAGEVIEWEVENT_*,FXFA_MENU_*,FXFA_SAVEAS_*,FPDF_FORMFIELD_XFA_*) ogTXfaPacket/TXfaSaveFormat-typerne der tidligere kun var refereret i kommentarer - XFA statisk pakkelæser på
TPdf:GetXfaPacketCount/GetXfaPacketName/GetXfaPacketContent/GetXfaPacketByNameplusGetXfaTemplate/GetXfaDatasets/GetXfaConfigudtrækker XFAtemplate-,datasets- ogconfig-pakkerne som rå XML uden at kræve en XFA-aktiveret runtime — nyttigt til overensstemmelsesrevision og datamigrering - Kapacitets-sonder: global
XfaFeaturesAvailable, og per-dokumentTPdf.XfaRuntimeAvailable(omFPDF_LoadXFAfaktisk lykkedes) ogTPdf.XfaStaticReadable(om pakkelæser-eksporterne løses) TPdfFormFieldTypeudvidet medfiXfa,fiXfaCheckBox,fiXfaComboBox,fiXfaImageField,fiXfaListBox,fiXfaPushButton,fiXfaSignature,fiXfaTextField, medDecodeFormFieldTypeder mapper de nyeFPDF_FORMFIELD_XFA_*-værdier- JavaScript-værtshændelser på
TPdf:OnJavaScriptAlert,OnJavaScriptResponse,OnXfaGotoUrlogOnXfaRuntimeMissinglader værten tilpasse JS-dialoger og XFA-navigation, eller reagere når et XFA-dokument ikke kan køre motoren - Nyt
XfaLabDelphi-eksempel der demonstrerer XFA-detektion, pakkudtræk, kapacitets-sondning og runtime-manglende reservesti
Ændret (Changed)
TPdf.LoadDocumentforscanner nu inputtet for XFA-markører (/XFAi AcroForm-ordbogen eller katalog-/NeedsRendering) og vælger automatiskpdfium.v8.dllved at sætteEnableV8Engine := True, inden singleton-biblioteket indlæses første gang, når de findes; når en plainpdfium.dllallerede er indlæst, kan processen ikke skifte, såOnXfaRuntimeMissingsignalerer den tilfældeTPdf.GetPageCountafspejler nu det sideantal, XFA-motoren rapporterer viaFFI_PageEventefter dynamisk ompaginering, frem for kun det statiske PDF-sidetræ- Når et XFA-dokument åbnes men runtime er utilgængeligt, fastnåler
InitializeFormFillnuversion=1ogxfa_disabled=1i stedet for at anmode om version 2 med utildelte callbacks, hvilket tidligere riskerede en dårlig callback-pointer-dereference
Version 2.12.2
Rettet (Fixed)
ValidatePdfACompliancerapporterer nu brugte tilpassede XMP-navnerum udenpdfaExtension:schemas, mens den stadig accepterer standardpdfaid-metadata uden udvidelsesdeklarationer- PDF/A-3 indlejret fil-validering kræver nu både
/Fog/UFtop-niveau-indgange på filspec-ordbøger og ignorerer indlejrede/EF-stream-nøgler ved kontrol af disse navne
Version 2.12.1
Rettet (Fixed)
ValidatePdfACompliancedekoder nu escaped PDF-navn-tokens inden matching af JavaScript, LZWDecode, Type1 og relaterede forbudte navne, så forvirrede men semantisk identiske navne rapporteres korrekt- PDF/A inline-billed-tjek afviser nu
/Filter- og/F-værdier der bruger/LZWDecode, forkortet/LZWeller/Crypt, herunder array- og escaped-navn-former - PDF/A-validering rapporterer nu metadata-streams med forbudte stream-filtre, OutputIntent ICC-profiler hvis
/N-komponentantal mangler eller er inkonsistent, og PDF/A-3 indlejrede filspecs med manglende eller ugyldige/AFRelationship
Version 2.12.0
Tilføjet (Added)
- TSA HTTP-anmodninger sætter nu eksplicitte 30 s timeouts for hver fase (resolve/connect/send/receive) via
WinHttpSetTimeouts, så en langsom eller ikke-tilgængelig timestamp-autoritet ikke kan hænge signeringstråden på ubestemt tid i stedet for at stole på WinHttp's implicitte standardindstillinger - Per-anmodning nonce-afledning for PAdES B-T / B-LTA timestamp-anmodninger, når den der ringer udelader
TPadesSignOptions.Nonce: en SHA-256-fold af monoton tæller + ur +GetTickCount64+ proces-id erstatter den tidligere faste$100000000-reserve, så to anmodninger udstedt i det samme millisekund ikke længere genbruger den samme anti-replay-nonce PdfInflatebegrænser nu dekomprimeret output til 256 MiB for at stoppe en zlib-komprimeret stream fra at udtømme hukommelse på et fjendtligt eller korrupt input (en “zlib-bombe”); grænsen er generøs for enhver rigtig PDF-stream
Ændret (Changed)
TPdfView-overlejring-blending (søgehøjdepunkt, tekstvalg, læseord, spread-valg) bruger ikke længere per-pixelGetPixel/SetPixelV; rektanglet blandes nu via et 32-bpp off-screenTBitmapogScanLinei et enkelt gennemløb, hvilket eliminerer tusindvis af GDI-kernal-krydsninger pr. maling og gør store valg responsiveFPdfAsn1.TDerReader.ReadIntegerafviser nu INTEGER-felter længere end 8 bytes (og 8-byte negativer hvis sign-bit ville kræveshl >= 64), og returnerer 0 i stedet for at beregne en forkert værdi gennem udefineret-skift-adfærd på CMS/PAdES ASN.1-inputParseTimeStampRespekkoer ikke længere anmodnings-nonce tilbage somTPadesTimestamp.Nonce; indtil TSTInfo-walkeren der verificerer den returnerede nonce lander, forbliver feltet 0 for at signalere “ikke verificeret” frem for at give opkaldere falsk tillid til at timestamp-svaret er frisk
Rettet (Fixed)
PointsToPixelsreturnerede sit input uændret for enhver DPI: divisoren varPointsPerInch(72-konstanten) i stedet for det bogstavelige 72, og kollapsede formlen tilResult := Points. Enhver ekstern opkalder der laver point→enheds-pixel-størrelsessætning via denne hjælper, får nu den korrektePoints × PixelsPerInch / 72PdfMaxObjNumunderkullede på dokumenter der bruger objekt-streams (PDF 1.5+ ObjStm): objekter komprimeret inde i en/ObjStmbærer ingenN 0 obj-markør, så den rå-byte-scan missede dem, og injektorer der allokererMaxObj+1til nye objekter ville kollidere med skjulte ObjStm-medlemmer og stiltiende korruptere filen. Scannen udvider nu objekt-streams først, så alle objektnumre er synligeInjectPdfAMarkersforfalder ikke længere et PDF/A-overensstemmelseskrav på et krypteret dokument: PDF/A (ISO 19005-1 §7.1) forbyder kryptering, og injektoren kopierede tidligere kilden med markørerne, selvom den næste validering ville afvise det. NårHasEncrypter sat, passes kilden nu uændret. Den normaleTPdf.SaveAsPdfA-sti fjerner allerede kryptering (saRemoveSecurity) inden injicering, så dette påvirker kun direkte opkalderePdfReadStreamBytesafviser nu en/Lengthder er større end hele filen inden allokering af resultatbufferen, og lukker en tidlig allokerings-sti på en korrupt eller fjendtlig indirekte længde
Version 2.11.0
Tilføjet (Added)
- PDFium
FPDF_FILEHANDLER-posten deklarerer nu sine seks callbacks (Release,GetSize,ReadBlock,WriteBlock,Flush,Truncate) som rigtige felter i stedet for kommentarer, svarende til C-header-layoutet. XFA FFI-fil-overførsels-callbacks (FFI_OpenFile/FFI_EmailTo/FFI_UploadTo/FFI_DownloadFromURL), der returnerer eller forbrugerPFPDF_FILEHANDLER, er stadig ikke implementeret i Pascal-formularfylde-laget, men typen er nu strukturelt korrekt for en eventuel fremtidig XFA-indsend/upload-sti - PDFium-biblioteksindlæsning og -aflæsning (
LoadLibrary/UnloadLibrary) er nu serialiseret af en processglobal kritisk sektion, så toTPdfFuture<T>-arbejdertråde (eller en arbejder der konkurrerer med hovedtråden) ikke begge kan observerePDFiumLibrary=0og dobbelt-binde, eller frigøre DLL'en, mens en anden tråd er midt i binding - En
initialization/finalization-sektion kalder nuUnloadLibraryved enheds-aflæsning, hvilket sikrer atFPDF_DestroyLibrarykører (arbejdertråd-samling, V8-isolat-bortskaffelse, skrift/cache-nedrivning) i stedet for at stole på OS'et til at genvinde DLL'en
Ændret (Changed)
TPdf.SetActivesluger nu enhver undtagelse under indlæsning (tidligere kunEPdfError), så en stream-fejl eller adgangsfejl under formular/side-opsætning efterladerActive=Falsei stedet for en delvist-indlæst komponent med ubestemt tilstand- Konsistent tegnkodning til PDFium metadata-nøgleargumenter:
TPdf.GetMetaTextbruger nu den samme FPCAnsiString/ DelphiUTF8Encode-opdeling somGetViewerPreferenceog indlæsningstierne, i stedet for en simpelAnsiString(Tag)-cast - Deduplikerede
BytesToAnsi-,AnsiToBytes-,WriteBytes- ogWriteStr-hjælperne:FPdfCompressimporterer dem nu fraFPdfPdfCommon(detsWriteBytesToStream/WriteAnsiToStream-aliaser afvikles) og den overflødige tre-argumentBytesToAnsi-overload iFPdfPdfafjernes.FPdfAsn1beholder sin lokale kopi med vilje for at holde kryptografilaget fri for overensstemmelseslagets enhed
Rettet (Fixed)
- Ressourcelæk i
TPdf.LoadDocument(fil, hukommelse,TBytes,TMemoryStream, tilpasset stream) ogTPdf.CreateDocument: hvisInitializeFormFillellerReloadPagekastede efterFPDF_LoadDocument/FPDF_CreateNewDocumentlykkedes, blev det nativeFPDF_DOCUMENT-handle lækket, fordiFActivestadig var False på det tidspunkt. Hvert sti omslutter nu post-load-opsætningen itry/exceptog lukker dokumentet ved fejl, og efterlader komponenten rent inaktiv - Venligere PDFium DLL-indlæsningsdiagnostik:
CheckLoadLibraryregistrererERROR_BAD_EXE_FORMAT(193) og rapporterer en 32/64-bit arkitektur-mismatch der peger på den matchendeDLLs/Win32ellerDLLs/Win64build, i stedet for kun at videresende den generiske OS-fejl.CheckGetProcAddressangiver nu at den deployeredepdfium.dller ældre end bindingen, når en krævet eksport mangler, frem for den bare OS “procedure not found”-tekst
Version 2.10.1
Rettet (Fixed)
- PAdES SignerInfo sid-standardisering: signeridentifikatoren bruger nu RFC 5652 §5.3
issuerAndSerialNumber-formen (issuer Name + serialNumber, begge udtrukket ordret fra underskrivercertifikatets DER), som erstatter den tidligere ikke-standardiseredesubjectKeyIdentifier+ fuld-cert SHA-256 pladsholder, som Adobe Acrobat og andre overholdende validatorer afviste. En ny TbsCertificate DER-walker (ExtractIssuerAndSerial) læser issuer SEQUENCE og serial INTEGER som rå TLV-bytes — serienumre overskrider ofteInt64-området, så rå TLV er obligatorisk.subjectKeyIdentifier-formen forbliver kun som en reserve, når cert-DER-parsing fejler
Ændret (Changed)
TCmsSignerId.SerialNumber: Int64er erstattet afSerialDer: TBytes(den rå serialNumber TLV). CMS-byggeren indlejrer den udskårede TLV ordret iIssuerAndSerialNumber, hvilket undgårInt64-overflow ved 20-byte CA-serienumre (RFC 5280 §4.1.2.2 øvre grænse)
Version 2.10.0
Tilføjet (Added)
- PAdES B-LT langtidsvalidering: når
TPadesSignOptions.Level >= plB_LT, tilføjerSignPadesBytesen inkrementel opdatering, der indeholder en/DSS-ordbog med underskrivercertifikatet og den fulde mellemliggende kæde (det selvsignerede root udelukkes ifølge RFC 5652 §10.2.3), samt/Extensions /ESICLevel 1-markøren (EN 319 142-1 §5.4.2) - PAdES B-LTA arkivtidsstempel: når
Level >= plB_LTAogTsaUrler angivet, tilføjes en Document Time-stamp signaturordbog (/SubFilter /ETSI.RFC3161), hvis/ByteRangedækker hele filen; ESIC-markøren forfremmes til Level 2. Dette fuldender de fire PAdES baseline-niveauer (B-B, B-T, B-LT, B-LTA) - Certifikatkædeindsamling:
ResolveWinSignerkalder nuCertGetCertificateChainog udfylderTPadesResolvedSigner.ChainCertDermed de mellemliggende CA-certifikater, så B-LT/DSS /Certsindeholder hvert certifikat, der kræves for at validere signaturen uden eksterne opslag.CertFreeCertificateContexter nu bundet, hvilket lukker den én-kontekst-pr-underskrift-lækage, der blev bemærket i v2.8.0 - PDF/A-integrationsarbejdsgang:
TPdf.SignPadesWithPdfAkonverterer dokumentet til PDF/A først (det højeste niveau, biblioteket i dag udsender) og anvender derefter den anmodede PAdES-signatur — det langtidsarkiv-beholdermønster, EN 319 142-1 Annex A.7 anbefaler
Version 2.9.0
Tilføjet (Added)
- PAdES B-T betroet tidsstempel:
TPadesSignOptionsfår felterneLevel,TsaUrlogNonce. NårLevel >= plB_TogTsaUrler angivet, udtrækkerSignPadesBytessignaturværdien fra den byggede CMS, anmoder om et RFC 3161-tidsstempel over den og indlejrer det returnerede TimeStampToken som SignerInfo- attributten uden signatursignature-time-stamp— B-T-trinnet for betroet tid (EN 319 142-1 §6.3 req o) FPdfTsa: platformuafhængig RFC 3161-klient —BuildTimeStampReq(version 1, SHA-256 messageImprint over signaturværdien, nonce, certReq=true),ParseTimeStampResp(accepterer PKIStatus 0/1, afviser 2+, udtrækker TimeStampToken ContentInfo ordret) ogRequestTimestamp(one-shot byg+POST+fortolk).PadesTsaAvailablestyrer funktionen på platforme uden en HTTP-backendFPdfTsaWin: Windows WinHttp-backend, dynamisk bundet fra winhttp.dll (nul nye kompileringstidsafhængigheder; HTTPS forhandles af Windows certifikatlageret). SpejlerFPdfCryptoWin-mønsteret for dynamisk bindingFPdfCms:ExtractSignatureValuegennemgår en bygget CMS for at gendanne de rå signaturoktetter (TSA-hash-input), ogAddSignatureTimestampToCmsgenopbygger ContentInfo med en nyunsignedAttrs [1](0xA1), der bærer tidsstempel-attributten. Valideringsfasen-1-genkender resultatet som en B-T-signatur
Version 2.8.0
Tilføjet (Added)
- PAdES B-B-underskriftsstak: fire nye pure-Pascal/platformuafhængige byggeklodser (
FPdfSha256,FPdfAsn1,FPdfCms,FPdfCrypto) samt en Windows CNG-backend (FPdfCryptoWin) laderTPdf.SignPades/SignPadesToStreamproducere en PAdES B-B-signatur fra ende til anden. Underskrivercertifikatet løses ud fra SHA-1-aftryk fra Current User “MY”-lageret; RSA-PSS (anbefalet), RSA PKCS#1 v1.5 og ECDSA understøttes alle viaNCryptSignHash FPdfSha256: selvstændig FIPS 180-4 SHA-256 (Init/Update/Final + one-shot-hjælpere). FPC 3.2.2 leveres uden en SHA-2-enhed, så biblioteket ejer en for at holde alle CMS-kodestier på en enkeltTSHA256Digest-type uden RTL-greningFPdfAsn1: DER-encoder (TDerWriter) og -læser (TDerReader), der dækker SEQUENCE/SET/OID/INTEGER/OCTET STRING/UTCTime/GeneralizedTime/kontekstspecifikke tags, med den definitiv-længde-kodning og IMPLICIT-tag-håndtering, CMS kræverFPdfCms: CAdES SignedData-bygger (BuildSignedData), der udsender de content-type-, message-digest- og signing-certificate-v2-signerede attributter, PAdES-baseline påbyder, med valgfri signing-time og commitment-type-indication. SignedAttrs-digest beregnes over den SET-taggede (0x31) form og genudsendes med IMPLICIT [0] (0xA0)-tagget i overensstemmelse med RFC 5652 §5.4FPdfCrypto+FPdfCryptoWin: kryptografisk-backend-abstraktion medPadesCryptoAvailable/ResolvePadesSigner, og Windows-implementeringen, der binder crypt32.dll / ncrypt.dll dynamisk (ingen ny kompileringstids-DLL-afhængighed). ECDSA-signaturer omkodes fra Windows IEEE P1363 r¦s-formen til DEN DERECDSA-Sig-Value-form, CMS kræverSignPadesBytes: byte-niveau signaturinjektion — reserverer en fast bredde/Contents-hex-slot, beregner den dækkende/ByteRange, fordøjer dokumentet, bygger og indlejrer CMS, og tilføjer den inkrementelle opdatering. Validatoren (v2.7.0) genkender outputtet som en PAdES B-B-signatur
Version 2.7.0
Tilføjet (Added)
- PAdES strukturel validator (ETSI EN 319 142-1 V1.2.1): den nye
FPdfPades-enhed ogTPdf.ValidatePades-metode inspicerer signaturværdiordbøger, der kan nås fra/ByteRange, går CMSSignedDatainde i/Contentslangt nok til at bekræfte CAdES-detached-formen, og opdager de fire baseline-niveauer (B-B, B-T, B-LT, B-LTA) samt Document Time-stamp-ordbøger (/SubFilter /ETSI.RFC3161) - PAdES klausulniveau-problemsæt: 26
ppei*-enums dækker/SubFilter-acceptabilitet (adbe.pkcs7.sha1ogadbe.x509.rsa_sha1markeret som forbudte),/ByteRange-fildækning,/Cert-forbud, CMSSignedData-form (enkelt underskriver, detached eContent, versionsområde), de krævede signerede attributter (content-type,message-digest,signing-certificate/v2), forbudte digest (MD5, SHA-1),/Reasonvscommitment-type-indicationgensidig udelukkelse (req d), B-T-kravet om betroet tid, B-LT/DSS+/Certs+ ESIC Level 1-markør og B-LTA Document Time-stamp + ESIC Level 2-markør - DSS-injektor:
TPdf.SaveAsPadesDss/SaveAsPadesDssToStreamtilføjer en inkrementel opdatering, der bærer en/DSS-ordbog (med/Certs-,/OCSPs-,/CRLs-stream-arrays) og/Extensions /ESIC-markøren (Level 1 eller 2) på en kopi af dokumentet, og bevarer de oprindelige bytes — B-LT/B-LTA-valideringsmateriale-indlejringstrinnet (klausul 5.4.2) - Platformuafhængigt, nulafhængigt trin: validatoren og injektoren er pure-Pascal og virker på alle understøttede IDE'er (Delphi, Lazarus, FPC, C++Builder); ingen kryptografisk backend kræves til denne udgivelse, og ingen ny DLL-afhængighed introduceres
Version 2.6.0
Ændret (Changed)
- Kryds-standard-deduplikering: syv flere duplikerede hjælpefunktioner (PdfEnclosingObjNum, PdfDictRefNum, PdfExpandObjectStreams, PdfTextStr, ExtractLiteralString, ExtractXmpAttr) er blevet fjernet fra de enkelte standardenheder og konsolideret i
FPdfPdfCommon, hvilket reducerer ~300 linjers copy-paste-vedligeholdelsesbyrde - PreflightReport-kvalitet: PDF/X- og PDF/E-indholdsklasseproblemer, der tidligere faldt igennem til den generiske “missing marker”-kategori, bærer nu præcise Content/Metadata/Security-kategorier og klausulspecifikke anbefalinger (~15 enums på tværs af begge standarder)
- PDF/E- og PDF/R-testdækning: seks flere enums med nul dækning har fået positive test (
pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden,pveiEmbeddedFilesForbidden,pvriBadHeader,pvriProhibitedInfoEntry) - Lazarus-byggefiks:
Tests.PdfVT(en Delphi-only DUnitX-enhed tilføjet i v2.5.x) er nu udeladt fra Lazarus-projektet for at genskabe kompilering
Version 2.5.3
Tilføjet (Added)
- OutputIntent-fuldstændighed (PDF/X-4 §6.2.4):
pvviOutputIntentSchememarkerer en OutputIntent, hvis/Sikke er/GTS_PDFX;pvviOutputIntentMissingIdentifiermarkerer en manglende/OutputConditionIdentifier - PDF/VT-2 Reference XObject-fritagelse (§6.2.2):
pvviReferenceXObjectForbiddenudløses ikke længere for enPDF/VT-2-fil, som lovligt må bruge Reference XObjects på en X-5g/5pg-base - MIME-grænsetegn-validering (RFC 2046 §5.1.1):
vtmviBoundaryInvalidCharmarkerer en grænse, hvis tegn falder uden for bchars-sættet, eller hvis længden overstiger 70
Rettet (Fixed)
InjectPdfVTMarkersskriver nu Info/CreationDateog/ModDatefra gemmevalgene, så den fremstillede fil rundtur-ValidatePdfVTComplianceuden en falskpvviInfoModDateMismatch(injektoren omskrev tidligere XMP-datoerne, men efterlod Info-ordbogens datoer forældede)
Version 2.5.2
Tilføjet (Added)
- Info
/ModDate-konsistens (§6.3 NOTE 2, PDF/X-4-base):pvviInfoModDateMismatchmarkerer en Info-ordbog/ModDate, der efter PDF-dato-til-XMP-dato-normalisering ikke er lig medxmp:ModifyDate - PDF/VT-2s inline chunk-overholdelse (Annex A.2): MIME-validatoren kører nu
ValidatePdfVTCompliancepå hver inlineapplication/pdf-del og markerer en ikke-PDF/VT-krop viavtmviInlinePdfNotPdfVT
Version 2.5.1
Tilføjet (Added)
- DParts-chunking-validering (ISO 16612-2 §6.5 Tabel 4):
pvviDPartsBadChunkingmarkerer et/DParts-array, hvis ikke-endelige underarrays ikke har præcis 8192 poster, eller hvis det sidste underarray falder uden for 1..8192 - RecordLevel-kryds-stream-konsistens (Annex A.2): PDF/VT-2s MIME-validatoren udtrækker nu hver inline PDF's
/RecordLevelog markerer uenighed viavtmviRecordLevelMismatch, hvilket supplerer den eksisterende NodeNameList-kontrol - Tilbagevendende grafiske objekt-hints (§6.7):
pvviGtsScopeInvalidValuemarkerer en/GTS_Scopeuden for {SingleUse, Record, File, Stream, Global, Unknown};pvviGtsScopeRecordWithoutRecordLevelmarkerer/Recorduden en/RecordLevel;pvviGtsXidNotUuidmarkerer en/GTS_XID, der ikke er et RFC 4122 uuid: URI;pvviGtsEnvMissingmarkerer en manglende/GTS_Env, når/GTS_Scopeer Stream eller Global (§6.7.4) - MIME-forward-reference-detektion (Annex A.2):
vtmviForwardReferencemarkerer en inline PDF, der citerer et filnavn (via/EF /F), der ikke er introduceret af en tidligere vedhæftningsdel i streamen
Rettet (Fixed)
ExtractNodeNameListFromPdfogExtractRecordLevelFromPdfiFPdfPdfvtMimeløste en tilbagevendende off-by-one, hvor den 1-baserede forskydning, der returneres afAnsiFindKey, blev behandlet som en absolut byte-forskydning i den udvidede PDF
Version 2.5.0
Tilføjet (Added)
- PDF/VT Document Part Metadata (DPM, ISO 16612-2 §6.6):
TPdfVTSaveOptionsfikDpmEntriesogDpmTarget, så en skribent kan vedhæfte en/DPM-ordbog til den syntetiserede DPart-node, med nøglenavns-validering mod Annex E second-class-prefix-reglen og §6.6 NMTOKEN- / unikheds- /GTS_Managed-form-reglerne på validatorsiden - PDF/VT-2s streaming-udveksling (Annex A): den nye
FPdfPdfvtMime-enhed levererBuildPdfVT2sStreamogValidatePdfVT2sStreamtilmultipart/mixed-MIME-kuverten, der bærer inline PDF/VT-chunks plus vedhæftede ICC-profiler, medX-PDFVT-Stream-version: 1-header-ordeningsreglen og kryds-streamNodeNameList-konsistenskontrol TPdf.ValidatePdfVTudfører nu en autoritativ JavaScript-acttion-tælling viaFPDFDoc_GetJavaScriptActionCount, hvilket supplerer byte-niveau/JavaScript-navnescanningen
Rettet (Fixed)
- PDF/VT
Trapped-korrekthed på PDF/X-4-basen:ptvUnknown-enumværdien er fjernet (PDF/X-4 forbyder/Unknown),ptvUnspecifiednormaliseres til/Falseved skrivning (en manglende/Trappeder også forbudt), og et nytpvviTrappedInvalid-problem markerer en fraværende ellerUnknown-værdi ValidatePdfVTComplianceudvider nu objektstreams (PdfExpandObjectStreams) før scanning, så et katalog-, OutputIntent- eller Metadata-ordbog lagret inde i en komprimeret ObjStm (PDF 1.5+, typisk for PDF/X-4-producenter) kan nås af byte-niveau-opslag
Ændret (Changed)
- PDF/VT-1 arver nu de fulde PDF/X-4-indholdsforbud:
pvviAcroFormForbidden(/AcroFormeller/XFA),pvviAdditionalActionsForbidden(katalog/AA),pvviMissingTrimBoxogpvviReferenceXObjectForbidden(Reference XObject, kun X-5g/5pg) - Kryds-standard-deduplikering:
BuildDictObj,IccComponentCount, den indbyggede sRGB ICC-profil (GetSrgbIccProfile),PdfTextStr,PdfEnclosingObjNum,PdfDictRefNumogPdfExpandObjectStreamsblev forfremmet fra tredoblede lokale kopier iFPdfPdfa/FPdfPdfx/FPdfPdfvttil en enkelt kanonisk hjem iFPdfPdfCommon; den 3144-byte ICC-literal findes nu nøjagtigt én gang i kodebasen
Version 2.4.0
Rettet (Fixed)
InjectPdfUaMarkerstaber ikke længere trailerens/Info-reference på en cross-reference-stream base: den lokaleSourceTrailerInfoRef(som manglede xref-stream fallback) er blevet erstattet af den fællesPdfSourceTrailerInfoRef(forfremmet fra PDF/A-kopien, som har haft denne fallback siden v2.0.0)- Den fælles
PdfReadStreamBytesunderstøtter nu indirekte/Length N G R-referencer (porteret fra den lokale PDF/A-kopi), så PDF/VT-, PDF/R- og PDF/E-validatorer ikke længere læser forkert eller springer XMP-metadatastrømme over, som er oprettet af værktøjer, der bruger indirect Length (Acrobat, Ghostscript)
Ændret (Changed)
- Deduplikering på tværs af standarder: de lokale kopier af
PdfReadTraileriFPdfPdfaogFPdfPdfx, de lokale kopier afSourceTrailerInfoRefiFPdfPdfaogFPdfPdfuasamt den lokalePdfReadStreamBytesiFPdfPdfaer blevet slettet — de fællesFPdfPdfCommon-versioner gælder nu overalt; dette fjerner ca 330 linjer duplikeret kode og eliminerer vedligeholdelsesbyrden ved at holde kopier synkroniseret - Lukning af PDF/X test-gæld: syv content-class enums, som tidligere havde nul dækning, har fået positive test (
pvxiLzwForbidden,pvxiJavaScriptForbidden,pvxiFormFieldsForbidden,pvxiAdditionalActions,pvxiEmbeddedFilesForbidden,pvxiMissingTrimBox,pvxiTrappedNotSet)
Version 2.3.0
Ændret (Changed)
- Lukning af PDF/A test-gæld fortsætter: yderligere tre enums med nul dækning har fået positive test;
pvaiForbiddenRenderingIntent(§6.2.9) markerer et ikke-standardiseret rendering-intent navn i en content stream;pvaiJpeg2000Violation(§6.2.2) markerer et JPXDecode-billede med/NumComponentsuden for {1,3,4} i Part 2;pvaiInlineImageLzwForbidden(§6.1.10) markerer et integreret billede, der bruger LZW-filteret i Part 2
Version 2.2.0
Ændret
- Regresstest for krydsreference-stream: den eksisterende
Validate_XrefStreamTrailer_DetectsConformanceverificerer nu også, at katalogets/Metadata-reference løses, og at XMPpdfaid:partlæses på en xref-stream-base (ikke kun/Root+/ID); en nyInjectPdfA_XrefStreamBase_RoundTrips-test beskytter injektorens xref-stream-sti tilføjet i v2.0.0; to tværstandard-test (PdfE_XrefStreamBase_NotRejectedAsUnparsable,PdfR_XrefStreamBase_NotRejectedAsUnparsable) verificerer, at PDF/E- og PDF/R-validatorerne ikke længere afviser xref-stream-PDF'er som uanalyserbare - Afvikling af PDF/A-testgæld:
Validate_MinimalPdf_FlagsRequiredMarkersfastslår, at en helt minimal PDF udløserpvaiMissingPdfAIdentifier,pvaiMissingOutputIntent,pvaiMissingIccProfile,pvaiMissingXmpMetadataogpvaiMissingXmpDates— hvilket lukker symmetrigabet med PDF/E- og PDF/X-validatorerne, som allerede havde tilsvarende test; yderligere to enums med nul dækning fik positive test:pvaiUnembeddedFontogpvaiSubsetMissingCidSet
Version 2.1.0
Rettet
- PDF/E blev utilsigtet udeladt af rettelsen af krydsreference-stream i v2.0.0: både
InjectPdfEMarkersogValidatePdfECompliancekaldte stadigPdfReadTrailerudenAcceptXrefStream, hvilket medførte, at PDF/E-injektoren fejlede lydløst på PDF 1.5+-output (pdfiums standardindstilling forSaveAsCopy); begge kaldesteder overfører nuTrue - Den delte
PdfReadTrailerkrydsreference-stream-fallback indeholder nu/Type /XRef-beskyttelsen, som de lokale kopier af PDF/A og PDF/X allerede havde, så et beskadigetstartxref-offset, der peger på en urelateret ordbog, fejler rent i stedet for at blive fejlfortolket som traileren - Løseren for indirekte referencer af
/LangiValidatePdfUaCompliance(v2.0.0) var utilgængelig:PdfFindObjDictfinder kun<<-ordbøger, men et/Lang-strengobjekt er(...)eller<...>uden nogen ordbog; erstattet med en direkte scanning af objektets krop, der lokaliserer streng-tokenet
Ændret
- Syv redundante skygge-hjælpefunktioner (PdfStructureBytes, PdfHasName, PdfCountName, BuildStreamObj), som var byte-identiske kopier af de delte versioner i
FPdfPdfCommon, er blevet fjernet fraFPdfPdfaogFPdfPdfua— de delte versioner gælder nu overalt viauses
Version 2.0.0
Rettet
- Lydløs fejl på tværs af standarder: den delte hjælpefunktion
PdfReadTrailer(der bruges af markørinjektorer og -validatorer for PDF/UA, PDF/X, PDF/VT og PDF/R) accepterer nu enAcceptXrefStream-parameter og falder tilbage på objektordbogen for krydsreference-stream, når intettrailer-nøgleord er til stede (PDF 1.5+); tidligere medførte pdfiumsSaveAsCopy-output (som bruger en krydsreference-stream), at enhver markørinjektor fejlede lydløst — kildebytene blev kopieret uændret igennem, og kaldet returnerede stadig succes; PDF/R-1.0-valideringen (hvis PDF 2.0-base altid er en krydsreference-stream) var reelt uden virkning, og PDF/A-validatorens modne implementering blev porteret til den delte hjælpefunktion, så alle standarder drager fordel af det - Scanning af trailer-ordbogen i
InjectPdfUaMarkersogInjectPdfAMarkersbruger nu den dybdebevidstePdfDictEndi stedet for en simpel søgning efter>>, så en trailer, der indeholder en indlejret ordbog (f.eks./Encrypt << ... >>), ikke længere afkortes før en efterfølgende/Info-post
Ændret
TPdf.ValidatePdfUaundertrykker nu den grovepvuaiFontNotEmbeddedpå byteniveau, når den præcisepvuaiPdfiumFontNotEmbeddedfra Pdfium-objektmodellen allerede er udløst, så preflight-rapporten ikke længere indeholder to næsten identiske "indlejr dine skrifttyper"-rækker for den samme fejlpvuaiLangInvalidFormat(§7.2) løser nu en indirekte reference af/Lang(N 0 R) til dens strengobjekt og validerer indholdet, så et sprogtag med indirekte reference ikke længere er en blind vinkel
Version 1.99.0
Rettet
pvuaiLangInvalidFormat(§7.2) lader ikke længere hex-kodede/Lang-strenge slippe igennem uden validering: UTF-16BE-par (med enFE FFBOM) og rene ASCII-hexstrenge afkodes nu og køres gennem den samme BCP 47-grammatikkontrol som bogstavelige(...)-strenge, så en fejlbehæftet hex-/Langfanges, mens en overensstemmende (f.eks. en UTF-16BEen-US) ikke længere risikerer at blive flaget
Ændret
pvuaiFontMissingToUnicode(§7.21.7) fritager nu/MacExpertEncodingsammen med/WinAnsiEncodingog/MacRomanEncoding, hvilket matcher de fire fritagelsesbetingelser, klausulen opregner
Version 1.98.0
Tilføjet
pvuaiNeedAppearancesTrue(§7.18.4) markerer en AcroForm, hvis/NeedAppearances-flag er sandt, så widget-udseender ikke låses pålideligt, og hjælpemiddelteknologi ikke kan associere dem med strukturtræet; porteret fra PDF/A-valideringen og begrænset til tilstedeværelsen af/AcroFormfor at indsnævre scanningsområdet
Ændret
- veraPDF-korpusregression: forbandt §7.20 Reference-XObject pass+fail-parret og §7.21.4.2 subset CharSet/CIDSet pass+fail-parrene til
Live_Corpus_ValidatePdfUaMatchesConformance; §7.21.7 ToUnicode-forbidden-value og §7.18.6.2 media-clip pass-eksemplerne blev også forbundet som beskyttelse mod falske positive (deres fail-eksempler bruger ordbogslayouts, som scanningen på byteniveau ikke fanger, så kun pass-siden er forbundet) - Korpus-pass-path-assertionslisten fik 15 nye beskyttelser mod falske positive, så enhver aktiv
pvuai*-kontrol på byteniveau og strukturniveau nu afprøves mod overensstemmende eksempler (tidligere var kun ~30 af de 60 active problemer beskyttet);pvuaiLangInvalidFormat-beskyttelsen blev bevidst udeladt, fordi kontrolenheden på byteniveau konservativt markerer hex-kodede/Lang-strenge, som den ikke kan afkode
Version 1.97.0
Rettet
- Hærdning af
ValidatePdfUaStructureElements:EnclosingTable-forældrekædegennemløbet har nu en hop-tæller (begrænset af elementantallet), så en fejlbehæftetParentIndex-cyklus på et syntetisk strukturelement-array ikke længere kan hænge kalderen;ValidatePdfUaPageContentTagging-allokeringen af mærket-indhold-ID-arrayet er nu begrænset til maksimalt en million poster, hvilket forhindrer en multi-GB-allokering ved en fejlbehæftet/ondsindetMarkedContentID
Ændret
- Dokumentationskommentaren til
pvuaiOrderedListMissingListNumbering-enum'en beskriver nu præcist, hvad kontrollen gør: den markerer etL-element, hvisListNumbering-værdi ligger uden for ISO 32000-1 Tabel 347-sættet (et manglende attribut markeres ikke); den tidligere kommentar antydede, at den også registrerede ordnede lister, der manglede attributtet, hvilket implementeringen ikke gør - De to
7.21.3.3-t02WMode-mismatch korpus-fail-eksempler er nu forbundet tilLive_Corpus_ValidatePdfUaMatchesConformance— siden v1.95.0 er CMap-streamen FlateDecode-dekomprimeret, så ordbogs- mod indholdssammenligningen nu kører på en læsbar side; den forældede kommentar om "ikke forbundet" blev fjernet
Version 1.96.0
Tilføjet
- Konsistens på tværs af standarder:
TPdf.ValidatePdfUafår to kontroller porteret fra PDF/A-valideringen;pvuaiAnnotationFlagsViolation(§7.18.1) markerer en ikke-fritaget annotation, der bærer flaget Hidden / Invisible / NoView flag, hvilket afbryder læsestrømmen for hjælpemiddelteknologi;pvuaiActionTargetMissing(§7.18.5) markerer en GoToR / URI / SubmitForm-handling, der mangler sin krævede målnøgle (/F+/D, /URI, /F), hvilket gør linket ubrugeligt for hjælpemiddelteknologi
Rettet
- Strukturtræ-sammenfletning på tværs af sider:
AllElems-akkumuleringsløkken iTPdf.ValidatePdfUagenberegner nu hvert elementsParentIndexfra det side-lokale array to det sammenflettede array; uden dette beholdt side 2's underordnede elementer et side-lokalt indeks, der pegede ind i side 1's del, hvilket lydløst korrumperede enhver ParentIndex-afhængig kontrol (tabel/listestruktur, §7.4.4 H-underordnede antal, EnclosingTable) - RoleMap-parsing:
PdfReadRoleMapPairsafbryder ikke længere hele nøgle/værdi-scanningen, når en værdi er en indirekte reference (N 0 R) eller et array ([...]) — begge er gyldige RoleMap-former i henhold til ISO 32000-1 14.8.5.1; den springer nu blot den post over (Continue) i stedet for at afbryde (Break), hvilket eliminerer falske positive forpvuaiRoleMapUnresolvedpå typer, der er tilknyttet efter en indirekte post eller et array
Ændret
FPdfPreflightReport: 18 aktiveTPdfUaValidationIssue-værdier, som tidligere faldt igennem til opsamlingskategorien "manglende markør" og anbefaling, bærer nu nøjagtige kategorier (Structure / Content / Metadata / Security) og klausulspecifikke anbefalinger; rettede også stavefejlenpuaNone / pua1→pucNone / puc1iPDFSpecComplianceMatrix.md
Version 1.95.0
Ændret
- Gennemgang af
TPdf.ValidatePdfUa-præcision: §7.21.3.3-kontrollenpvuaiCMapWModeMismatchog §7.21.7-kontrollenpvuaiToUnicodeForbiddenValuedekomprimerer nuFlateDecode-komprimerede CMap / ToUnicode-streams før scanning (tidligere blev kun ukomprimerede streams vurderet, hvilket var en kendt falsk negativ); de deltePdfInflate/PdfReadAndDecodeStream-hjælpere blev flyttet op fraFPdfPdfa/FPdfPdfxtilFPdfPdfCommon, så alle overensstemmelsesenheder deler samme kopi
Tilføjet
pvuaiSubsetCharSetEmpty(§7.21.4.2) markerer en Type 1-undergruppe-FontDescriptor, der bærer en/CharSet-nøgle, hvis strengværdi er tom — den eksisterendepvuaiSubsetMissingCharSetfangede kun en manglende nøgle; en tom/CIDSetmarkeres ikke, da en skrifttype uden CID'er legitimt kan bære et tomt bitmap
Version 1.94.0
Tilføjet
- Anden gennemgang af
TPdf.ValidatePdfUalukkede seks ISO 14289-1-huller, der blev afdækket ved en gennemgang klausul for klausul og en genscanning af oprindelige Pdfium-API'er, der allerede var pakket ind, men ubenyttede af PDF/UA-stien;pvuaiHeadingFormatInvalid(§7.4.3) markerer brugerdefinerede overskriftsmærker, der starter med H, men indeholder separatorer, mellemrum eller romertal i stedet for rene arabiske tal;pvuaiMissingDocumentOutline(§7.17, bør) markerer et flersidet dokument, der ikke indeholder et bogmærkeomrids (enkeltsidede dokumenter er fritaget);pvuaiStructElementLangInvalid(§7.2) markerer en strukturelement-/Lang-værdi, der ikke er et gyldigt BCP 47-mærke;pvuaiWidgetMissingPrintField(§7.14 / §7.18.4) markerer et Widget-strukturelement, der mangler attribut-ejeren PrintField;pvuaiLinkNotInStructureTree(§7.18.5) markerer et dokument, hvis/Subtype /Link-annotationer ikke er eksponeret som Link-strukturelementer;pvuaiPdfiumAnnotationMissingContentsogpvuaiPdfiumLinkMissingContents(§7.18.1 / §7.18.5) tilføjer en præcis Pdfium-objektmodelannotationsscanning, som fritager skjulte, Popup-, Widget- og annotationer uden for CropBox — hvilket eliminerer falske positive fra heuristikken på byteniveau, som ikke kan læse/F-flag eller/Rect
Version 1.93.0
Tilføjet
TPdf.ValidatePdfUalægger nu et lag med en Pdfium-objektmodelgennemgang oven på kontrollen på byteniveau, hvilket afspejler arkitekturen fra PDF/A runde 7: det gennemløber hver sides tekstobjekter viaFPDFTextObj_GetFont→FPDFFont_GetIsEmbedded(pvuaiPdfiumFontNotEmbedded, §7.21.4) og scanner hvert tegn viaFPDFText_HasUnicodeMapError(pvuaiPdfiumUnicodeMapError, §7.21.7) ogFPDFText_GetUnicode(pvuaiPdfiumNotDefGlyph, §7.21.8) — mere præcist end heuristikken på byteniveau, som kun udløses, når der ikke findes nogen skrifttypeprogrammer, eller der slet ikke optræder/ToUnicode; gennemløbet afbrydes på tre niveauer: sideløkken afsluttes, når alle tre problemer i Pdfium-laget allerede er fundet, løkken per objekt afsluttes ved den første ikke-indlejrede skrifttype, og tegnscanningen springer.notdef-gennemgangen over, nårUnicodeMapErrorallerede er ramt; PDF/UA var den sidste PDF-standardvalidering uden et Pdfium-objektmodellag
Version 1.92.0
Tilføjet
- Oprettede
Tests.PdfR— den første testfil til PDF/R-1-valideringen (FPdfPdfr), som dækker header-validering, forbud mod ObjStm, raster-markør-detektering og en beskyttelse mod falske positive i rene filer; alle seks PDF-standardtestsuiter har nu dedikerede testfiler: PdfA(80), PdfUa(101), PdfX(7), PdfE(5), PdfVT(15), PdfR(4) = i alt 212 tests
Version 1.91.0
Tilføjet
ValidatePdfEogValidatePdfVTfik kontroller på indholdsniveau, som tidligere kun var tilgængelige i PDF/A-, PDF/UA- og PDF/X-valideringerne:pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden(kun PDF/E),pveiEmbeddedFilesForbidden(kun PDF/E),pveiOpiForbidden,pvviLzwForbidden,pvviJavaScriptForbidden,pvviEmbeddedFilesForbidden,pvviOpiForbidden;TPdf.ValidatePdfEogTPdf.ValidatePdfVTfår også et Pdfium-objektmodellag (pveiPdfiumFontNotEmbedded/pvviPdfiumFontNotEmbedded), der gennemløber sidetekstobjekter viaFPDFFont_GetIsEmbeddedog afbrydes ved den første ikke-indlejrede skrifttype
Version 1.90.0
Tilføjet
TPdf.ValidatePdfXlægger nu et lag med en Pdfium-objektmodelgennemgang oven på kontrollen på byteniveau: det gennemløber hver sides tekstobjekter viaFPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedog rapporterer en ikke-indlejret skrifttype sompvxiPdfiumFontNotEmbedded— mere præcist end heuristikken på byteniveau, som kun udløses, når der ikke findes nogen skrifttypeprogrammer; gennemløbet afbrydes ved den første fundne ikke-indlejrede skrifttype
Ændret
- Gennemløb af strukturtræ i
TPdf.ValidatePdfUa: det sidevise kaldValidatePdfUaPageContentTagging(som opbygger et kort over mærket-indhold-ID-krav og krydskontrollerer ethvert tekst/billedobjekt) springes nu over på efterfølgende sider, når førstpvuaiUntaggedContenter fundet — strukturelementer indsamles stadig til kontrol på tværs af sider (entydigt note-ID, overskriftssekvens), men det dyre sidevise indholdstaggingsgennemløb stopper tidligt
Version 1.89.0
Ændret
- Ydeevne for
TPdf.ValidatePdfA-hjælpens Pdfium-objektmodellag: gennemløbet af side/objekt afbrydes nu på tre niveauer — sideløkken afsluttes, når alle relevante problemer i Pdfium-laget allerede er fundet, løkken per objekt afsluttes, når begge problemer per objekt (skrifttypeindlejring + gennemsigtighed) er sat, og tegnscanningen på tekstsiden springer.notdef-gennemgangen over, nårUnicodeMapErrorallerede er ramt;Assigned()-kontroller af API-tilgængelighed og overensstemmelsesflag caches i lokale booleans én gang før løkken i stedet for at blive evalueret for hver side/objekt/tegn; på et stort ikke-overensstemmende dokument kan gennemløbet nu stoppe efter første side i stedet for scanning af alle sider; på et overensstemmende dokument er belastningen per side lavere (ingen gentagneAssigned-kald)
Version 1.88.0
Tilføjet
ValidatePdfXfik otte nyeTPdfXValidationIssue-værdier på indholdsniveau, der dækker print-udvekslingsrestriktioner, som PDF/X pålægger ud over filformatmarkører:pvxiLzwForbidden(/LZWDecode),pvxiJavaScriptForbidden(/JavaScript),pvxiFormFieldsForbidden(/AcroForm//XFA),pvxiAdditionalActions(/AA),pvxiEmbeddedFilesForbidden(/EmbeddedFiles//FileAttachment),pvxiOpiForbidden(/OPI//Alternates),pvxiMissingTrimBox(ingen/TrimBoxpå nogen side) ogpvxiTrappedNotSet(/Trappedmangler eller er/Unknown); PDF/X-valideringen kontrollerede tidligere kun XMP/OutputIntent-markører; dette er dens første gennemløb på indholdsniveau; de delte hjælperePdfStructureBytes/PdfHasName/PdfCountNameblev tilføjet tilFPdfPdfCommon, så alle overensstemmelsesenheder kan bruge dem
Version 1.87.0
Tilføjet
- PDF/UA-validering dækker nu ISO 14289-1 §7.21.3's regler for sammensatte skrifttyper:
pvuaiCidSystemInfoMismatchmarkerer Type0-skrifttyper, hvis indlejrede CMap og den afledte CIDFont er uenige omRegistry/Ordering, eller hvis CIDFontensSupplementoverstiger CMap'ens,pvuaiCMapNotEmbeddedmarkerer CMap'er, der er refereret ved navn (somEncodingellerUseCMap), og som ikke er foruddefinerede CMap'er ifølge ISO 32000-1 Tabel 118, ogpvuaiCMapWModeMismatchmarkerer indlejrede CMap'er, hvis ordbogs-WModeafviger fra WMode i deres strømindhold
Rettet
- §7.21.3.2-kontrollen
pvuaiCidFontMissingCidToGidMapgik glip af CIDFontType2-ordbøger, hvis nøgle/værdi-par forSubtypeer adskilt af et linjeskift, og markerer nu også enCIDToGIDMap-navneværdi, der ikke erIdentity
Version 1.86.0
Tilføjet
- PDF/UA-validering dækker nu ISO 14289-1 §7.21.6's kodningsregler for TrueType:
pvuaiTrueTypeEncodingInvalidmarkerer ikke-symbolske TrueType-skrifttyper, hvisEncodingmangler eller hverken erMacRomanEncodingellerWinAnsiEncoding(direkte eller viaBaseEncoding), ogpvuaiSymbolicTrueTypeEncodingmarkerer symbolske TrueType-skrifttyper med et ikke-standardEncoding-navn
Version 1.85.1
Ændret
- ISO 14289-1 §7.18.3's fane-rækkefølge-kontrol
pvuaiMissingTabsOrderkører nu per side: enhver side med annotationer skal angive/Tabs /Si sin egen sideordbog, så en side, der overholder kravene, ikke længere kan skjule en side uden
Version 1.85.0
Tilføjet
- PDF/UA-validering skelner nu mellem dynamiske og statiske XFA-formularer i henhold til ISO 14289-1 §7.15:
pvuaiXfaDynamicmarkerer formularer, hvis XFA-konfiguration sætterdynamicRendertilrequired
Ændret
- Det tidligere generelle XFA-kandidat-flag
pvuaiXfaPresentudgår og udløses ikke længere (statisk XFA overholder §7.15); enum-værdien bevares af hensyn til API-kompatibilitet
Version 1.84.0
Tilføjet
- PDF/UA-validering registrerer nu umærket reelt indhold, som krævet af ISO 14289-1 §7.1:
pvuaiUntaggedContentmarkerer renderede tekst- og bildeobjekter, der hverken er inkluderet i sidens strukturtræ (via deres mærket-indhold-ID'er) eller markeret som et Artifact - Nye sideniveau-hjælpere
GetPageContentMarkInfosogValidatePdfUaPageContentTaggingmedTPdfPageContentMarkInfo-recorden til direkte brug
Version 1.83.0
Tilføjet
- PDF/UA-validering håndhæver nu ISO 14289-1 §7.4.4's overskriftsmodel:
pvuaiHeadingModelMixedmarkerer dokumenter, der blander det generiskeH-tag med nummereredeH1..Hn-overskrifter, ogpvuaiHeadingMultipleInNodemarkerer strukturnoder med mere end én underordnetH-overskrift
Version 1.82.0
Tilføjet
- PDF/UA-validering løser nu det RoleMap, der kræves af ISO 14289-1 §7.1:
pvuaiRoleMapRemapsStandardmarkerer RoleMap-poster, der omdefinerer en standard strukturtype, ogpvuaiRoleMapUnresolvedmarkerer anvendte ikke-standard strukturtyper, hvis RoleMap-kæde er manglende, brudt eller cirkulær — indirekte kæder, der når en standard type, accepteres, og ubrugte RoleMap-poster bedømmes aldrig - Nye hjælpere
PdfUaIsStandardStructType,PdfReadRoleMapPairs(med PDF-navne-#hh-escape-afkodning) ogValidatePdfUaRoleMapUsagetil direkte brug
Version 1.81.0
Tilføjet
- PDF/UA-validering dækker nu den ISO 32000-1-listemærkning, der kræves af ISO 14289-1 §7.6:
pvuaiListStructureInvalidmarkerer LI-elementer uden for en L-container og Lbl/LBody-dele uden for et LI-element, mens indlejrede lister og den legitime Lbl-brug inden i Note- og BibEntry-elementer accepteres
Version 1.80.0
Tilføjet
- PDF/UA-validering dækker nu den ISO 32000-1-tabelmærkning, der kræves af ISO 14289-1 §7.5:
pvuaiTableStructureInvalidmarkerer TH/TD-celler uden for en TR-række og rækker eller rækkegrupper uden for deres Table-container,pvuaiTableHeaderMissingScopemarkerer headerceller, hvis relation hverken kan bestemmes via et Scope-attribut eller en Headers/ID-tilknytning, ogpvuaiTableHeadersUndefinedIdmarkerer Headers-referencer i dokumenter, der ikke definerer nogen struktur-element-ID'er TPdfStructureElementeksponerer tabelattributterneScope,HasHeaders,HeadersIds,ColSpanogRowSpan, der løses under struktur-træ-gennemgangen
Ændret
- Struktur-træ-gennemgangen læser nu alle layout- og tabelattributter i et enkelt gennemløb over hvert elements attributordbøger i stedet for én scanning per attribut
Version 1.79.1
Tilføjelser
- Porterede
AnnotationsLab-eksemplet til Lazarus og C++Builder, så det tilslutter sig det eksisterende Delphi-konsoleksempel
Rettelser
TPdf.CreateAnnotationkunne udløse “Cannot set attachment points” for markup-annotationer, der bruger quad-punkter (Highlight, Underline, StrikeOut, Squiggly), fordi den nye annotation endnu ikke havde nogen quad-slot at erstatte; den tilføjer nu den første quad i stedet
Version 1.79.0
Tilføjelser
- Nyt
AnnotationsLabDelphi-konsoleksempel: opretter Text, Highlight, Square og Circle annotationer, skriver dem til en PDF, genindlæser derefter filen og opregner sidens annotationsliste
Version 1.78.0
Tilføjelser
- Nyt
TPdf.MeasureTextogTPdf.MeasureTextWidth: måler den renderede bredde og højde af en streng for en given skrifttype og størrelse (PDF brugerenheder, 1 enhed = 1/72 tomme) uden at tilføje indhold til en side. Dette gør layout- og ordombrydningslogik mulig oven påAddText; leveres af det selvstændigeFPdfMeasuremodul som en klasse-hjælper - Nyt
TPdf.WrapText: grådig ordombrydning bygget påMeasureTextWidth, der deler tekst ved mellemrum og pakker ord i linjer, der ikke er bredere end en given bredde (PDF brugerenheder); et for langt enkeltord får sin egen linje (ingen orddeling inde i selve ordet), og returnerer de ombrudte linjer som et array
Version 1.77.0
Tilføjelser
ValidatePdfAfik tre nyeTPdfAValidationIssue-værdier, der dækker klausuler, som tidligere var klassificeret som “NEJ” eller “læseradfærd” i den tidligere gap-revision (tilføjede ordenstal, eksisterende værdier er uændrede):pvaiPdfiumNotDefGlyph(PDF/A-2 6.2.11.8 — et tegn, der løses til Unicode 0 uden en mapningsfejl, kørselssymptomet for en.notdef-glyfreference; detekteres via Pdfiums objektmodel-lag),pvaiWordBreakMissing(Level A 6.8.3.2 — en indholdsstrøm-show-streng længere end 20 tegn uden mellemrum, en sandsynlig overtrædelse af flettede ord; grov heuristik, der undgår CJK falske positiver), ogpvaiLinkActionMissingTarget(6.6.3 — en GoToR/URI/SubmitForm handling mangler sin visnings-målnøgle, så en læser ikke kan præsentere den)
Version 1.76.0
Tilføjet (Added)
ValidatePdfAfik tre nyeTPdfAValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvaiNameNotValidUtf8(PDF/A-2/3 6.1.8 — et/BaseFont- eller/FontName-token, der indeholder bytes ≥ 0x80, som ikke danner gyldig UTF-8),pvaiInlineImageLzwForbidden(PDF/A-2/3 6.1.10 — et inline-billede i en sideindholdsstrøm bruger LZW- eller Crypt-filteret) ogpvaiTrueTypeDifferencesForbidden(6.3.7 Cor.2 — en ikke-symbolsk TrueType-skrifttype, hvis Encoding-ordbog bærer/Differences)
Version 1.75.0
Tilføjet (Added)
ValidatePdfAfik tre nyeTPdfAValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvaiIntegerImplementationLimit(PDF/A-2/3 6.1.13 — en numerisk token, der overskrider den 32-bit signed integer-grænse på 2.147.483.647),pvaiBlendModeNotWhitelisted(PDF/A-2/3 6.2.10 — en/BM-værdi uden for standardsættet for blend-modes ifølge ISO 32000-1 §11.3.5; supplerer PDF/A-1pvaiTransparentColorSpace, som kun tillader Normal/Compatible), ogpvaiHexStringOddDigits(6.1.6 — en<...>hex-streng med et ulige antal hex-cifre)
Version 1.74.0
Tilføjet (Added)
ValidatePdfAfik tre nyeTPdfAValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvaiPermissionsViolation(6.1.12 — en/Perms-ordbog, der bærer/DigestLocation,/DigestMethodeller/DigestValuesammen med/DocMDP),pvaiTransActionForbidden(PDF/A-2 6.5.1 — en Trans-overgangshandling, fundet via/S /Transaction-dict-mønsteret for at undgå falsk matchning af/Transparency), ogpvaiPdfiumObjectTransparency(PDF/A-1 6.4 — et sideobjekt har ægte gennemsigtighed ifølgeFPDFPageObj_HasTransparency, hvilket udvider det Pdfium-objektmodellag, der blev introduceret i v1.73.0 for at fange blend-mode/soft-mask-effekter, som byteniveau-navnescanningen kan gå glip af)
Version 1.73.0
Tilføjet (Added)
TPdf.ValidatePdfAlægger nu et Pdfium-objektmodellag oven på inspektøren på byteniveau: den gennemgår hver sides tekstobjekter viaFPDFPage_GetObject→FPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedog rapporterer en ikke-indlejret renderet skrifttype sompvaiPdfiumFontNotEmbedded(ISO 19005 6.3.4), og indlæser hver tekstside for at scanneFPDFText_HasUnicodeMapErrorog rapporterer en ødelagt Unicode-mapning sompvaiPdfiumUnicodeMapError(6.3.8). Dette er kontroller, som inspektøren på byteniveau ikke kan udføre — den ser kun navne-tokens, ikke opløste skrifttypehåndtag eller mapningstilstand pr. tegn — og disse flettes ind i resultatet fra byteniveauet. Den selvstændige funktion på byteniveauValidatePdfAComplianceforbliver uændret
Version 1.72.0
Tilføjet (Added)
ValidatePdfAfik fem nyeTPdfAValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvaiNeedsRenderingPresent(PDF/A-2 6.4.2 — kataloget må ikke bære/NeedsRendering),pvaiDestOutputProfileRef(PDF/A-3 6.2.3 — en OutputIntent må ikke bære/DestOutputProfileRef),pvaiEmbeddedFileMissingUF(PDF/A-3 6.8 — en filspecifikation med/EFskal også bære/UF),pvaiXmpPacketBytesAttr(6.7.5 — XMP-pakkeheaderen må ikke bære den forældede attributbytes=ellerencoding=), ogpvaiAnnotationToggleNoView(PDF/A-2 6.3.2 — annotationens/FToggleNoView-bit, værdi 512, er forbudt)
Version 1.71.0
Ændret
ValidatePdfUaudløser nupvuaiOrderedListMissingListNumbering(ISO 14289-1 7.6): strukturtræsgennemløberen løserListNumbering-layoutattributten på hvertL-element via Pdfium-attribut-API'en og markerer enhver værdi uden for ISO 32000-1 tabel 347-sættet (Decimal,UpperRoman,LowerRoman,UpperAlpha,LowerAlpha,None,Circle,Disc,Square). En fraværende attribut markeres ikke, da listen kan være uordnet; dette lukker den sidste resterende ISO 14289-1-kløft, der blev registreret i slutningen af runde 5
Version 1.70.0
Tilføjet
ValidatePdfUafik fire nyeTPdfUaValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvuaiSubsetMissingCidSet(ISO 14289-1 7.21.4.2 — en CID-undergruppeFontDescriptorskal deklarere/CIDSet),pvuaiToUnicodeForbiddenValue(7.21.7 — et ToUnicode CMap må ikke mappe nogen kode tilU+FEFFellerU+FFFE; ukomprimerede strømme scannes for<FEFF>/<FFFE>-outputformerne),pvuaiLangInvalidFormat(7.2 —/Langskal være et gyldigt RFC 1766 / BCP 47-tag; en overbærende grammatik acceptereren,en-US,zh-Hans,es-419og markerer tydeligt ikke-overensstemmende værdier) ogpvuaiOrderedListMissingListNumbering(7.6 — bibeholdt for API-fuldstændighed; endnu ikke udløst af validatoren, fordi pålidelig skelnen mellem ordnede og uordnede lister kræverListNumbering-attributværdien, som strukturtræsgennemløberen ikke eksponerer)
Version 1.69.0
Tilføjet
ValidatePdfUafik to nyeTPdfUaValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvuaiWidgetOutsideForm(ISO 14289-1 7.18.4 — et Widget-strukturelement skal indlejres i etForm-element; strukturtræsgennemløberen verificerer nu hver Widgets direkte overordnede type) ogpvuaiSubsetMissingCharSet(7.21.4.2 — en Type 1-undergruppeFontDescriptorskal deklarere/CharSet, identificeret ved præfikset med seks bogstaver og+for undergruppenavn på/FontName)
Version 1.68.0
Tilføjet
ValidatePdfUafik to nyeTPdfUaValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvuaiUriActionIsMap(ISO 14289-1 7.18.5 — en URI-handlingsordbog må ikke bære/IsMapmed værdientrue, da det deaktiverer det tilgængelige linkmål) ogpvuaiHeadingSequenceViolation(7.4.2 — nummererede overskrifter skal starte vedH1, og en faldende rækkefølge må ikke springe et mellemliggende niveau over, f.eks. erH1→H3en overtrædelse). Overskriftskontrollen er den første PDF/UA-regel på strukturtræsniveau i validatoren:ValidatePdfUaStructureElementsgennemgår nu listen med typede elementer og verificererH1…H6(ogH7+ifølge 7.4.3)-rækkefølgen i dokumentrækkefølge
Version 1.67.0
Tilføjet
ValidatePdfUafik fem nyeTPdfUaValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvuaiLinkMissingContents(ISO 14289-1 7.18.5 — en Link-annotation skal bære en alternativ beskrivelse via/Contents),pvuaiAnnotationMissingContents(7.18.1 — enhver ikke-undtaget annotation uden/Contentsskal have en alternativ beskrivelse; Popup og Widget er undtaget),pvuaiEmbeddedFileMissingName(7.11 — en filspecifikationsordbog skal indeholde/Fog/UF),pvuaiMediaClipMissingAlt(7.18.6.2 — en medieklipdataordbog skal indeholde/CTog/Alt), ogpvuaiCidFontMissingCidToGidMap(7.21.3.2 — en indlejret Type 2 CIDFont skal indeholde/CIDToGIDMap)
Version 1.66.0
Tilføjet
ValidatePdfUafik fem nyeTPdfUaValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvuaiRoleMapMissing(ISO 14289-1 7.1 — et tagget dokument med ikke-standardstrukturtyper skal bære et/RoleMap),pvuaiOptionalContentAsKey(7.10 — en ordbog til konfiguration af valgfrit indhold må ikke bære/ASauto-state-nøglen),pvuaiXfaPresent(7.15 — en AcroForm/XFA-tilstedeværelse markeres, da dynamisk XFA er forbudt),pvuaiTrapNetAnnotation(7.18.2 —/TrapNet-annotationer er forbudt), ogpvuaiReferenceXObject(7.20 — Reference XObjects, baseret på/Ref-markøren, er forbudt)
Rettet
ValidatePdfUagiver ikke længere falsk positivepvuaiEncryptionPresentpå hver krypteret fil: PDF/UA tillader kryptering, så længe krypteringsordbogens/P-nøgle har bitposition 10 (værdi 1024) sat, hvilket giver adgang for hjælpemiddelteknologi (7.16). Den præcise overtrædelse rapporteres nu via den nyepvuaiEncryptionPBitMissing;pvuaiEncryptionPresentbibeholdes i enum'en for API-kompatibilitet, men udløses ikke længere af validatoren på byteniveau
Version 1.65.0
Tilføjet
ValidatePdfAfik fem nyeTPdfAValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvaiCidFontMissingCidToGidMap(ISO 19005-1 6.3.3.2 Cor.2 — en indlejret Type 2 CIDFont skal bære/CIDToGIDMap),pvaiSubsetMissingCharSet(6.3.5 — en Type 1-undergruppeFontDescriptorskal bære/CharSet),pvaiSubsetMissingCidSet(6.3.5 — en CID-undergruppeFontDescriptorskal bære/CIDSet),pvaiWidgetActionForbidden(6.6.1 — en Widget-annotation må ikke bære/Aeller/AA), ogpvaiOptionalContentAsKey(ISO 19005-2 6.9 — en ordbog til konfiguration af valgfrit indhold må ikke bære/ASauto-state-nøglen, hvilket er ny relevant, fordi PDF/A-2 tillader valgfrit indhold)
Version 1.64.0
Tilføjet
ValidatePdfAfik otte nyeTPdfAValidationIssue-værdier (tilføjede ordenstal, eksisterende værdier uændrede):pvaiHeaderBinaryMarkerMissing(ISO 19005-1 6.1.2 —%PDF-x.y-headeren skal efterfølges af en%-kommentar med mindst fire bytes større end 127),pvaiExternalStreamRef(6.1.7 — en strømordbog må ikke bære/F,/FFiltereller/FDecodeParms),pvaiOutputIntentScheme(6.2.2 — OutputIntent/Sskal være/GTS_PDFA1),pvaiInfoXmpDateMismatch(6.7.3 — InfoCreationDate/ModDateskal også fremgå somxmp:CreateDate/xmp:ModifyDate),pvaiMarkInfoMissing(6.8.2.2 — Niveau A kræver/MarkInfomed/Marked true),pvaiAnnotationApDictViolation(6.5.3 Cor.2 — annotationens/AP-ordbog må kun indeholde/N),pvaiEmbeddedFileMissingAFRelationship(ISO 19005-3 Annex E.2 — hver tilknyttet filspecifikation skal bære/AFRelationship), ogpvaiJpeg2000Violation(ISO 19005-2 6.2.8.3 — et JPEG2000-billede skal deklarere 1, 3 eller 4 komponenter)
Rettet
ValidatePdfAgiver ikke længere falsk positivepvaiAnnotationFlagsViolationpå dokumenter, der bruger et ressourcenavn på ét bogstav til skrifttype såsom/Font << /F 5 0 R >>; scanningen af/F-flaget er nu betinget af en annotationskontekst (/Subtypeaf en annotationstype), hvilket matcher den dokumenterede adfærd (6.5.3)ValidatePdfArapporterer nu kravet om PDF/A-3 tilknyttet fil pr. fil: et dokument markeres kun, når en indlejret/Type /Filespec, der refererer til en indlejret strøm via/EF, mangler/AFRelationship, i stedet for den tidligere alt-eller-intet-kontrol af hele dokumentet (ISO 19005-3 bilag E.2)- Tilføjede den udfasede
/SetState-handling til sættet af forbudte handlinger sammen med/SetOCGState, så navnet på PDF-referencehandlingen fanges direkte (6.6.1)
Version 1.63.0
Tilføjet (Tilføjet)
- Tilføjet
TPdf.MeasureTextogTPdf.MeasureTextWidth: måler den renderede bredde og højde af tekst med en given skrifttype og størrelse uden at tilføje indhold til siden (i PDF-brugerenheder, 1 enhed = 1/72 tomme), hvilket muliggør layoutberegninger og automatisk linjeskift oven påAddText; leveret af den selvstændige enhedFPdfMeasuresom class helper
Ændret (Ændret)
Demo\Delphi\MergePDF,Demo\CBuilder\MergePDFogDemo\Lazarus\MergePDFforbedret for alle tre IDE: sideintervalvalg pr. fil, valgfri outputsti, deduplicering, kørselslog, annulleringsknap og fletningsoversigt; bogmærker og metadata importeres fra den første kildeCreatePDF-demoer for alle tre IDE inkluderer nu en mulighed for europæisk tekst til at skrive accenttegn på tjekkisk, fransk, tysk, spansk, portugisisk, polsk og tyrkisk for at verificere skrifttypevalg og Unicode-håndtering (det tidligereEuropeanText-eksempel er integreret)- Fjernede eksemplerne
ExtractTextPagesogEuropeanText: side-for-side-tekstudtrækningsfunktionen iExtractTextPageser nu dækket af sideinterval- og sideadskillelsesmulighederne iExtractText; den flersprogede rendering afEuropeanTexter integreret iCreatePDF
Version 1.62.2
Rettet (Rettet)
- Gengenererede C++Builder-headerne (
.hpp) for hver RAD Studio-version og platform (Win32/Win64/Win64x); de var kommet ud af sync med Pascal-kilderne og efterlod forældede funktionssignaturer og manglende units, som nåede C++Builder-brugere via kildedistributionen
Version 1.62.1
Rettet (Rettet)
- Gendannede kildekompilering i RAD Studio 12 Athens og tidligere: en
TArray<Byte>-tildeling i PDF/UA-valideringsstien brugte en implicit array-konvertering, der kun findes i Delphi 13, og som ikke kunne kompileres i ældre IDEer
Version 1.62.0
Tilføjet (Tilføjet)
TPdf.RenderPageThumbnailrenderer enhver side efter indeks til et bitmap med tilpasset billedformat uden at ændre dokumentets aktuelle side, den indlæste side eller udløseOnPageChange
Rettet (Rettet)
TPdfThumbnailViewstyrer ikke længere værtsdokumentetsPageNumberunder tegning; tidligere genindlæste hver genoptegning sider, udløsteOnPageChangeog kasserede tekstsiden, hvilket kunne forstyrre en tilknyttetTPdfViewog udløse genoptegningssløjfer. Miniaturer renderes nu viaRenderPageThumbnailuden disse bivirkninger- PDF/X-overensstemmelsesvalidering inspicerer nu dokumenter med cross-reference streams (PDF 1.6, typisk for PDF/X-4) og objekter gemt i komprimerede object streams, i stedet for at rapportere sådanne filer samlet som ikke-overensstemmende; markøren
GTS_PDFXVersionlæses både fra elementform og RDF-attributform i XMP - PDF/R-validering rapporterer nu
pvriInfoXmpMismatch, når Info dictionary og XMP er uenige om Producer eller Creator; problemet var tidligere deklareret, men blev aldrig rejst - Form-fill-timere spores pr. anmodning, så et dokument, der kører flere timere på én gang (for eksempel et JavaScript-interval sammen med feltmarkørens blink), bevarer dem alle i stedet for at miste alle undtagen den seneste
TPdfView-tegning og de offentlige metoderRenderPage/RenderTileholder nu dokumentets renderlås og serialiserer mod worker-thread-rendering af sammeTPdf(PDFium er ikke thread-safe)- Ikke-ASCII-tekst skrevet til PDF/X-, PDF/R- og PDF/VT-metadata (OutputIntent-betingelsesnavne, Creator, Producer) kodes nu som en UTF-16BE-streng efter ISO 32000-1 §7.9.2.2 i stedet for rå UTF-8, som overensstemmende læsere ville læse forkert
- Overensstemmelseshjælpere læser indlejrede metadatastreams, hvor
/Lengther en indirekte reference, korrekt, indlæser kildebytes medReadBuffer(så en kort læsning fejler rent) og afviser et negativtstartxref-offset i stedet for at risikere læsning uden for området
Version 1.61.0
Ændret (Ændret)
- Rettelser af FFI/ABI-deklarationer, som kan kræve genkompilering af kode, der implementerede de berørte callbacks: form-fill-callbacken
FFI_OpenFilebruger nucdecl(Win32 stack convention), og parameterenvalueiFPDFAnnot_SetStringValueogFPDFAttachment_SetStringValueer nuFPDF_WIDESTRING(UTF-16LE), så den matcher PDFium-headerne - Progressive-load-callbacks
FX_FILEAVAIL.IsDataAvailogFX_DOWNLOADHINTS.AddSegmenttager nusize_t-offsets, ogsize_thar pointer-bredde på Free Pascal / Lazarus Win64 (tidligere afkortet til 32-bit), hvilket retter data-availability ogoutsize_tAPI-kald på FPC Win64
Rettet (Rettet)
- Hukommelsessikkerhed: en use-after-free af form-fill-timeren ved destruktion af en
TPdfmed aktiv AcroForm-markør; et dobbeltFPDF_CloseDocumentpå fejlstien iImportNPagesToOne; Pascal-exceptions, der slap ud gennemFPDF_FILEWRITE/FPDF_FILEACCESS-callbacks over C-grænsen under gemning og JPEG-indsættelse; samt et heltalsoverløb i tekstudtræk ved læsning fra et startindeks til sidens slutning TPdfFuture<T>leverer nu pålideligt sit resultat-callback; svaret blev tidligere næsten altid tabt (og kunne røre en frigivet thread), fordi workeren frigav sig selv, før det kølagte svar kørte- PDF/A-, PDF/X-, PDF/E-, PDF/R-, PDF/VT- og PDF/UA-output skriver nu cross-reference-poster, der er præcis 20 bytes, som krævet af ISO 32000-1 §7.5.4
- Indsættelse af standardmarkører ødelægger ikke længere en dictionary, når den fjernede nøgle (for eksempel
/Trapped) var sidste post, hvilket tidligere slugte den afsluttende>>og producerede et misdannet objekt - OutputIntent ICC profile streams deklarerer nu det krævede
/N-komponentantal for PDF/X og PDF/VT (allerede til stede for PDF/A); krypterede kildedokumenter dekrypteres, før PDF/X-, PDF/E-, PDF/R-, PDF/VT- og PDF/UA-markører indsættes, så outputtet er gyldigt i stedet for stille at blive beskadiget - UTF-8 xpacket BOM'en i genereret XMP udsendes som nøjagtige bytes, hvilket retter beskadigelse på Delphi-installationer, hvor ANSI-kodesiden ikke er Latin-1; trailers for trinvis opdatering bevarer nu dokumentets
/Info-reference SaveAsmed komprimering afkorter ikke længere streams, hvis/Lengther en indirekte reference, og genopbyggede cross-reference-tabeller bruger nu 20-byte-poster, rigtige generation numbers og fjerner den forældede/Prev-pointer- Conformance-validering læser XMP-versionsmarkører i attributform for PDF/E og PDF/X (så attribut-serialiserede PDF/X-4-filer genkendes), kræver den præcise
PDF/E-1-identifikator, læser metadata streams med indirekte/Lengthkorrekt og laver ikke længere falske matches på et structure elements/ID- eller/StructTreeRoot-nøgle ved kontrol af PDF/UA-traileren; et misdannetstartxref-offset udløser ikke længere en range error TPdfThumbnailView: den sidste side kan nu nås med rullepanelet, værtsdokumentets aktuelle side gendannes efter miniaturetegning, og standard mouse-leave-håndtering sendes igen- Gråtone-bitmaps for sider og billeder renderes ikke længere med forkert palet;
TPdfViewefterlades ikke længere med en dangling reference, når detsTPdffrigives først - Preflight-rapporter: HTML gemmes som UTF-8, så det matcher det deklarerede charset, og JSON-string-escaping producerer korrekte
\u-sekvenser for ikke-ASCII-tegn på Free Pascal - Trial builds: dialogen med trial-påmindelsen vises nu i stedet for at blive undertrykt, før den kunne nå at vises
TPdfStreamAdapterafviser nu streams større end 4 GiB med en klar fejl i stedet for stille at afkorte længden, der sendes til PDFium
Version 1.60.1
Ændret (Ændret)
- AccessibilityReader-demoerne til Delphi, Lazarus og C++Builder kører nu oplæsning på
TPdfReadingSession: hver side samles til ét talt stykke medBuildSpokenTextFromWords, SAPI-ordpositioner føderFeedSpokenPosition, og sessionen avancerer siderne og styrer visningens ordmarkør, hvilket erstatter den håndskrevne orkestrering som hvert demo tidligere bar rundt på - Ordniveau-karaokesporing i demoerne virker nu også, når NVDA er talemotoren:
EstimatePacingstyrer læsemarkøren efter forløbet taletid, hvor NVDA tidligere læste højt helt uden ordsporing - Pause og Resume i demoerne virker nu også med NVDA:
ResumeRestartsChunkgenoplæser den aktuelle side fra begyndelsen ved Resume, mens SAPI bevarer sin indbyggede pause og genoptagelse på stedet
Version 1.60.0
Tilføjet (Tilføjet)
- Live gengivelse til svagsynede på
TPdfView: de nyereInvert- ogreNightDuotone-renderingsindstillinger omfarver hver gengivet sideflise (fuld farveinversion eller en nat-duotonpalet), før søge-, markerings-, læse- og ordmarkør-overlays tegnes, så de eksisterende bitmap-farvetransformationer føres ind i den interaktive fremviser for både enkelt- og opslagslayout; skift af indstillingerne genmaler med det samme NightDuotoneInkogNightDuotonePaperkonfigurerer natpaletten, med standardværdi rav-tekst på en sort side;reInvertvinder, når begge indstillinger er sat
Version 1.59.0
Tilføjet (Tilføjet)
TPdfReadingSession: en tale-motor-neutral læs-højt-Orkestrerings-komponent. Den holder chunk-markøren, ordmarkøren og afspilningstilstanden (Play/PlayFrom/Pause/Resume/Stop), rykker gennem de indlæsteTPdfSpokenText-chunks, efterhånden som værten rapporterer motoren inaktiv viaTick, oversætter spoken-tekst-offsets tilbage til side-tegn og driver automatisk en ordmarkør på en tilknyttetTPdfView; værten forbinder en vilkårlig tale-motor viaOnSpeakog anmodningshændelserne for annuller / pause / genoptag, så biblioteket selv ikke linker nogen speech-APIFeedSpokenPositionbruger motorens ordpositioner (såsom SAPIStatus.InputWordPosition);EstimatePacingmedEstimatedWordsPerMinutestyrer motorer uden positionssignal;ResumeRestartsChunkgenoplæser den aktuelle blok for motorer uden indbygget pauseOnChunkChange,OnWordChangeogOnFinishedudløses kun ved reelle ændringer, og en frigivet tilknyttet visning kobler sig automatisk fra, så værtskoden forbliver flimmerfri og nedbrudssikker
Version 1.58.0
Tilføjet (Tilføjet)
EstimateSpokenWordIndexanslår, hvilket ord en talemotor er i gang med at udtale ud fra den forløbne tid og en ord-per-minut-hastighed, giver længere ord forholdsmæssigt mere tid, så motorer, der ikke rapporterer nogen ordposition (såsom NVDA controller-klienten), stadig kan styre læsemarkøren på ordniveau; kalderen leverer den forløbne tid, så rutinen forbliver uden eget ur og kan enhedstestes
Version 1.57.0
Tilføjet (Tilføjet)
- Spoken-tekst assembly with two-domain mapping for read-aloud tracking:
BuildSpokenTextFromWordsandSpokenTextAppendbygger strengen, der gives til en tekst-til-tale-motor, ud fra sidens ordbokse, mens en span-tabel registreres, ogSpokenToPageChartranslates an engine-reported spoken offset (such as SAPIStatus.InputWordPosition) back to the side character index, so word-level highlight tracking stays correct when the spoken tekst is not the whole side tekst (skipped regions, per-unit reading, pronunciation overrides) TPdfSpokenText- ogTPdfSpokenSpan-typer bærer den talte streng plus de kildeside-intervaller, den blev bygget fra; offsets på indsatte separatorer løses til det næste kortlagte ord, og offsets forbi de kortlagte kørsler rapporterer intet match
Version 1.56.9
Tilføjet
Demo\Delphi\PreflightReporttilføjer en Action Plan-forhåndsvisning, der kondenserer standarder, som ikke består, samt prioriteter, næste handlinger, problemkoder og anbefalinger til en afhjælpningschecklisteDemo\Delphi\PreflightReportCliacceptsplan/actionplansom et outputformat for enkeltfil- og batchkørsler og skriver den samme afhjælpningscheckliste til en tekstfil
Ændret
- Begge Delphi PreflightReport-demoer viser nu statusantal for pass / action / review sammen med det samlede antal standarder og problemer
Version 1.56.8
Ændret
ViewerInteractionLabindeholder nu kontroller til sidespring, manuelle zoomkontroller, klikbaseretDeviceToPage/PageToDevice-koordinatlogning og en tydeligere interaktionslog til kontrol af markering, søgning, rotation og navigationViewerInteractionLab-readme-siderne dokumenterer nu den tilføjede interaktionsarbejdsgang på tværs af det lokaliserede demo-readme-sæt
Version 1.56.7
Tilføjet
AccessibilityWorkbenchCliknytter hvert udløst fund til dets WCAG 2.1 Success Criteria og ISO 14289-1 (PDF/UA-1)-klausulområde og viser en standarddækningssektion i rapporterneAccessibilityWorkbenchCliberegner en dokumenteret 0-100 tilgængelighedsscore med en offentliggjort straf-rubrik og et excellent / good / needs work / poor-bånd, præsenteret pr. fil og som et batch-gennemsnitAccessibilityWorkbenchCliacceptererfailscore=Nfor at fejle kørslen (exit code 2), når en fil scorer under NAccessibilityWorkbenchCliskriver en SARIF 2.1.0-log, når batchoversigtsnavnet slutter på.sarif, med én regel pr. fundtype, der bærer dens WCAG 2.1- og PDF/UA-tags til CI- og code-scanning-indlæsningAccessibilityWorkbenchClitilføjer enversion-kommando, der udskriver den linkede PDFiumPas-version
Version 1.56.6
Tilføjet
IntakeWorkbenchCliberegner en SHA-256-forensisk hash for hver inputfil (nedgraderet tilunavailablepå compilere udenSystem.Hash) og rapporterer den i alle formaterIntakeWorkbenchCliacceptererpasswords=file.txtfor at prøve-låse op for adgangskode-krævende dokumenter fra en kandidatliste og registrerer det matchende kandidat-indeks uden nogensinde at logge adgangskodetekstenIntakeWorkbenchCliaccepterercopyto=dirfor at dirigere hver auditeret fil til en undermappe pr. risikoniveau og gøre auditøren til en intake-sortererIntakeWorkbenchCliskriver en SARIF 2.1.0-log, når batchoversigtsnavnet slutter på.sarif, med én regel pr. risikoindikator og ét resultat pr. markeret fil til CI- og code-scanning-indlæsningIntakeWorkbenchClitilføjer enversion-kommando, der udskriver den linkede PDFiumPas-version
Version 1.56.5
Tilføjet
IntakeWorkbenchCliudleder nu anbefalede handlinger efter intake såsom accept, request-password, manual-review, quarantine og deduplicate og viser handlingstal i batchoversigterAccessibilityWorkbenchCliudleder nu anbefalede afhjælpningshandlinger såsom pass-through, remediate-tags, run-ocr, remediate-semantics og manual-review med tilsvarende batch-handlingstal
Ændret
- Begge CLI-demoer i værktøjsklasse viser den anbefalede handling i konsol-, tekst-, HTML-, JSON- og CSV-output, så batchoperatører kan dirigere filer uden efterbehandling af risiko- eller statusfelter
Version 1.56.4
Rettet
- Aflæsning af annotationer, bogmærker eller link-annotationer i en løkke lækker ikke længere det forrige elements tekststrenge:
TPdfAnnotation-,TBookmark- ogTLinkAnnotation-resultatposter ryddes nu med managed-type-bevidst initialisering i stedet for rå hukommelses-nulstilling, så dokumenter med meget store antal tekstbærende annotationer ikke længere oppustert proces-hukommelsen i applikationens levetid - Destruktion af en
TPdf, der havde registreret enOnUnsupportedFeature-handler, løsriver den nu fra den proces-globale PDFium-tilbagekaldelse, så en senere dokumentindlæsning fra en andenTPdf-instans uden sin egen handler ikke længere kan dispatche ind i den frigivne komponent (use-after-free)
Version 1.56.3
Rettet
AccessibilityWorkbenchClitæller ikke længere blanke sider som heuristiske læserækkefølge-sider, så tagged dokumenter med tomme separator-sider bevarer deres korrekte tilgængelighedsstatus; sider uden læsbart indhold rapporteres nu separatAccessibilityWorkbenchClitilskriver ikke længere en ydre tabelTH-celler, der hører til en indlejret tabel, og navne på formularfelter og skrifttyper matches nu med forskel på store og små bogstaver, så forskellige felter ikke flettes sammenIntakeWorkbenchClifjerner nu userinfo-, query- og fragmentdele fra URL-værtsinventarer, så et konstrueret link somtrusted.example@evil.exampletilskrives den rigtige vært, ogmailto:-mål bidrager med deres domæne i stedet for at være usynligeIntakeWorkbenchCli-Markdown-rapporter escaper backticks i angrebs-kontrollerede stier, værter og vedhæftningsnavne, så rapportformatering ikke kan brydes indefra et dokument
Ændret
AccessibilityWorkbenchClirapporterer fejl i font-scan og form-field-scan som separate tællere, markerer ikke-indlejrede skrifttyper, der også har indlejrede forekomster, og afkorter lange skrifttypelister med en eksplicit trunkeringsmarkørIntakeWorkbenchCli-batchoversigter tilføjer en vedhæftnings-annotation-antalskolonne, og annotationstællingen pr. side er begrænset til 20000 annotationer pr. side med grænsen rapporteret i hvert format
Version 1.56.2
Tilføjet
AccessibilityWorkbenchCliauditerer nu skrifttypeindlejring, formularfelt-tooltips, læserækkefølge-kilde, dokument-omriss, tabel- og listestruktur, mistænkelig alternativ tekst og rigere per-side-gennemgangsdetaljer, så tilgængeligheds-batchrapporter identificerer flere remedieringsmålIntakeWorkbenchClirapporterer nu grænser for sidescanning, launch- og remote-go-to-handlinger, URI-værtsinventarer, annotationsantal, ikke-understøttede PDFium-funktioner, duplikerede dokumentidentifikatorer og udvidede risikoindikatorer til automatiseret intake-gennemgang
Ændret
IntakeWorkbenchCliaccepterermaxpages=Ni enkeltfil- og batchtilstand for at begrænse sidescanning pr. dokument, mens metadata-, vedhæftnings-, script-, XFA-, signatur- og risikorapportering stadig fuldføres
Version 1.56.1
Rettet
- Indlæsning af en ældre
pdfium.dll, som mangler en nyere eksport, fejler nu rent: fejlstien nulstiller hvert bundet API-indgangspunkt, såAssigned()-kontroller (for eksempel påFPDF_GetLastErrorellerFPDF_GetSecurityHandlerRevision) rapporterer biblioteket som ikke indlæst i stedet for at kalde ind i det allerede frigivne modul og crashe med en access violation UnloadLibrarynulstiller nu alle PDFium API-bindinger i stedet for kun de valgfrie V8-hjælpere, så ingen forældede funktionspointere overlever, efter DLL'en er frigivet
Version 1.56.0
Tilføjet
- Ordniveau-karaokemarkør på
TPdfView:TrackReadingWordAtmapper en tekst-til-tale-motors aktuelle ords tegnforskydning (såsom SAPIStatus.InputWordPosition) over på sidens ordbokse, fremhæver ordet, der indeholder den, som et særskilt overlay over læseblokken, ruller det ind i visning og returnerer ordindekset, så det talte ord lyser op, mens stemmen bevæger sig fremad SetReadingWordogClearReadingWordsætter eller rydder det fremhævede ord direkte fra enTPdfWordBox; at sætte det samme ord igen er et no-op, så sporing pr. ord aldrig får visningen til at flimreReadingWordColorogReadingWordFollowstyrer ordmarkørens farve og om visningen automatisk ruller det oplæste ord ind i synsfeltet
Version 1.55.2
Rettet
- ViewerInteractionLab giver nu værktøjslinjerækkerne mere lodret plads, så Open PDF, Create Sample, navigation, søgning og markeringskontroller ikke længere overlapper under skalerede skrifttyper
Version 1.55.1
Rettet
- ViewerInteractionLab placerer nu Prev, Next og Rotate på den anden værktøjslinjerække, så opstarts-overlap med Open PDF og Create Sample undgås
Version 1.55.0
Tilføjet
- Ord-til-markering-bro til læsning med "read it, select it":
TPdfView.SelectWordBoxogSelectWordSpanmarkerer en enkelt ordboks eller et same-side-interval af ordbokse (fraPageWordBoxes) efter deres tegnintervaller, så det ord eller den linje, der læses nu, også kan markeres og kopieres WordBoxIndexAtCharIndexmapper et tegnindeks tilbage til den ordboks, der indeholder det, og driver ord-for-ord-fremhævning, mens en TTS-læsemarkør avancerer
Version 1.54.0
Tilføjet
- Stemmeadgangsmetoder til formularudfyldning, der læser det fokuserede felt direkte fra den logiske markør:
FocusedFormFieldValue,FocusedFormFieldNameogFocusedFormFieldDetailspåTPdfogTPdfViewrapporterer det aktuelle felts værdi, menneskeligt læsbare navn (/TU-tooltip med fallback til/T) og heleTPdfFormFieldInfo(type, flags, options) — alt hvad en stemme-UI skal annoncere, når den går gennem en formular
Rettet
FocusedFormFieldValuelæser feltet viaFocusedFormFieldIndexi stedet for pdfium interaktivt fokus, så en stemmestyret formularudfylder får den rigtige værdi selv uden en synlig caret på skærmen (den eksisterendeFocusedFormFieldTextafspejler stadig pdfium-fokus og er uændret)
Version 1.53.0
Tilføjet
- Ord-niveau fremhævningsunderstøttelse:
TPdf.PageWordBoxesogTPdfView.PageWordBoxesopdeler en side iTPdfWordBox-poster, der hver bærer ordteksten, dens tegn-interval og et side-rum afgrænsningsrektangel, så en tilgængelighedslæser kan fremhæve hvert talt ord i træk ("karaoke"-læsning) ved at videregive rektanglet tilSetReadingHighlight BuildWordBoxeseksponerer tokenizer-trinnet selvstændigt og omdanner sidetekst til ord-bokse med tegn-intervaller
Version 1.52.0
Tilføjet
- Low-vision-rendering-hjælpere
InvertPdfBitmap,GrayscalePdfBitmapogDuotonePdfBitmapanvender in-place farve-transformationer på en rendered 32-bit bitmap, så en tilgængelighedslæser kan præsentere sider inverted / dark-mode, gråtoner eller i et brugerdefineret to-farve-skema (for eksempel en mørk baggrund med lys tekst) for low-vision-brugere - Transformationerne kører pr. pixel og opfører sig identisk på VCL og Lazarus/LCL, uden at ændre bitmapdimensionerne
Version 1.51.0
Tilføjet
- Sætnings-niveau læseenheder for assistiv lyttelæsning:
TPdf.ReadingUnits,TPdf.DocumentReadingUnitsogTPdfView.ReadingUnitslineariserer den læsbare indholdsstrøm til ordnede, sætnings-storeTPdfReadingUnit-poster — hver bærer teksten, der skal tales, plus dens semantiske type, side, fremhævningsrektangler og sprogtag, så en skærmlæser-app kan træde gennem en side eller hele dokumentet én talt enhed ad gangen - Semantisk navigation med
NextReadingUnitOfKind, så en stemme-UI kan hoppe til næste eller forrige overskrift, figur, listeelement eller tabelcelle uden at gennemgå strømmen manuelt BuildReadingUnitskonverterer enhverTPdfContentFragmentsdirekte til læseenheder: overskrifter og figur-/alt-beskrivelser forbliver hele, mens afsnit deles ved sætningsgrænser, decimalpunkter bevares, og læsemarkøren er et almindeligt kalder-ejet indeks
Version 1.50.0
Tilføjet
ValidatePdfAcan now inspect PDF 1.5+ documents that store the catalog, OutputIntent or other dictionaries inside compressed object streams (/Type /ObjStm). Objektstrømmene udpakkes, og de objekter, de indeholder, opløses, så sådanne dokumenter valideres ud fra deres eget indhold i stedet for at blive rapporteret som manglende deres PDF/A-markører
Version 1.49.5
Rettet
ValidatePdfArapporterer ikke længere en manglendepdfaExtension:schemas-beskrivelse som et problem. PDF/A-identifikatorskemaet (pdfaid) er velkendt, så hverken veraPDF eller PDF/A-2/-3 kræver en beskrivelse af udvidelsesskemaet for det, og markering af dets fravær fejlrapporterede alle konforme tredjeparts-PDF/A. Dokumenter, som biblioteket selv producerer, indeholder stadig beskrivelsen
Version 1.49.4
Rettet
ValidatePdfAregistrerer nu overensstemmelsesniveauet, når PDF/A-identifikatoren er skrevet som XML-attributter (pdfaid:part="2") i stedet for underordnede elementer, so attribute-form dokuments are no longer reported with an unknown level. This also corrects a cascade in which an undetected level made the part-specific checks fall back to the strict PDF/A-1 rules and wrongly flag embedded files and transparency that PDF/A-2 and PDF/A-3 permit
Version 1.49.3
Rettet
ValidatePdfAinspicerer nu PDF 1.5+-dokumenter, hvis krydsreference-data er en krydsreferencestream (filer, der ikke har nogentrailerkeyword). The conformance level, trailer/IDog de øvrige markører læses fra krydsreferencestream-dictionaryen, så sådanne dokumenter valideres på deres eget grundlag i stedet for at blive rapporteret som helt ikke-overensstemmende
Version 1.49.2
Rettet
ValidatePdfArapporterer ikke længere et falsk ikke-indlejret-skrifttype-problem på dokumenter, der indlejrer alle deres skrifttyper. Den tidligere heuristik sammenlignede antallet af/FontDescriptor-tokens mod indlejrede skrifttypeprogrammer, men hver indlejret skrifttype bidrager med to/FontDescriptor-tokens (skrifttype-ordbogsreferencen plus deskriptor-objektet), så hver indlejret-skrifttype-fil blev fejlagtigt markeret. Kontrollen rapporterer nu kun et dokument, der refererer skrifttyper, men slet ikke indlejrer noget skrifttypeprogram, hvilket matcher den tilsvarendeValidatePdfUa-rettelse
Version 1.49.1
Rettet
- PDF/A-output validerer nu som konform PDF/A-1b og PDF/A-1a med veraPDF: den indlejrede sRGB OutputIntent ICC-profilstream (refereret af
/DestOutputProfile) angiver nu det påkrævede/N-komponentantal (3 for den indbyggede RGB-profil), som krævet af ISO 19005-1 6.2.3.2. Dokumenter produceret afSaveAsPdfAfejlede tidligere streng PDF/A-1-validering, fordi destinationsprofilstreamen udelod/N; værdien udledes af ICC-profilhovedet, så en kalderleveret CMYK- eller Gray-profil også får det korrekte antal
Version 1.49.0
Rettet
ValidatePdfUarapporterer ikke længere falsk manglende XMP-identifikation på overensstemmende taggede PDF-filer — PDF/UA-identifikatoren (pdfuaid:part),dc:title, XMP-datoerne og trailerens/IDlæses nu fra de oprindelige dokumentbytes i stedet for den igen gemte kopi, som udelader/Metadata-XMP-streamen og, for krydsreference-stream-filer, trailerens/IDValidatePdfUa-skrifttypeindlejringskontrollen rettet, så et dokument, der indlejrer alle sine skrifttyper, ikke længere rapporteres som havende ikke-indlejrede skrifttyper; den markerer nu kun et dokument, der refererer skrifttyper, men slet ikke indlejrer noget skrifttypeprogramValidatePdfUaaccepterer nu etFormula-strukturelement, hvis alternative tekst leveres viaActualTextsnarere end enAlt-post (ISO 14289-1 §7.7), i overensstemmelse med den eksisterendeFigure-regel
Version 1.48.0
Tilføjet
- Programmatisk tekstmarkering på
TPdfView:SelectTextRange(efter side og tegn-interval) ogSetSelection(efter eksplicitte per-side-intervaller) vælger tekst fra kode — for eksempel for at læse og fremhævne et afsnit; begge gentegner og udløserOnSelectionChange, når markeringen ændres.SelectionRangeslæser den nuværende markering som per-side tegn-intervaller, ogSelectionRectanglesreturnerer sine rektangler i sidekoordinater til brugerdefineret fremhævning eller scroll-til
Version 1.47.0
Tilføjet
- Formfeltnavigation til stemmestyret formularudfyldning, både i
TPdfogTPdfView:FormFieldTabOrder,FocusedFormFieldIndex,FocusFormField,FocusNextFormField,FocusPreviousFormField,ClearFormFieldFocusogFocusedFormFieldText. Disse flytter en logisk feltmarkør over sidens widgetfelter i tabrækkefølge (med ombrydning i enderne), så en hjælpelæser kan gennemgå formularen, annoncere hvert felt viaFormFieldInfo[Index].AlternateName(tooltippet /TU) og udfylde det viaFormField[Index] TPdfView.OnFormFieldFocusChangehændelse, der udløses, når feltmarkøren flytter sig (og medbringer det nye feltindeks eller -1, når den ryddes)
Version 1.46.0
Tilføjet
- Assistiv lyttelæsnings-indholdsstrøm:
TPdf.ReadableContent,TPdf.ReadablePageContent,TPdf.DocumentReadableContentogTPdfView.ReadableContentreturnerer en ordnet liste af semantiskeTPdfContentFragment-elementer, der hver bærer den talte tekst (rigtige glyphs ellerActualText/Alt for figurer), en fragment-type (overskrift med niveau, afsnit, figur, listeelement, tabelcelle, link, almindelig), sprog, 1-baseret side samt blok- og per-linje fremhævningsrektangler. Tagged PDF'er lineariseres i logisk læserækkefølge fra strukturelt; untagged sider falder tilbage på render-rækkefølge, så ethvert dokument kan læses højt - Synkroniseret læsehøjlysning på
TPdfView:SetReadingHighlight,ClearReadingHighlightog den publiceredeReadingHighlightColorfremhæver den blok, der læses lige nu, oven på søge- og markerings-overlays - Nye offentlige typer
TPdfContentFragment,TPdfContentFragments,TPdfReadableContent,TPdfContentFragmentKindogTPdfReadingOrderSource, samt den nye hjælperClassifyStructType
Version 1.45.0
Tilføjet
ValidatePdfUagennemløber nu også det live tagged strukturtræ og rapporterer tre høj-sikkerheds indholdsovertrædelser, som byteniveau-scanning ikke kan detektere: etFigure-element uden hverken en Alt-post eller ActualText (ISO 14289-1, 7.3), etFormula-element uden en Alt-attribut (7.7) og etNote-element, der mangler et unikt ID (7.9). Tre nyeTPdfUaValidationIssue-værdier præsenterer disse:pvuaiFigureMissingAlt,pvuaiFormulaMissingAltogpvuaiNoteMissingId. Trægennemløb springes over for untagged dokumenter- Ny offentlig hjælper
ValidatePdfUaStructureElementsanvender disse strukturtræ-regler på en flad elementliste (som returneret afTPdf.StructureElements), så kontrollerne kan køres eller unit-testes uden at indlæse et fuldt dokument
Version 1.44.5
Rettet
ValidatePdfA-skrifttypeindlejringskontrollen (pvaiFontNotEmbedded, ISO 19005-1, 6.3.4) registrerer nu også ikke-indlejrede simple skrifttyper, der ikke har nogen/FontDescriptor, vigtigst de 14 standard-Type 1-skrifttyper (Helvetica, Times, Courier og så videre), som PDF/A kræver indlejret uden fritagelse. Tidligere slap en sådan skrifttype ubemærket igennem; kontrollen tæller nu også simple-font-ordbøger (/Type1,/TrueType,/MMType1) mod de indlejrede skrifttypeprogrammer, hvilket spejler PDF/UA-rettelsen i 1.44.3
Version 1.44.4
Rettet
ValidatePdfVTafviser nu fejlbehæftede ISO 16612-2 §6.5 DPart-træer, hvor/DPartser et fladt reference-array i stedet for det krævede array af arrays, eller hvor en blad-DPart gentager sin/Start-side som/End, selvom området kun indeholder én sideValidatePdfVTvaliderer nu/NodeNameList-navne som XML-NMTOKEN-værdier efter udfoldelse af PDF-navne-#xx-escape, så ugyldige hierarkiniveau-navne rapporteres viapvviMissingDPartRooti stedet for at blive accepteret som brugbar DPart-struktur
Version 1.44.3
Rettet
ValidatePdfUa-skrifttypeindlejringskontrollen (pvuaiFontNotEmbedded, ISO 14289-1, 7.21.4) registrerer nu også ikke-indlejrede simple skrifttyper, der ikke har nogen/FontDescriptor, vigtigst de 14 standard-Type 1-skrifttyper (Helvetica, Times, Courier og så videre), for hvilke PDF/UA ikke giver nogen indlejringsfritagelse. Tidligere slap en sådan skrifttype ubemærket igennem, og et dokument, der brugte den, kunne rapporteres som overholdende; kontrollen tæller nu også simple-font-ordbøger (/Type1,/TrueType,/MMType1) mod de indlejrede skrifttypeprogrammer
Version 1.44.2
Rettet
ValidatePdfVTnow leaves a present but unrecognizedpdfvtid:GTS_PDFVTVersionmarker aspvcUnknowninstead of downgrading it topvcNone. This keeps invalid file-level strings such asPDF/VT-2skan skelnes fra dokumenter, der ikke bærer nogen PDF/VT-markør; PDF/VT-2 identificeres af MIME-streamheaderen i ISO 16612-2 Annex A, ikke af en PDF-fils XMP-markør- The
/DPartRootcheck now validates the ISO 16612-2 §6.5 tree semantics more tightly:/DPartRootNodeand/NodeNameListmust describe the actual DPart depth, DPart parent links must form a tree,/Startand/DPartsare mutually exclusive, and each side/DPartskal pege på den dækkende blad-DPart i samme depth-first-rækkefølge som sidetræet
Version 1.44.1
Rettet
SaveAsPdfVTskriver nu et minimalt ISO 16612-2 §6.5 Document Part Hierarchy, når kilde-PDF'en mangler et brugbart/DPartRoot. Det genererede træ forbinder hver side via/DPart, bevarer et eksisterende gyldigt hierarki og efterlader rigere modtager-/DPM-metadata til den kaldende arbejdsgangValidatePdfVTvaliderer nu den brugbare DPart-struktur, læser PDF/VT XMP-værdier fra både RDF-attributter og elementtekst og håndhæver den præcise PDF/VT-til-PDF/X-basekobling: PDF/VT-1 kræver PDF/X-4, mens PDF/VT-2 kræver PDF/X-4p, PDF/X-5g eller PDF/X-5pgTPdfVTSaveOptions.Conformance = pvc2skriver ikke længere ugyldige single-file PDF/VT-2-markører. Single-file-skriveren normaliserer output til PDF/VT-1, fordi PDF/VT-2 kræver filsæt-semantik
Version 1.44.0
Tilføjet
ValidatePdfUanow also reports byte-checkable content-level PDF/UA violations in addition to the file-format markers: a font program that is not embedded (ISO 14289-1, 7.21.4), a font that lacks a/ToUnicodeCMap, når der ikke findes nogen undtaget enkel-skrifttypekodning (7.21.7), og et dokument, der bærer annotationer men erklærer ingen side/Tabs /Stab order (7.18.3)- Tre nye
TPdfUaValidationIssue-værdier —pvuaiFontNotEmbedded,pvuaiFontMissingToUnicodeogpvuaiMissingTabsOrder— præsenteres afValidatePdfUaog i preflight-rapporten. De er grove heuristikker beregnet som preflight-hints snarere end en fuld ISO 14289-1-verifikation
Version 1.43.1
Rettet
SaveAsPdfUanow enforces the ISO 14289-1, 7.1 mandatory/ViewerPreferences/DisplayDocTitle trueand/MarkInfo/Marked true/Suspects falsekatalogposter, selv når kildedokumentet allerede leverer disse dictionaries med manglende eller modstridende værdier. Tidligere blev markørerne kun indsat, når dictionaries var helt fraværende, så en kilde, der for eksempel bar en/ViewerPreferenceswithoutDisplayDocTitleor a/MarkInfowith/Marked falseround-tripped to a non-conforming file- Existing keys in a pre-existing
/ViewerPreferencesor/MarkInfodictionary bevares, og en dictionary leveret som en indirekte reference opløses, før de obligatoriske nøgler anvendes
Version 1.43.0
Tilføjet
ValidatePdfAanvender nu PDF/A-2 / PDF/A-3-reglerne for indlejrede og associerede filer samt for Level U-tekst. Indlejrede filer afvises stadig for PDF/A-1; for PDF/A-3 afvises en indlejret fil, der mangler den krævede/AFRelationshipnøgle (ISO 19005-3 Annex E) markeres, mens PDF/A-2-vedhæftninger er tilladt (deres egen overensstemmelse valideres ikke rekursivt). En nypvaiUnicodeMappingMissingissue reports a PDF/A-2u or PDF/A-3u document whose fonts carry no/ToUnicodemapping (ISO 19005-2 6.2.11.7). Transparency and optional content remain flagged only for PDF/A-1
Version 1.42.0
Tilføjet
- PDF/A-2 (ISO 19005-2) og PDF/A-3 (ISO 19005-3) understøttes nu på alle tre overensstemmelsesniveauer — a, b og u — af
SaveAsPdfA,ValidatePdfAog egenskabenPdfAConformance. EnumerationenTPdfAConformancefårpac2a,pac2u,pac3aogpac3u(PDF/A-1 har intet Level u). Gemning skriver det matchendepdfaid:part(2 eller 3) ogpdfaid:conformance(A, B eller U), samtidig med atGTS_PDFA1OutputIntent-under-typen bevares, som ISO 19005-2 kræver af hensyn til kompatibilitet. En Level A-anmodning nedgraderes stadig til det tilsvarende Level B (for enhver del), når dokumentet mangler den taggede struktur, som niveauet kræver
Version 1.41.0
Tilføjet
ValidatePdfAnow detects content-level PDF/A violations that marker injection cannot repair, on top of the structural markers it already reported: JavaScript and other forbidden actions, additional-actions (/AA), embedded files,LZWDecode, transparency (soft masks and transparency groups), optional content (/OCProperties), forbidden annotation subtypes (FileAttachment, Sound, Movie, 3D, Screen), AcroForm/NeedAppearances trueand/XFA, skrifttyper hvis deskriptorer mangler et indlejret skrifttypeprogram, og et Level A-krav fremsat uden den taggede struktur, som kræves af ISO 19005-1 6.8. Gennemsigtigheds-, valgfrit indhold- og indlejret-fil-kontrollerne gælder kun for PDF/A-1 (disse funktioner er tilladt i PDF/A-2 og PDF/A-3). NyTPdfAValidationIssuevalues surface each case; the existing values are unchanged
Version 1.40.3
Rettet
SaveAsPdfAfjerner nu al kildedokument-kryptering, før PDF/A-output produceres. ISO 19005-1 6.1.3 forbyder trailer-/Encrypt-nøglen, men gemstien bevarede tidligere kildens sikkerhedshandler, så gem af et krypteret dokument som PDF/A fremstillede en krypteret, ikke-overholdende fil. PDF/A-gemmet dekrypterer nu dokumentet først. Ukrypterede dokumenter er upåvirkede
Version 1.40.2
Rettet
- Stoppede
SaveAsPdfAfra at udsende en falsk PDF/A Level A-overholdelsespåstand. Når Level A (pac1a) anmodes om, men kildedokumentet mangler de tagged-structure-markører, der kræves af ISO 19005-1 6.8 — en/StructTreeRooti kataloget og en/MarkInfo-ordbog med/Marked true— identificeres den gemte fil nu som det tilsvarende Level B (pdfaid:conformance=B) i stedet for at hævde Level A. Rent visuelt PDF/A-1b-output er upåvirket
Version 1.40.1
Rettet
- Strammede PDF-versions-overholdelses-valideringen, så
SetOCGState-handlingen (set-optional-content-group-state) genkendes som en PDF 1.5-funktion. Gemning til et PDF 1.2-, 1.3- eller 1.4-mål, der indeholder enSetOCGState-handling, afvises nu for at matche ISO 32000-1 (Tabel 198); tidligere kunne en sådan handling slippe igennem til lavere-versions-output. Den adskilte, forældede PDF 1.2-SetState-handling accepteres stadig fra PDF 1.2 og frem
Version 1.40.0
Tilføjet
- Bandt den opstrøms
FPDFPageObj_AddExistingMark()-API, som vedhæfter et eksisterende indholdsmærke til et side-objekt. Når fortløbende side-objekter deler det samme mærke, kollapser den gemte PDF dem til et enkelt mærke, der spænder over dem alle; ikke-fortløbende objekter modtager separate kopier - Bandt den opstrøms
FPDFTextObj_SetFontSize()-API til at ændre punktstørrelsen for et eksisterende tekstobjekt som supplement til den eksisterendeFPDFTextObj_GetFontSize()-binding
Ændret
- Opdaterede de medfølgende PDFium-runtime-DLL'er (Win32 og Win64, standard- og V8-builds) til upstream-snapshotet fra 2026-06-02
Version 1.39.53
Ændret
- Ændrede Delphi-
PDFViewer-,SplitView- ogMultiPageViewer-demoerne til at åbne dokumenter iZoom to Page-tilstand som standard - Den indledende gengivelse tilpasser nu hele siden til visningsfladen, før brugeren vælger et manuelt zoomniveau
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.53
Version 1.39.52
Ændret
- Forbedrede
Demo\Lazarus\CreatePDF, så den indledende prøve nu genererer en to-siders PDF med vektorstier, tabelindhold, et indlejret billede, en tekstannotation, roteret tekst og en klarere gennemgang af dokumentopbygning - Tilføjede polerede
README.html-sider for hver Delphi-, C++Builder- og Lazarus-demomappe og erstattede de resterende tekst- kun demo-README'er med en browserlæsbar guide - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.52
Version 1.39.51
- Forbedrede
Demo\Delphi\PreflightReportCli-batchoversigter med standardstatustotaler for Pass, Action required og Review-resultater på tværs af de valgte standarder - Per-fil-rækker indeholder nu action-required- og review-antal i TXT-/HTML-/JSON-/CSV-oversigter, hvilket gør CI-artefakter lettere at inspicere uden at åbne hver genereret rapport
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.51
Version 1.39.50
- Forbedrede
Demo\Delphi\PreflightReportCli-mappe-batchtilstand, såbatchdir=folderindsamler fundne PDF-stier, sorterer dem og derefter genererer rapporter i en stabil rækkefølge - Rekursive mappescanninger producerer nu reproducerbar rapportrækkefølge og oversigtsrækker, mens eksplicit
batch=list.txt-behandling fortsat bevarer liste filens rækkefølge - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.50
Version 1.39.49
- Forbedrede
Demo\Delphi\PreflightReportCli-batchoversigter til at registrere kørselsindstillinger: kildetype, kildesti, rekursiv tilstand, outputmappe, rapportformat, valgte standarder ogfailon=-tilstand - JSON summaries now include a
runobjekt, viser TXT- og HTML-opsummeringer en kørselsindstillingssektion, og CSV-rækker gentager de samme revisionskolonner til regneark- og CI-pipelines - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.49
Version 1.39.48
- Forbedrede
Demo\Delphi\PreflightReportCli-batchoutputnavngivning, så duplikerede inputfilnavne, der deler énoutdir=, ikke længere overskriver hinandens genererede rapporter - Batchkørsler tilføjer nu
-2,-3og senere suffikser, når en genereret rapportsti allerede er tildelt i samme kørsel, og oversigter registrerer den endelige kollisions-sikre rapportsti - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.48
Version 1.39.47
- Forbedrede
Demo\Delphi\PreflightReportCli-batchoversigter, så TXT- og JSON-output nu inkluderer samlede totaler for samlede filer, behandlede filer, fejlende filer, problemer ogfailon=-match - CSV-opsummeringer forbliver en ren rækketabel for eksisterende forbrugere, mens HTML-opsummeringer fortsat viser de samme samlede målinger i dashboardets header
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.47
Version 1.39.46
- Forbedrede
Demo\Delphi\PreflightReportClimedsummary=batch.html/.htm, så batchkørsler kan udsende et browserlæsbart dashboard ved siden af TXT-/CSV-/JSON-manifester - HTML-oversigter viser samlede, behandlede, fejlende, problem- og
failon=-match-metrikker og oplister derefter hvert input med rapportlinks, status, antal og fejltekst - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.46
Version 1.39.45
- Forbedrede
Demo\Delphi\PreflightReportClimedbatchdir=folderogrecursive, så scripts kan scanne PDF-mapper direkte uden først at skrive en listefil - Directory batch mode reuses
outdir=,summary=,standards=, andfailon=adfærd fra listebaseret batchtilstand, mens ikke-rekursive scanninger kun gennemløber den valgte mappe ogrecursiveincludes subfolders - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.45
Version 1.39.44
- Forbedrede
Demo\Delphi\PreflightReportClimedsummary=batch.csv|json|txt, så batchkørsler kan udsende et maskinlæsbart manifest ved siden af per-fil-rapporterne - Batchoversigter inkluderer hver inputsti, rapportsti, status, standardantal, bestået-antal, problemantal,
failon=-matchtilstand og fejltekst til CI-jobs og eksterne scripts - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.44
Version 1.39.43
- Forbedrede
Demo\Delphi\PreflightReportClimedbatch=list.txtogoutdir=reports, så scripts kan generere preflight-rapporter for en liste af PDF-filer i én kørsel - Batchtilstand springer tomme og
#-kommentarlinjer over, afleder hvert.preflight.<ext>-rapportnavn fra input-PDF'en, fortsætter efter per-fil-fejl og opsummerer behandlede og fejlende filer før returnering - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.43
Version 1.39.42
- Forbedrede
Demo\Delphi\PreflightReportClimedfailon=none|issues|action|review, så CI-jobs kan omdanne genererede preflight-resultater til deterministiske exitkoder - CLI'en returnerer nu exitkode 2, når en valgt
failon=-regel matcher, efter at rapportfilen og den valgfri vedhæftede rapport-PDF er genereret, mens kørselsfejl fortsat returnerer exitkode 1 - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.42
Version 1.39.41
- Forbedrede
Demo\Delphi\PreflightReportClimedattach=output.pdf, så en genereret preflight-rapport kan indlejres som en dokumentniveau-vedhæftning i en ny PDF-kopi - CLI'en beholder den genererede TXT-/HTML-/Markdown-/JSON-/CSV-rapportfil på disken og nægter at vedhæfte tilbage til den oprindelige input-PDF-sti, hvilket reducerer risikoen for utilsigtet overskrivning
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.41
Version 1.39.40
- Tilføjede
Demo\Delphi\PreflightReportCli, en Delphi-konsol-ledsager til script-barFPdfPreflightReport-generering uden at åbne en fremviser - CLI'en understøtter prøveoprettelse uden argumenter plus input-/output-argumenter, valgfri adgangskode,
text-/html-/md-/json-/csv-outputformater ogstandards=-filtrering for PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R og PDF/VT - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.40
Version 1.39.39
- Forbedrede
FPdfPreflightReportmedTPdfPreflightReport.ToMarkdownogSaveMarkdownToFile, så preflight-rapporter kan eksporteres som issue-tracker-venlig Markdown - Opdaterede Delphi-, C++Builder- og Lazarus-
PreflightReport-prøverne med Markdown-forhåndsvisningsskift og Save MD-handlinger ved siden af den eksisterende TXT-/HTML-/JSON-/CSV-arbejdsgang - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.39
Version 1.39.38
- Forbedrede Delphi-, C++Builder- og Lazarus-
SecurityAudit-prøverne med JSON-auditrapporteksport ved siden af den eksisterende TXT-gemme-/kopi-arbejdsgang - JSON-rapporten indeholder
format,generatedAt,summary,findingCountog struktureredefindings-rækker med severity-, area- og detail-felter - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.38
Version 1.39.37
- Forbedrede
FPdfPreflightReportmedTPdfPreflightReport.ToCsvogSaveCsvToFile, så preflight-rapporter kan eksporteres som regnearksvenlig CSV - Opdaterede Delphi-, C++Builder- og Lazarus-
PreflightReport-prøverne med CSV-forhåndsvisningsskift og Save CSV-handlinger ved siden af den eksisterende TXT-/HTML-/JSON-arbejdsgang - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.37
Version 1.39.36
- Forbedrede
FPdfPreflightReportmedTPdfPreflightReport.IssueCategoryCountssamt genanvendeligeTPdfPreflightIssueCategoryCount- ogTPdfPreflightIssueCategoryCounts-typer til at aggregere markørniveau-problemer efter kategori - Opdaterede
TPdfPreflightReport.ToText,ToHtmlogToJson, så genereret PreflightReport-output inkluderer problemkategoriantal-oversigter ved siden af per-standard-rækker og detaljerede problem-anbefalinger - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.36
Version 1.39.35
- Omdøbte den udvidede
PrintDialog-prøve tilPrintPreferencespå tværs af Delphi, C++Builder og Lazarus, så demonavnet nu matcher dens PDF-forfatter-udskriftsindstillinger, N-up-udskrivning, lige-/ulige-filtrering, gråtoner, cellekant og duplex-afbildningsarbejdsgang - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.35
Version 1.39.34
- Forbedrede
Demo\Delphi\PrintPDFmed drag-and-drop PDF-indlæsning og dokumenterede den eksisterendeDemo\CBuilder\PrintPDF-arbejdsgang ved siden af Delphi- og Lazarus-PrintPDF-prøverne - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.34
Version 1.39.33
- Tilføjede
Demo\CBuilder\SplitView, hvilket fuldender SplitView-prøve-matricen på tværs af Delphi, C++Builder og Lazarus - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.33
Version 1.39.32
- Tilføjede
Demo\Lazarus\SplitView, hvilket bringer side-om-side PDF-sammenligning til Lazarus med to- eller tre-rude-layouts, aktiv-vis-navigation, synkroniserede kommandoer, zoom-presets og rotation - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.32
Version 1.39.31
- Tilføjede
Demo\Lazarus\PrintPDF, hvilket bringer den almindelige PDF-udskrifts-arbejdsgang til Lazarus med forhåndsvisnings-navigation, side-intervaller, kopier, collate-tilstand, fremgang og annullering - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.31
Version 1.39.30
- Tilføjede
Demo\Lazarus\FontProperties, hvilket fuldender FontProperties-prøve-matricen på tværs af Delphi, C++Builder og Lazarus - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.30
Version 1.39.29
- Tilføjede
Demo\CBuilder\FontProperties, hvilket bringer indekseret tegn- og skrifttype-metadata-inspektion til C++Builder ved siden af Delphi-prøven - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.29
Version 1.39.28
- Tilføjede
Demo\Delphi\ExtractTextPages, hvilket fuldender per-side tekst-udtræknings-prøve-matricen på tværs af Delphi, C++Builder og Lazarus - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.28
Version 1.39.27
- Tilføjede
Demo\Lazarus\PrintDialog, hvilket fuldender PrintDialog-prøve-matricen på tværs af Delphi, C++Builder og Lazarus - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.27
Version 1.39.26
- Tilføjede
Demo\CBuilder\PrintDialog, hvilket bringer N-up-udskrivnings- og PDF-forfatter-udskriftsindstillings-arbejdsgangen til C++Builder ved siden af Delphi-prøven - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.26
Version 1.39.25
- Tilføjede
Demo\CBuilder\ViewerInteractionLab, hvilket fuldender ViewerInteractionLab-eksempelsættet på tværs af Delphi, C++Builder og Lazarus - Opdaterede bibliotekets bygge-arbejdsgang og Win64 C++Builder-pakkeoutput, så
TPdfView-fremviser-interaktionsmetoder linker korrekt i Win64-demoer - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.25
Version 1.39.24
- Tilføjede
Demo\Lazarus\ViewerInteractionLab, som bringer den fokuserede fremviser-interaktionsarbejdsgang til Lazarus sammen med Delphi-eksemplet - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.24
Version 1.39.23
- Tilføjede
Demo\Lazarus\SearchAndSelect, hvilket fuldender SearchAndSelect-prøve-matricen på tværs af Delphi, C++Builder og Lazarus - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.23
Version 1.39.22
- Tilføjede
Demo\CBuilder\ContentExtractionLabogDemo\Lazarus\ContentExtractionLab, hvilket bringer multi-kategori-indholdsudtræknings-arbejdsgangen til alle understøttede demo-IDE'er - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.22
Version 1.39.21
- Forbedrede
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportogDemo\CBuilder\PreflightReportmed en forhåndsvisningsformat-vælger, så brugere kan inspicere tekst- eller JSON-output, før rapporter gemmes - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.21
Version 1.39.20
- Tilføjede JSON-eksport til
FPdfPreflightReportviaTPdfPreflightReport.ToJsonogSaveJsonToFile, hvilket producerer maskinlæsbare oversigter, per-standard-status / prioritet, næste-handlinger og problem-detaljer - Opdaterede
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportogDemo\CBuilder\PreflightReportmed Save JSON-handlinger ved siden af TXT-/HTML-eksport - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.20
Version 1.39.19
- Forbedrede
FPdfPreflightReportmedTPdfPreflightStatus, problemkategorier, per-standard-prioritet og næste-handling-vejledning i TXT-/HTML-rapporter - Opdaterede
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportogDemo\CBuilder\PreflightReportfor at vise status, prioritet, antallet af problemer og næste handling i oversigtsgitteret - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.19
Version 1.39.18
- Tilføjet
Demo\Lazarus\SecurityAudit, og fuldender dermed demo-matricen for Delphi, C++Builder og Lazarus til den skrivebeskyttede PDF-risikooverflade-revisionsarbejdsgang - Lazarus-prøven optæller rettigheder, vedhæftninger, JavaScript-handlinger, URI-/Launch-link-annotationer, weblinks, signaturer, XFA-tilstand, V8-/XFA-hjælper-tilgængelighed og utilstøttet-funktion-tilbagekald og gemmer eller kopierer derefter fund-listen som en TXT-rapport
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.18
Version 1.39.17
- Tilføjede
Demo\CBuilder\SecurityAudit, hvilket bringer den skrivebeskyttede PDF-risiko-overflade-audit-arbejdsgang til C++Builder ved siden af den eksisterende Delphi-prøve - C++Builder-prøven optæller rettigheder, vedhæftninger, JavaScript-handlinger, URI-/Launch-link-annotationer, weblinks, signaturer, XFA-tilstand, V8-/XFA-hjælper-tilgængelighed og utilstøttet-funktion-tilbagekald og gemmer eller kopierer derefter fund-listen som en TXT-rapport
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.17
Version 1.39.16
- Tilføjede
Demo\CBuilder\SearchAndSelect, hvilket bringer den selvstændige SearchAndSelect-fremviser-arbejdsgang til C++Builder ved siden af den eksisterende Delphi-prøve - C++Builder-eksemplet opretter eller åbner PDF-filer, viser alle sides træffere med forhåndsvisninger af side- / tegnindeks, understøtter Previous / Next og navigation med dobbeltklik og fremhæver træffere på den aktuelle side med
HighlightSearchText - Den eksponerer også
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangeog spread-DisplayMode-indstillinger; versionsmetadata rapporterer nu 1.39.16
Version 1.39.15
- Tilføjede
Demo\CBuilder\WatermarkStamp, hvilket fuldender Delphi-, Lazarus- og C++Builder-demo-matricen for genanvendelige Form XObject-vandmærke- og stempel-arbejdsgange - C++Builder-prøven opretter mål- og stempel-PDF'er, genbruger stempel-siden via
CreateXObjectFromPage, anvenderTPdfMatrix-transformationer og gemmer centrererede vandmærker, hjørne-stemple og sidenummer-labels - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.15
Version 1.39.14
- Tilføjede
Demo\Lazarus\WatermarkStamp, hvilket bringer den genanvendelige Form XObject-vandmærke- og stempel-arbejdsgang til Lazarus - Lazarus-prøven opretter mål- og stempel-PDF'er, genbruger stempel-siden via
CreateXObjectFromPage, anvenderTPdfMatrix-transformationer og gemmer centrererede vandmærker, hjørne-stemple og sidenummer-labels - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.14
Version 1.39.13
- Tilføjede
Demo\CBuilder\PreflightReport, hvilket fuldender Delphi-, Lazarus- og C++Builder-demo-matricen for den genanvendeligeFPdfPreflightReport-arbejdsgang - C++Builder-prøven bruger
FPdfPreflightReport.hpptil at generere standardoversigter, TXT-rapport-forhåndsvisninger, TXT-/HTML-rapportfiler og Åbn seneste rapport-adfærd - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.13
Version 1.39.12
- Tilføjede
Demo\Lazarus\PreflightReport, hvilket bringer PDF/A-, PDF/UA-, PDF/E-, PDF/X-, PDF/R- og PDF/VT-preflight-rapport-arbejdsgangen til Lazarus - Lazarus-prøven kan åbne eller oprette en PDF, vælge målstandarder, forhåndsvise oversigtsrækker og TXT-rapport-output, gemme TXT-/HTML-rapporter og åbne den senest gemte rapport
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.12
Version 1.39.11
- Forbedrede
Demo\Delphi\SearchAndSelectmed en alle-sider-søgnings-resultatliste, der registrerer sidenummer, tegn-indeks og forhåndsvisningstekst - Tilføjede Previous / Next match-navigation og dobbeltklik-resultat-hopning, mens nuværende-side
HighlightSearchText-adfærd bevares - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.11
Version 1.39.10
- Enhanced
Demo\Delphi\SecurityAuditmed handlingerne Save Report og Copy Report, som eksporterer den aktuelle opsummering og fundrækker som en TXT-revisionsrapport - Demon rydder nu rapport-eksporttilstand, når audit-panelet nulstilles, hvilket holder kopierede eller gemte rapporter på linje med de synlige fund
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.10
Version 1.39.9
- Forbedrede
Demo\Delphi\ContentExtractionLabmed kilde-PDF-gemning, rapport-kopiér-til-udklipsholder og alle-/ingen-kategorivalg-handlinger - Demon ugyldiggør nu den aktuelle rapport, når kategorivalg ændres, så TXT-/JSON-eksport afspejler det synlige udtrækningsomfang
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.9
Version 1.39.8
- Tilføjede
Demo\Delphi\ContentExtractionLab, en samlet indholdsudtræknings-arbejdsgangs-prøve for dokument-metadata, sidetekst, side-objekter, billeder, vedhæftninger, links, annotationer, bogmærker og skrifttype- / tegn-metrik - Prøven kan åbne en eksisterende PDF eller oprette en syntetisk PDF med tekst-, billede-, vedhæftnings- og annotationsindhold og derefter generere oversigtsrækker og detaljerede TXT-/JSON-rapporter
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.8
Version 1.39.7
- Tilføjede
Lib\FPdfPreflightReport.pas, en genanvendelig rapport-hjælper, der indpakkerValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRogValidatePdfVTi étTPdfPreflightReport-objekt - Tilføjede
Demo\Delphi\PreflightReport, en arbejdsgangs-prøve, der åbner eller opretter en PDF, vælger målstandarder, forhåndsviser oversigtsrækker og problem-anbefalinger og gemmer TXT- eller HTML-rapporter - De genererede rapporter beskriver eksplicit den indbyggede markørniveau-valideringsgrænse, så applikationer kan parre dem med dedikerede indholdsniveau-preflight-værktøjer, når det kræves
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata, pakkeprojektlister og installatør-versionsmetadata til at rapportere 1.39.7
Version 1.39.6
- Tilføjede
Demo\Delphi\SearchAndSelect, en fokuseret fremviser-arbejdsgangs-prøve for søgnings-fremhævning, tekst-markering, valgt-tekst-forhåndsvisning, kopier, ryd og spread-visningstilstande - Prøven demonstrerer
HighlightSearchText, match-case-/whole-word-søgningsindstillinger,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardogClearSelectionuden at tilføje ny biblioteks-API - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.6
Version 1.39.5
- Udvidede
Demo\Delphi\ViewerInteractionLabtil et SearchAndSelect-lignende viewer-UX-eksempel medHighlightSearchText, match-case / whole-word-indstillinger, preview af markeret tekst og de eksisterende markerings- og udklipsholderkontroller - Udvidede
Demo\Delphi\PrintDialogtil at inspicere PDF-forfatter-udskriftsindstillinger:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlingog synligSetPdfPrintPaperHandlingDevMode-duplex-afbildning - Tilføjede
Demo\Delphi\SecurityAudit, en skrivebeskyttet risiko-overflade-prøve, der oplister rettigheder, vedhæftninger, dokument-JavaScript, URI-/Launch-links, weblinks, signaturer, XFA-tilstand og V8-/XFA-hjælper-tilgængelighed - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.5
Version 1.39.4
- Tilføjede
Demo\CBuilder\ImageToPDFogDemo\Lazarus\ImageToPDF, hvilket fuldender ImageToPDF-prøve-matricen på tværs af Delphi, C++Builder og Lazarus - De nye prøver demonstrerer multi-billede-valg, valgt-billede-forhåndsvisning, én PDF-side pr. billede, A4-portræt-/landskab-sidestørrelse, centreret billedskalering, per-billede-fremgang og åbning af den genererede PDF efter gemning
- Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.4
Version 1.39.3
- Tilføjet
Demo\CBuilder\BatchExport, og bringer arbejdsgangen for eksport af flere PDF-filer til JPG til C++Builder sammen med de eksisterende Delphi- og Lazarus-eksempler - Prøven demonstrerer
LoadCustomDocument,IPdfCancellationTokenSource, streaming-TFileStream-input, per-fil- og per-side-fremgang, annulleringshåndtering, DPI-/kvalitet-/adgangskode-input og outputmappe-åbning efter fuldførelse - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.3
Version 1.39.2
- Tilføjede
Demo\Delphi\WatermarkStamp, en kørbar Form XObject-arbejdsgangs-prøve, der opretter en mål-PDF og en genanvendelig stempel-PDF og derefter anvender centrererede vandmærker, øverst-højre stempler og sidenummer-labels på tværs af hver side - Prøven demonstrerer
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixogFPDFPageObj_SetMatrixuden at tilføje ny biblioteks-API - Opdaterede
Docs\en-us\Examples.htmltil at bruge det aktuelleTPdfMatrix.Handle-mønster, når matricer videregives tilFPDFPageObj_SetMatrix - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.2
Version 1.39.1
- Tilføjede
Demo\Delphi\ViewerInteractionLab, et fokuseretTPdfView-eksempel til visningstilstande, tilpasningstilstande, sidefarver, rotation, brugertekstmarkering, udklipsholderhandlinger ogDeviceToPage-koordinatfeedback - Tilføjede
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLab, så Lazarus-brugere kan køre PDF/A-, PDF/UA-, PDF/E-, PDF/X-, PDF/R- og PDF/VT-validerings- og markør-output-arbejdsgangen - Oplistede standard-enhederne i
Lib\37.0\PDFiumPas.dprojogLib\FPC\PDFiumLaz.lpkog rettede Delphi-SplitView-demobygget ved at fjerne en duplikeretWinapi.ShellAPI-import - Rettet Delphi-demo-batch-bygge-blokkeringer i
BatchExport,PDFViewer,MultiPageViewerogSplitViewuden at ændre deres kørselstids-adfærd - Rettet C++Builder-demo-batch-bygge-kompatibilitet i
PDFViewerogMultiPageViewerved at erstattenullptrmedNULLfor den nuværende projekttilstand - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.1
Version 1.39.0
- Tilføjede
Demo\Delphi\StandardsLab, en kørbar standarder-arbejdsgangs-prøve, der indlæser eller opretter en PDF, kørerValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRogValidatePdfVTog viser detekteret overholdelse, pass/fail-status og problem-antal i ét gitter - StandardsLab-gem-knapperne kalder
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRogSaveAsPdfVT, hvilket gør PDF-standarder-markør-output synligt uden at skrive en brugerdefineret hjælper - Opdaterede
TPdf.AboutInfo, Lazarus-pakkemetadata og installatør-versionsmetadata til at rapportere 1.39.0
Version 1.38.0
TPdfView-søgnings- og tekst-markerings-overlays bruger nu rigtig alpha-blending i stedet for logisk maske-maling, hvilket bevarer sideindhold under fremhævninger- Tilføjet
SetPdfPrintPaperHandlingDevModeto mapTPrintPaperHandlinginto WindowsDEVMODE.dmDuplexvalues:DMDUP_SIMPLEX,DMDUP_HORIZONTAL, andDMDUP_VERTICAL TPdfView.SmoothScrollanimerer nu linje-/side-rullebjælke-kommandoer i timer-drevne segmenter; thumb-sporing forbliver øjeblikkelig- Opdaterede
TPdf.AboutInfoog installatør-versionsmetadata til at rapportere 1.38.0
Version 1.37.0
TPdfejer nu en per-instans render-lås, der serialisererRenderPage,RenderTile,RenderPageProgressive, side-genindlæsning og dokument-udlæsningsstier. Worker-drevet rendering via en delt komponent er nu praktisk, mens applikationer fortsat koordinerer dokumentmutation og livstid- Rettet zero-copy-bitmap-ombryderen til at afvise bottom-up
TBitmap-DIB-layouts og falde tilbage på en PDFium-ejet buffer før udkopiering, hvilket eliminerer stride-korruption-/access-violation-fejl i VCL-render-tests - Strammet
TPdfView-markeringsadfærd:AllowUserTextSelectionstyrer kun brugerinput, kode-niveau markerings-API'er tegner stadig, ogSelectAllfølger det faktiske synlige spred, så coversiden ikke længere markerer side 2. Delphi-, Lazarus- og C++Builder-tests blev udvidet tilsvarende - Opdaterede
TPdf.AboutInfoog installatør-versionsmetadata til at rapportere 1.37.0
Version 1.36.0
- Aktiverede slutbruger-tekstmarkering i
TPdfView— egenskabenAllowUserTextSelection, reserveret i v1.17.0, driver nu en komplet træk-vælg-pipeline. Venstreklik på et tekst-tegn går i vælg-tilstand (hit-test auto); venstreklik på et blankt område fortsætter med at panorere som før. Form-fill-widgetten bevarer prioritet, så klik på et formularfelt stadig fokuserer feltet snarere end at starte en markering - Dobbeltklik markerer ordet, trippelklik markerer linjen,
Ctrl+Amarkerer den aktuelle side (begge sider i spread-visningstilstande), ogCtrl+Ckopierer markeringen til Windows-udklipsholderen somCF_UNICODETEXT Shift+Left/Shift+Rightudvider markeringen ét tegn ad gangen (overskridende til den tilstødende side i spread-tilstand);Shift+Home/Shift+Endudvider til den visuelle linjekant ved hjælp af seed-tegnets boks-højde som linje-cluster-tolerancen, så linjer med blandede skriftstørrelser forbliver korrekt clusteret- Svæven over tekst ændrer markøren til
crIBeam; svæven væk fra tekst gendanner standardmarkøren. Mens et tekst-markerings-træk er i gang, auto-scroller et træk ind i en 20-pixel død zone ved en vilkårlig fremviserkant siden (50 ms tick, 16 px / tick, begrænset til de samme grænser, pan-stien bruger), så markeringen kan udvide sig forbi den nuværende viewport uden først at slippe musen - Cross-side selection works in spread display modes (
dmTwoPageContinuous,dmTwoPageContinuousWithCover): et træk, der starter i venstre side og slutter i højre side, vælger det sammenhængende interval, der spænder over beggeSelectedTextjoins the per-page slices with CR/LF so the round-tripped text reads like normal multi-line content - Ny publiceret egenskab
SelectionColor(standardclHighlight, Windows-system-markeringsfarven) — uafhængig afHighlightColor, som farver søgeresultater gule. Søgnings-fremhævninger og en live træk-markering kan vises på skærmen samtidigt uden farvekonflikt - Ny publiceret hændelse
OnSelectionChangeudløses, når markeringens materialiserede intervaller faktisk muterer — aldrig ved identisk genanvendelse, så værtsapplikationer kan koble den direkte til statuslinje-tekst eller knap-aktiveret tilstand uden debouncing - Ny offentlig API på
TPdfView:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard. Disse er kode-niveau indgangspunkter og virker altid uansetAllowUserTextSelection— flaget styrer kun brugerinput (mus, Ctrl+C, Ctrl+A, Shift+pile), så kiosk-værter kan deaktivere brugerdrevet markering, mens de stadig bygger "Select All / Copy"-værktøjslinjeknapper, der driver den samme API - En standard højreklik
Copy/复制-popup-menu vedhæftes automatisk, når værten ikke har tildelt sin egenPopupMenu— standard "vælg tekst, højreklik, kopier" virker out of the box. Teksten vælges mellem engelsk og kinesisk viaSysLocale.PriLangID; værter, der har brug for fuld lokalisering (eller en rigere menu), tildeler blot deres egenPopupMenu, og standarden undertrykkes - Markering ryddes automatisk ved
SetPdf-,SetPageNumber-,SetActive(False)- ogDisplayMode-overgange, hvorOnSelectionChangeudløses præcis én gang, når den forrige markering var ikke-tom. Form-fill-undersystemet bevarer prioritet — mens et formularfelt redigeres, udskyder alle markerings-tastatur-genveje, så feltet modtagerCtrl+C/Ctrl+A/Shift+piletil sin egen markering - Udvidede Delphi- og Lazarus-regressionssuiterne til 202 tilfælde hver og C++Builder-suitten til 159 tilfælde, der dækker standardværdier, round-trip, offentlig API-adfærd, tilstandsændrings-rydninger, muse-træk (hit-tekst / hit-blank), klik vs træk, IBeam-markør-skift, dobbeltklik-ord, trippelklik-linje, tastatur-genveje, standard-popup-vedhæft / udskyd / tekst og spread tværs-side-markering — inklusive en udklipsholder-CR/LF-round-trip-kontrol
Version 1.35.0
- Tilføjet understøttelse af markørindsprøjtning for PDF/VT (ISO 16612-2:2010): TPdf.SaveAsPdfVT promoverer det aktuelle dokument til en PDF/VT-1- eller PDF/VT-2-kompatibel fil (det variable og transaktionelle udskrivnings-PDF-underformat). PDF/VT bygger oven på PDF/X-4 — ISO 16612-2 §6.2.1 kræver, at hver PDF/VT-1-fil også overholder PDF/X-4 — så injektoren skriver hele PDF/X-4-markørsættet (XMP
pdfxid:GTS_PDFXVersion = "PDF/X-4", Info/GTS_PDFXVersion (PDF/X-4)og/Trapped, katalog/OutputIntentsmed henvisning til en OutputIntent-dictionary med indlejret ICC-profil) sammen med de PDF/VT-specifikke egenskaber - Den PDF/VT-specifikke injektion dækker XMP-
pdfvtid:GTS_PDFVTVersion(= "PDF/VT-1" eller "PDF/VT-2" pr. §6.3 Tabel 2) ogpdfvtid:GTS_PDFVTModDate(holdt synkroniseret medxmp:ModifyDatepr. §6.3 NOTE 1), plus en pdfaExtension:schemas-beskrivelse, der deklarerer både pdfxid- og pdfvtid-navnerum (NPES-URI'erhttp://www.npes.org/pdfx/ns/id/oghttp://www.npes.org/pdfvt/ns/id/). Traileren bærer et/ID-array - Tilføjet TPdf.SaveAsPdfVTToStream for in-memory PDF/VT output, and a default-options shorthand
TPdf.SaveAsPdfVT(FileName)der producerer PDF/VT-1 med den medfølgende sRGB IEC61966-2.1 OutputIntent (3144 bytes, samme profil som SaveAsPdfA / SaveAsPdfX) og/Trapped /False - Tilføjede TPdf.ValidatePdfVT: kontrollerer en åben PDF for PDF/VT-overholdelsesmarkører (XMP-
pdfvtid:GTS_PDFVTVersion- ogGTS_PDFVTModDate-tilstedeværelse, lighed mellempdfvtid:GTS_PDFVTModDateogxmp:ModifyDate, tilstedeværelse af den underliggendepdfxid:GTS_PDFXVersion-identifikator, katalog-/DPartRoot-tilstedeværelse pr. §6.5,/OutputIntentsmed/DestOutputProfile, trailer-/ID, krypteringsstatus,xmp:CreateDate/ModifyDate-tilstedeværelse) og returnerer TPdfVTValidationResult med det detekterede overholdelses-niveau og det fundne sæt af problemer - Tilføjet egenskaben TPdf.PdfVTConformance: returnerer overensstemmelsesniveauet for det aktuelt åbne dokument (pvc1, pvc2, pvcNone eller pvcUnknown) uden at skulle kalde ValidatePdfVT eksplicit
- Nye typer eksporteret i den nye enhed FPdfPdfvt: TPdfVTConformance (pvcUnknown/None/1/2), TPdfVTTrappedState (ptvUnspecified/True/False/Unknown), TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions
- Document Part Hierarchy (
DPartRoot/DPart-træ pr. §6.5) er applikationsniveau-struktur, der afhænger af det variable-data-udskrifts-arbejdsgangs modtager-/side-interval-afbildning. SaveAsPdfVT syntetiserer IKKE et DPart-træ — ValidatePdfVT præsenterer en manglende/DPartRootsompvviMissingDPartRoot, så kaldere kan rutere PDF/VT-filer gennem et separat DPart-opbygnings-trin. Indholdsniveau-PDF/X-4-krav (skrifttypeindlejring, gennemsigtighed, ICC-styret farve, OPI-/JavaScript-/Reference-XObject-forbud osv.) forbliver dokumentforfatterens og PDFiums rendering-pipelines ansvar - Opdaterede TPdf.AboutInfo-strengen til at rapportere den aktuelle produktversion
Version 1.34.0
- Tilføjet understøttelse af markørindsprøjtning for PDF/R-1 (ISO 23504-1:2020): TPdf.SaveAsPdfR promoverer det aktuelle dokument til en PDF/R-1-kompatibel fil (det rasterbillede-transportunderformat af PDF, der bruges til scannede dokumenter). Indsprøjtningen dækker de filformatkrav, der kan tilføjes ved efterbehandling — den unikke
%PDF-raster-1.0version-identifikationskommentar skrevet mellem trailer-dictionaryen og nøgleordet startxref (§5), katalogdictionaries begrænset til §6.3-whitelistet (kun Version / ViewerPreferences / PageLayout / PageMode / AcroForm / Metadata overlever), Document Information Dictionary begrænset til §6.4.3-whitelistet (kun Creator / Producer / CreationDate / ModDate), en katalog /Metadata XMP-stream, der bærer de fire poster i §6.4.4 Table 1 (xmp:CreatorTool / pdf:Producer / xmp:CreateDate / xmp:ModifyDate), samt en trailer /ID-array - Tilføjede TPdf.SaveAsPdfRToStream til in-memory PDF/R-output og en standard-indstillings-forkortelse
TPdf.SaveAsPdfR(FileName)til det almindelige tilfælde - Tilføjede TPdf.ValidatePdfR: kontrollerer en åben PDF for PDF/R-1-overholdelsesmarkører (fodbundskommentaren
%PDF-raster-x.y, hovedversion, /Type /ObjStm-fravær, katalog-white-list-overholdelse, Info-ordbogs-white-list-overholdelse, XMP-metadata-stream-tilstedeværelse, trailer-/ID) og returnerer TPdfRValidationResult med det detekterede overholdelses-niveau og det fundne sæt af problemer - Tilføjet egenskaben TPdf.PdfRConformance: returnerer overensstemmelsesniveauet for det aktuelt åbne dokument (prc1, prcNone eller prcUnknown) uden at skulle kalde ValidatePdfR eksplicit
- Nye typer eksporteret i den nye enhed FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions.
TPdfRSaveOptions.Defaultsætter StripInfoOptionalEntries og StripCatalogOptionalEntries til True, så injektoren som standard producerer et §6.3- / §6.4.3-kompatibelt katalog og Info-ordbog; kaldere kan sætte disse til False for at bevare kildens poster (output opfylder så ikke disse PDF/R-bestemmelser, men andre markører forbliver vedhæftet) - Indholdsniveau-krav forbliver kilde-PDF'ens ansvar: per-side Contents-struktur (§6.5.1), MediaBox
[0 0 w h]-form (§6.5.3), filter-begrænsninger (§6.2.2 — kun FlateDecode, CCITTFaxDecode bitonal, DCTDecode 8-bit gray/RGB), fravær af objekt-streams (§6.2.4) og strip-layout pr. §6.6. Disse kan ikke håndhæves ved post-behandling — PDF/R er strukturelt et meget strengere delsæt end de andre PDF/x-standarder og kræver generering af kildebytene korrekt. ValidatePdfR præsenterer de filformat-problemer, denne enhed kan detektere; par med en TWAIN Working Group PDF/R-validator til fulde indholdsniveau-kontroller - Opdaterede TPdf.AboutInfo-strengen til at rapportere den aktuelle produktversion
Version 1.33.0
- Tilføjet understøttelse af markørindsprøjtning for PDF/X (ISO 15930-familien): TPdf.SaveAsPdfX promoverer det aktuelle dokument til en PDF/X-1a:2001-, PDF/X-3:2002- eller PDF/X-4-kompatibel fil ved at efterbehandle basis-PDF’en med en inkrementel opdatering. Indsprøjtningen dækker de filformatkrav, der kan tilføjes ved efterbehandling — en XMP-metadata-stream, der bærer
pdfxid:GTS_PDFXVersion(ogpdfxid:GTS_PDFXConformancefor PDF/X-1a / PDF/X-3) plus den matchende beskrivelse af pdfaExtension:schemas, en omskrevet Document Information Dictionary med posterne/GTS_PDFXVersion,/GTS_PDFXConformanceog/Trapped, et opdateret katalog med/OutputIntents [N 0 R], der henviser til en OutputIntent-dictionary med/S /GTS_PDFXog en indlejret ICC-profil, samt en trailer/ID-array - Tilføjet TPdf.SaveAsPdfXToStream for in-memory PDF/X output, and a default-options shorthand
TPdf.SaveAsPdfX(FileName)der producerer PDF/X-4 med den indbyggede sRGB IEC61966-2.1 OutputIntent (3144 bytes, identisk med profilen brugt af SaveAsPdfA) - Tilføjet TPdf.ValidatePdfX: kontrollerer en åben PDF for PDF/X-overensstemmelsesmarkører (XMP pdfxid-identifikator og lighed med Info-dictionary-værdien, pdfxid-udvidelsesschemabeskrivelse, /OutputIntents-array med /DestOutputProfile, tilstedeværelse af Title, trailer /ID, krypteringsstatus, xmp:CreateDate / xmp:ModifyDate-tilstedeværelse) og returnerer TPdfXValidationResult med det registrerede niveau og sættet af fundne problemer
- Tilføjet egenskaben TPdf.PdfXConformance: returnerer overensstemmelsesniveauet for det aktuelt åbne dokument (pxc1a, pxc3, pxc4, pxcNone eller pxcUnknown) uden at skulle kalde ValidatePdfX eksplicit. XMP-versionsstrengen parses for at skelne mellem de tre overensstemmelsesniveauer
- Nye typer eksporteret i den nye enhed FPdfPdfx: TPdfXConformance (pxcUnknown/None/1a/3/4), TPdfXTrappedState (ptUnspecified/True/False/Unknown), TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions.
TPdfXSaveOptions.Defaultmålretter PDF/X-4 med sRGB-OutputIntent og/Trapped /False; kaldere kan tilsidesætteConformance, levere en CMYKIccProfileData-blob til kommercielle tryk-arbejdsgange eller ændreOutputCondition/OutputConditionIdentifier/RegistryNametil at pege på en specifik ICC-karakteriserings-registerpost (f.eks. FOGRA39, GRACoL2006_Coated1v2) - Indholdsniveau-krav (alle skrifttyper indlejret, ingen JavaScript, ingen synlige annotationer, OPI-forbud, gennemsigheds-regler for PDF/X-1a / PDF/X-3 osv.) forbliver dokumentforfatterens og PDFiums rendering-pipelines ansvar. Par ValidatePdfX med et preflight-værktøj såsom callas pdfaPilot eller Ghent PDF Workgroup Output Suite til komplet overholdelsesverifikation
- Opdaterede TPdf.AboutInfo-strengen til at rapportere den aktuelle produktversion
Version 1.32.0
- Tilføjet støtte til markørinjektion for PDF/E-1 (ISO 24517-1:2008): TPdf.SaveAsPdfE promoverer det aktuelle dokument til en PDF/E-1-kompatibel fil ved at efterbehandle basen-PDF'en med en inkrementel opdatering. Injektionen dækker de filformatniveau-krav, der kan tilføjes ved efterbehandling — en XMP-metadata-strøm med
pdfe:ISO_PDFEVersion = "PDF/E-1"plus den matchende pdfaExtension:schemas-beskrivelse, en omskrevet Document Information Dictionary med den obligatoriske/ISO_PDFEVersion (PDF/E-1)-post krævet af §5, Info-XMP-broblokkene arvet fra 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), og en trailer/ID-array krævet af §6.2 - Tilføjede TPdf.SaveAsPdfEToStream til in-memory PDF/E-output og en standard-indstillings-forkortelse
TPdf.SaveAsPdfE(FileName)til det almindelige tilfælde - Tilføjet TPdf.ValidatePdfE: kontrollerer en åben PDF for PDF/E-1-overensstemmelsesmarkører (tilstedeværelse af XMP pdfe:ISO_PDFEVersion og lighed med Info-dictionary-værdien, pdfe-udvidelsesschemabeskrivelse, Info-dictionary /ISO_PDFEVersion-indgang, trailer /ID, xmp:CreateDate / xmp:ModifyDate-tilstedeværelse) og returnerer et struktureret resultat med det registrerede overensstemmelsesniveau og sættet af fundne problemer
- Tilføjet egenskaben TPdf.PdfEConformance: returnerer overensstemmelsesniveauet for det aktuelt åbne dokument (pec1, pecNone eller pecUnknown) uden at skulle kalde ValidatePdfE eksplicit
- Nye typer eksporteret i den nye enhed FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions
- Info-ordbogs-omskrivningen er en første for PDFiumPas' PDF/x-post-behandlings-sti — den omskriver det eksisterende Info-objekt med det samme objektnummer (så xref-undersektion-/trailer-/Info-reference forbliver gyldig) og syntetiserer en frisk Info-ordbog, når kilde-traileren ikke har nogen /Info-post. PDFium selv udsender en Info-ordbog i hvert SaveAs-output, så det almindelige tilfælde er omskrivnings-stien
- Indholdsniveau-krav (skrifttypeindlejring, ToUnicode CMaps, forbudte XObjects / ExtGState-nøgler / XFA-formularer osv.) forbliver dokumentforfatterens ansvar — SaveAsPdfE vedhæfter filformat-markørerne, men ændrer ikke sideindhold eller fjerner forbudte funktioner
- Opdaterede TPdf.AboutInfo-strengen til at rapportere den aktuelle produktversion
Version 1.31.0
- Tilføjet støtte til markørinjektion for PDF/UA-1 (ISO 14289-1:2014): TPdf.SaveAsPdfUa promoverer det aktuelle dokument til en PDF/UA-1-kompatibel fil ved at efterbehandle basen-PDF'en med en inkrementel opdatering. Injektionen dækker de filformatniveau-krav, der kan håndhæves ved efterbehandling — en XMP-metadata-strøm med
pdfuaid:part = 1plus den matchende pdfaExtension:schemas-beskrivelse, obligatoriskdc:title, katalogets/MarkInfo << /Marked true /Suspects false >>og/ViewerPreferences << /DisplayDocTitle true >>(kun når kilden ikke har nogen), katalogets/Lang(når kaldende kode leverer en BCP 47-tag) og en trailer/ID-array - Tilføjede TPdf.SaveAsPdfUaToStream til in-memory PDF/UA-output og en standard-indstillings-forkortelse
TPdf.SaveAsPdfUa(FileName)til det almindelige tilfælde - Tilføjede TPdf.ValidatePdfUa: kontrollerer en åben PDF for PDF/UA-1-overholdelsesmarkører (StructTreeRoot-eksistens, /Lang, /MarkInfo /Marked true med /Suspects = false, /ViewerPreferences /DisplayDocTitle true, XMP-pdfuaid:part-identifikator, dc:title-tilstedeværelse, trailer-/ID, krypteringsstatus) og returnerer et struktureret resultat med det detekterede overholdelses-niveau og det fundne sæt af problemer
- Tilføjet egenskaben TPdf.PdfUaConformance: returnerer overensstemmelsesniveauet for det aktuelt åbne dokument (puc1, pucNone eller pucUnknown) uden at skulle kalde ValidatePdfUa eksplicit
- Nye typer eksporteret i den nye enhed FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions
- Felterne Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language, der efterlades tomme i TPdfUaSaveOptions, udfyldes automatisk fra FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage, så eksisterende kaldere kan gemme med én linje
- Indholdsniveau-krav (StructTreeRoot-tagging-fuldstændighed, Figure Alt-tekst, ToUnicode CMaps, skrifttypeindlejring osv.) forbliver dokumentforfatterens ansvar — SaveAsPdfUa vedhæfter filformat-markørerne, men ændrer ikke sideindhold eller opfinder tags. ValidatePdfUa præsenterer fraværet af StructTreeRoot som
pvuaiMissingStructTreeRoot, så kaldere kan rutere untagged dokumenter gennem en separat tagging-pipeline - Opdaterede TPdf.AboutInfo-strengen til at rapportere den aktuelle produktversion
Version 1.30.0
- PDF/A-1b-output opfylder nu ISO 19005-1 (med Cor.1:2007)-kravene for Document Information Dictionary-/XMP-ækvivalens: hver Info-ordbogspost, PDFium skriver ind i basis-PDF'en, spejles ind i XMP-pakken, inklusive Title (dc:title), Author (dc:creator), Subject (dc:description pr. Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate) og ModDate (xmp:ModifyDate). xmp:MetadataDate udsendes også
- Trailer af et PDF/A-dokument indeholder nu altid et /ID-array (ISO 19005-1 6.1.3 hårdt krav). Når TPdf.SaveAsPdfA behandler et dokument, hvis kilde allerede har en filidentifikator, genbruges de eksisterende 16-byte permanente og skiftende ID'er; ellers afledes et deterministisk 16-byte-fallback-ID fra kildebytene
- Den injicerede XMP indlejrer nu den pdfaid-udvidelsesskema-beskrivelse, der kræves af ISO 19005-1 6.7.8 ( erstattet af Cor.1) — pdfaid behandles som et udvidelsesskema relativt til XMP Specification 2004, så alle overholdende filer skal deklarere dens egenskabsnavne, værdityper og kategorier i pdfaExtension:schemas-containeren
- TPdfASaveOptions fik fem nye valgfrie felter: Producer, CreationDate, ModDate (PDF-dato-strenge i “D:YYYYMMDDHHmmSSOHH'mm'”-form), DocumentId og InstanceId (16-byte byte-strenge til trailer-/ID-arrayet). TPdf.SaveAsPdfA / SaveAsPdfAToStream auto-populerer de manglende felter fra FPDF_GetMetaText og FPDF_GetFileIdentifier, så eksisterende kaldere fortsætter med at virke uden ændringer
- TPdf.ValidatePdfA / TPdf.PdfAConformance rapporterer nu tre yderligere problemer: pvaiMissingTrailerId (ingen /ID i traileren), pvaiMissingXmpDates (xmp:CreateDate eller xmp:ModifyDate mangler) og pvaiMissingExtensionSchema (pdfaid-udvidelsesskema-beskrivelse fraværende)
- Ikke-ASCII-tegn i Title, Author, Subject, Keywords, Creator og Producer kodes nu som UTF-8 i XMP-pakken (XMP Specification kræver UTF-8), hvilket bevarer flersproget metadata-rundtur gennem SaveAsPdfA
- Opdaterede TPdf.AboutInfo-strengen til at rapportere den aktuelle produktversion
Version 1.29.0
- Opdaterede de medfølgende PDFium-DLL'er (Win32 og Win64, både standard- og V8-builds) til upstream-snapshotet fra 2026-05-22 og hentede upstream-rettelser til FPDFText_SetText / FPDFText_SetCharcodes-nedbrudsforløb samt diverse intern hærdning fra PDFium-projektet
- Eksponerede PDFiums nye FPDF_SUBSET_NEW_FONTS-gem-flag i FPdfPageOps.pas, hvilket tillader FPDF_SaveAsCopy-kaldere at anmode om automatisk subsetting af indlejrede skrifttypefiler til nytilføjede tekst-objekter. De eksisterende FPDF_INCREMENTAL-, FPDF_NO_INCREMENTAL- og FPDF_REMOVE_SECURITY-konstanter er nu defineret ved hjælp af den opstrøms bit-skift-form (den forældede numeriske værdi 3 bevares som FPDF_REMOVE_SECURITY_DEPRECATED for binær kompatibilitet)
- Tilføjet enumen FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) og det tilsvarende felt m_FontLibraryType på FPDF_LIBRARY_CONFIG i FPdfView.pas, så applikationer, der initialiserer PDFium med Skia-rendereren, nu kan vælge skrifttype-backend ved opstart
- Opdateret signaturen for TFPDFPage_InsertObject, så den matcher upstream: C-funktionen returnerer nu FPDF_BOOL (TRUE ved succes, FALSE hvis side_object er NULL, eller ejerskift mislykkes) i stedet for void. Eksisterende PDFiumPas-kaldere fortsætter med at kompilere uændret, da Delphi / FPC tillader at ignorere en funktions returværdi
- Korrigerede TPdf.AboutInfo-strengen, så den rapporterer den aktuelle produktversion (var forældet på v1.27.0 siden dokumentations-only-udgivelsen v1.28.0)
Version 1.28.0
- Væsentligt udvidet dokumentationen i siderne på tværs af hele API-referencen: hver egenskab, metode, hændelse og global funktion har nu en 3-afsnits Beskrivelse, en Bemærkninger-liste, et flerlinje Delphi Eksempel og en rigere Se også-blok — det dækker 200+ tidligere tynde sider, inklusive alle TPdf-tællere, metadata-læsere, font- og tegnadgange, sideegenskaber, indekserede records, dokumentmetoder og hele TPdfViews tilstands-, visnings- og hændelsesflade
- Finjusterede hjælpelayoutet, så det matcher den losLab visuelle basislinje, der bruges i HotXLS-reference: tilpassede h1/h2-størrelser, samlede API-navigationsgitterets stilarter i det fælles StyleSheet og fjernede de sidevise inline CSS-overstyringer på Navigation.html
- Dokumentationen leveres nu med et hjælpe-script (Docs\Build-Expand-Entries.ps1), der regenererer indgangsside-berigelsen fra en enkelt datatabel til gentagelig vedligeholdelse
Version 1.27.0
- Tilføjede PDF/A-1b-oprettelses-understøttelse: TPdf.SaveAsPdfA gemmer ethvert åbent dokument som en PDF/A-1b-overholdende fil ved at post-behandle basis-PDF'en med en inkrementel opdatering, der injicerer en XMP-metadata-stream, en sRGB ICC-OutputIntent og et opdateret dokument-katalog — alt sammen uden at kræve ekstra DLL-API'er. Virker på enhver platform, der understøttes af PDFiumPas
- Tilføjede TPdf.SaveAsPdfAToStream til in-memory PDF/A-output
- Tilføjet TPdf.ValidatePdfA: kontrollerer en åben PDF for PDF/A-overensstemmelse (XMP pdfaid-markører, OutputIntent med indlejret ICC-profil, kryptering) og returnerer et struktureret resultat med det registrerede overensstemmelsesniveau og et sæt konkrete fundne problemer
- Tilføjet egenskaben TPdf.PdfAConformance: returnerer overensstemmelsesniveauet for det aktuelt åbne dokument (pac1b, pac1a, pac2b, pac3b, pacNone eller pacUnknown) uden at skulle kalde ValidatePdfA eksplicit
- Nye typer eksporteret: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions (i ny enhed FPdfPdfa.pas)
- SaveAsPdfA understøtter en tilpasset ICC-profil via TPdfASaveOptions.IccProfileData; når den efterlades tom, bruges den indbyggede sRGB IEC61966-2.1 (HP/Microsoft, 3144 bytes)-profil automatisk
- Udskiftede den monolitiske HTML-reference med et omstruktureret webhjælpesystem: 302 individuelle API-entrysider (én pr. egenskab, metode, hændelse og global funktion), der dækker TPdf og TPdfView, hver med fuld beskrivelse, parametertabel, Delphi-kodeeksempel og See Also-links
- Tilføjede Navigation.html: et omfattende ét-sides API-navigations-index organiseret i seks sektioner (TPdf-egenskaber/metoder/hændelser, TPdfView-egenskaber/metoder/hændelser, globale funktioner) med et 5-kolonne flex-gitter til hurtig scanning
- Genopbyggede TPdf.html og TPdfView.html som kompakte komponentoversigtssider, der bevarer type-referenceafsnittene (Types, Constants, Global Variables) og linker videre til de individuelle entrysider for alle medlemmer
- Tilføjede fuldtekst-søgning drevet af Search.js med inkrementel klient-side-matching på tværs af alle 312 indekserede sider
- Opdaterede alle navigationslinjer på hele webstedet til at pege på Navigation.html
Version 1.26.0
- Tilføjede Demo/Lazarus/BatchExport, LCL-porten af v1.14.0 Delphi-BatchExport-demoen. Samme funktionssæt: multi-fil PDF -> JPG-eksport med per-fil overordnet fremgang, per-side nuværende fremgang, DPI-/kvalitet-/adgangskode-input og en kooperativt-annullerbar batch bakket af IPdfCancellationToken. Outputmappen åbnes i platformens filhåndtering, når udtrækning afsluttes med succes
Version 1.25.0
- Tilføjede Form XObject-side-genbrug til TPdf, hvilket muliggør vandmærke-, skabelon-overlay- og “stempl én side på mange”-arbejdsgange: CreateXObjectFromPage fremstiller en genanvendelig handle fra en vilkårlig side af et andet dokument; InsertFormObjectFromXObject indsætter ÉN kopi af den ombundne side i den nuværende side. Returnerer det indsatte FPDF_PAGEOBJECT, så kaldere kan positionere / skalere / rotere det med FPDFPageObj_SetMatrix og v1.9.0-TPdfMatrix-hjælperne
- Den nye TPdfXObject Pascal-klasse indpakker PDFiums FPDF_XOBJECT-handle og lukker den automatisk i sin destruktor, hvilket eliminerer den manuelle FPDF_CloseXObject-ceremoni
- Udvidede regression-suiterne for Delphi og Lazarus til 147 cases hver og C++Builder-suiten til 123 cases, med dækning af håndtagsskabning og kontrakter for indsættelse af sideobjekter
Version 1.24.0
- Tilføjede TPdf.RenderPageProgressive — en annullerbar variant af RenderPage, der driver PDFiums progressive rendering-løkke og poller en v1.7.0 IPdfCancellationToken mellem iterationer, så lange high-DPI-renders kan afbryde midt-side i stedet for at blokere kaldere indtil fuldførelse
- Returnerer en TPdfProgressiveStatus-værdi: prsDone, prsCancelled eller prsFailed. Send AToken = nil for at rendere færdigt uden nogensinde at pause (ingen mulighed for prsCancelled)
- Bruger den samme zero-copy fast path, der blev indført i v1.21.0 — PDFium render direkte ind i destinations-TBitmap'ens DIB. Den samme legacy fallback gælder, når DIB'en ikke kan indpakkes
- Udvidede regression-suiterne for Delphi og Lazarus til 145 cases hver og C++Builder-suiten til 121 cases, med dækning af nil-token (fuldfører), præannulleret token (prsCancelled) og pixelækvivalens med synkron RenderPage på en levende token
Version 1.23.0
- Tilføjede seks nye TPdfView-metoder, der eksponerer PDFiums form-widget-tekstmarkering og Undo/Redo til applikationer: GetSelectedFormText returnerer den aktuelt markerede tekst inde i den fokuserede form-widget; SelectAllFormText markerer hvert tegn; FormUndo / FormRedo / FormCanUndo / FormCanRedo driver den fokuserede widgets redigeringshistorik. De underliggende PDFium-API'er var allerede bundet, men havde intet højt-niveau indgangspunkt. Alle seks short-circuiter sikkert, når visningen er inaktiv, eller dokumentet har ingen fokuseret AcroForm-widget
- Udvidede regression-suiterne for Delphi og Lazarus til 142 cases hver og C++Builder-suiten til 119 cases, med dækning af no-form-no-focus-kontrakten for hver ny metode
Version 1.22.0
- Tilføjede side-sammensætnings-ombudere til TPdf: ImportPagesByIndex tager et nul-baseret indeks-array til at kopiere specifikke sider fra et kildedokument; ImportNPagesToOne returnerer en helt ny TPdf, hvis sider er N-up-kompositter af dette dokument; MovePages genordner sider på plads. De underliggende PDFium-API'er var allerede bundet, men havde intet Pascal-venligt indgangspunkt
- ImportPagesByIndex accepterer en tom array for at importere hver sides i kilden (svarende til at sende nil på C ABI-niveau)
- Udvidede Delphi- og Lazarus-regressionssuiterne til 136 tilfælde hver og C++Builder-suitten til 115 tilfælde, der dækker delmængde-import, helt-dokument-import, side-omordning og N-up-komposit
Version 1.21.0
- Forbedrede rendering-ydeevne ved at skifte TPdf.RenderPage / TPdf.RenderTile (og de tilsvarende TPdfView-hjælpere) til en zero-copy-output-sti. PDFium skriver nu direkte ind i destinations-TBitmap'ens DIB-buffer i stedet for ind i en intern buffer, der derefter blev kopieret række for række, hvilket sparer én bredde x højde x 4 byte hukommelseskopi pr. render. Forbedringen er mest mærkbar ved high DPI (thumbnail-paneler, trykkvalitet-eksport, batch-eksport)
- Den gamle per-scanline-sti bevares som en sikkerheds-fallback for det usandsynlige tilfælde, hvor destinations-DIB'en ikke kan ombrydes (ekstreme dimensioner, usædvanlig stride, OOM). Adfærden er byte-identisk mellem de to stier, blot langsommere i fallback'en
- Udvidede Delphi- og Lazarus-regressionssuiterne til 132 tilfælde hver og C++Builder-suitten til 112 tilfælde, der dækker caller-bitmap pf32bit-opgradering, dimensions-round-trip og en stor-bitmap-stride-sanity-test
Version 1.20.0
- Tilføjede søgeresultat-fremhævning til TPdfView: HighlightSearchText(Text, MatchCase, MatchWholeWord) scanner den nuværende visningsside og returnerer antallet af fundne match, maler en HighlightColor-maske over hvert match ved hver genoptegning. ClearHighlight fjerner fremhævningerne; skift af visningen til en anden side rydder dem automatisk, da match er side-specifikke
- HighlightColor har standardværdien clYellow og er publiceret, så programmer kan tematisere markeringen, så den matcher deres UI-palet
- Udvidede Delphi- og Lazarus-regressionssuiterne til 129 tilfælde hver og C++Builder-suitten til 109 tilfælde, der dækker standardfarve, farve-round-trip, “real fixture word matches” mod sample.pdf-strengen og “missing word returns zero matches”-kontrakten
Version 1.19.0
- Tilføjede FitMode-egenskab til TPdfView med fire værdier: pfmNone (manuel zoom), pfmActualSize (100%), pfmFitPage (hele siden passer i viewporten) og pfmFitWidth (sidebredde matcher viewport-bredde). Den aktive fit-tilstand genanvendes automatisk ved Resize og når den nuværende side ændres, så lange dokumenter med blandede sidestørrelser forbliver perfekt indrammet
- Indstilling af Zoom direkte annullerer den aktive fit-tilstand (FitMode falder tilbage til pfmNone), hvilket matcher den almindelige PDF-fremviser-konvention, hvor indtastning af en zoom-værdi forlader Fit Page / Fit Width
- Standard er pfmNone, så eksisterende applikationer bevarer deres eksplicitte-zoom-adfærd
- Udvidede Delphi- og Lazarus-regressionssuiterne til 124 tilfælde hver og C++Builder-suitten til 106 tilfælde, der dækker standardværdi, tilstands-round-trip, fit-side, der producerer en reel zoom på et indlæst dokument, og manual-zoom-annullerer-fit-tilstand
Version 1.18.0
- Tilføjede PageColor-egenskab til TPdfView, hvilket afkobler den renderede PDF-side-baggrund fra den omsluttende kontrolls Color. Standard er clWhite, så PDF-sider renderer nu som papir-hvide uanset værtsapplikationens tema. Dark-mode-fremvisere kan nu holde rulleområdet mørkt, mens den faktiske PDF-side forbliver hvid (eller en vilkårlig farve, applikationen vælger)
- Adfærdsændring: applikationer, der plejede at indstille TPdfView.Color for at omfarve PDF-siden, bør i stedet indstille PageColor. Standardoplevelsen forbedres for det almindelige tilfælde (hvide sider på tematiserede kontrol-baggrunde) uden nogen kodeændring
- Udvidede regression-suiterne for Delphi og Lazarus til 120 cases hver og C++Builder-suiten til 103 cases, med dækning af standardværdi og farve-roundtrip
Version 1.17.0
- Tilføjede bruger-input-lock-down-toggles til TPdfView, så applikationer, der indlejrer fremviseren i kiosker, forhåndsvisningsruder eller skrivebeskyttede kontekster, kan deaktivere navigations-gestusser uden subclassing: AllowUserPageChange styrer de nye PgUp / PgDn / Ctrl+Home / Ctrl+End-tastatur-genveje; ChangePageOnMouseScrolling styrer de nye hjul-op / hjul-ned side-hop; AllowUserTextSelection er reserveret til den fremtidige muse-træk tekst-markerings-sti. Alle tre har standardværdien True, så eksisterende applikationer opgraderer uden adfærdsændring
- Musehjuls-side-navigation springer Ctrl+hjul over, så applikationer kan holde Ctrl+hjul reserveret til zoom
- Udvidede regression-suiterne for Delphi og Lazarus til 118 cases hver og C++Builder-suiten til 101 cases, med dækning af standardværdier og toggle-roundtrip
Version 1.16.2
- Udvidede TPdfView-regressionsdækningen for klik på annotationslinks, når visningens side er forskellig fra den tilknyttede TPdf-side, ved at bruge en reel headless musekliksti på tværs af Delphi, Lazarus og C++Builder
- Delphi- og Lazarus-suiterne kører nu 114 tilfælde hver, og C++Builder kører nu 99 tilfælde
Version 1.16.1
- Fikset håndteringen af linkklik i TPdfView, så automatiske annotation- og weblink-handlinger bruger den side, der aktuelt vises i visningen, også når den tilknyttede TPdf-komponent står på en anden side
- Hærdede TPdfThumbnailView mod dangling Pdf-referencer, når den tilknyttede TPdf-komponent destrueres
- Tilføjede thumbnail-reference-livstids-regressionsdækning; Delphi- og Lazarus-suiterne kører nu 113 tilfælde hver, og C++Builder kører nu 98 tilfælde
- Synkroniserede README, testdokumentation, HTML Help-søge-/indholdsindhold og genererede C++-pakkeoutput med v1.7.0- til v1.16.0-integrationsopdateringerne
Version 1.16.0
- Tilføjede en ny Delphi PrintDialog-demo (Demo/Delphi/PrintDialog), der fokuserer på N-up-udskrivning (1 / 2 / 4 / 9 sider pr. ark) med lige / ulige side-filtrering, gråtone-rendering og valgfrie 1-pixel cellekanter. Den er en bevidst lille ledsager til den eksisterende PrintPDF-demo, der allerede dækker forhåndsvisning, seneste filer, zoom og skalering
Version 1.15.0
- Tilføjet en ny TPdfThumbnailView-komponent (FPdfThumbnail-unit), der gengiver én sides miniature pr. række i et scrollbar sidepanel med hover- og markeringsfremhævning samt navigation ved klik. Designet til at stå ved siden af en TPdfView, så slutbrugere kan gennemse et langt dokument side for side
- Komponenten er registreret på losLab-palettet sammen med TPdf og TPdfView; nøgleegenskaber: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor og hændelsen OnPageClick
- Udvidede regression-suiterne for Delphi og Lazarus til 112 cases hver og C++Builder-suiten til 97 cases, med dækning af standardindstillinger, thumbnailstørrelse-roundtrip, afgrænsning af ekstreme værdier, farve-roundtrip og tildeling af hændelseshandlere
Version 1.14.0
- Tilføjede en ny Delphi BatchExport-demo (Demo/Delphi/BatchExport), der viser, hvordan man konverterer mange PDF-filer til JPG i én gennemkørsel ved hjælp af TPdf.LoadCustomDocument til streaming-indlæsning, IPdfCancellationToken til kooperativ annullering og per-fil overordnede + per-side fremgangslinjer. Demoen bruger én TPdf-instans pr. fil (PDFium selv er ikke tråd-sikker) og åbner outputmappen i Explorer, når udtrækning afsluttes med succes
Version 1.13.0
- Tilføjede et async-rendering-UI-overlay til TPdfView via tre nye egenskaber: AsyncRendering, LoadingText og LoadingColor. Når AsyncRendering er True, tegner den enkelt-side male-sti en lille “Loading...”-indikator over den renderede side, så applikationer, der bruger deres egen worker til lange renders, deler et konsistent visuelt hjælpemiddel
- Standardindstillinger bevarer den eksisterende adfærd: AsyncRendering er False, så programmer, der ikke tilvælger det, ser ingen visuel ændring
- Dokumentationen præciserer, at PDFium selv ikke er tråd-sikker — at delege renderingen til en worker kræver faktisk, at kaldere holder én TPdf pr. worker; den kommende batch-eksport-demo viser det mønster
- Udvidede regression-suiterne for Delphi og Lazarus til 106 cases hver og C++Builder-suiten til 93 cases, med dækning af standardværdier og roundtrip for de tre egenskaber
Version 1.12.0
- Tilføjede klik-drevet link-håndtering til TPdfView. Den nye LinkOptions-egenskab styrer automatisk adfærd for de fire PDF-link-handlingstyper: goto (side-hop), URI (ShellExecute), launch (ShellExecute) og indlejret GotoR (reserveret). Standarder aktiverer loAutoGoto og loAutoOpenURI; loAutoLaunch og loAutoEmbeddedGoto forbliver slukket, så et forvildet klik ikke kan køre et vilkårligt program
- Tilføjet hændelserne OnAnnotationLinkClick og OnWebLinkClick, som udløses før enhver automatisk handling og lader programmer inspicere linket, markere det som Handled eller omdirigere det (for eksempel til en sikkerhedsprompt)
- Link-klik-detektion kører kun, når gestussen er et klik snarere end et træk, ved hjælp af en frisk MouseDown-anker, så panoreringsgestusser stadig flyder gennem den eksisterende rulle-sti uændret
- Udvidede regression-suiterne for Delphi og Lazarus til 102 cases hver og C++Builder-suiten til 91 cases, med dækning af standard LinkOptions, set-roundtrip og tildeling af hændelseshandlere
Version 1.11.0
- Tilføjede visuel polering til TPdfView: PageShadowSize-, PageShadowColor- og PageBorderColor-egenskaber maler en valgfri drop-shadow under side-rektanglet og en én-pixel kant omkring det. Standarder bevarer det forrige flade look (PageShadowSize = 0; kant tegnes i standard clBlack, men blander sig ind i den standard hvide baggrund, indtil kaldere ændrer farverne)
- Tilføjet egenskaben SmoothScroll som et tilvalg til fremtidig trinvise rulleanimationer; egenskaben roundtripper i dag og er koblet op, så programmer kan gemme præferencen, mens gengivelsessiden stadig bruger den eksisterende øjeblikkelige rulleadfærd
- Udvidede regression-suiterne for Delphi og Lazarus til 98 cases hver og C++Builder-suiten til 89 cases, med dækning af standardværdier, roundtrip for egenskaben og afgrænsning af den negative skyggestørrelse
Version 1.10.0
- Tilføjet direkte billedeindsættelse gennem nye TPdf.AddImage- og TPdfView.AddImage-overloads, der tager enten en filsti eller en TBitmap, ud over den eksisterende TPicture-baserede AddPicture. AddImage(FileName) genkender ethvert format, der er registreret med VCL- eller LCL-grafikenhederne (BMP, PNG via PngImage-unit, JPG osv.) og går gennem samme pipeline som AddPicture, så adfærden er identisk
- AddImage(TBitmap) springer TPicture-mellemlæddet over, hvilket forenkler kaldere, der allerede holder en TBitmap fra rendering- eller batchgenereringsarbejde
- Udvidede Delphi- og Lazarus-regressionssuiterne til 92 cases hver og C++Builder-suiten til 84 cases, med dækning af bitmapindsættelse, sideobjektgrænser, afvisning af nil-bitmaps og indlæsning af BMP-filer
Version 1.9.0
- Tilføjede støtte til højniveau-transformationsmatricer gennem den nye
TPdfMatrix-klasse iFPdfMatrix-enheden.TPdfMatrixindpakker PDFium'sFS_MATRIXmed en OO-API til Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew og Multiply, egnet til at sammensætte transformationer, før de gives videre tilFPDFPageObj_SetMatrixog lignende PDFium-API'er - TPdfMatrix.Multiply snapshotter korrekt de seks matrix-elementer, før de nye rækkeværdier beregnes, hvilket retter et latent problem, hvor de alternative Pascal-implementeringer overskriver tidligere elementer under det samme kald og producerer forkerte resultater for enhver sammensætning ud over ren translation
- Udvidede Delphi- og Lazarus-regressionssuiterne til 88 tilfælde hver og C++Builder-suitten til 81 tilfælde, der dækker identitet, nulstilling, translate-/scale-/flip, post-multiplicativ sammensætningsrækkefølge og Multiply-regressionstilfældet
Version 1.8.0
- Tilføjede on-demand streamindlæsning gennem den nye metode
TPdf.LoadCustomDocument(AStream, AOwnsStream)og hjælpeklassenTPdfStreamAdapter, understøttet af PDFium'sFPDF_LoadCustomDocument. PDFium læser nu blokke fra den leveredeTStreamkun når det er nødvendigt, så meget store eller eksterne PDFs ikke længere kræver en forudgående kopi i hukommelsen - Tilføjede valgfri stream-ejerskab: at videregive AOwnsStream = True overdrager TStream'ens livstid til TPdf, som frigør den, når UnloadDocument kører
- Udvidede Delphi- og Lazarus-regressionssuiterne til 79 tilfælde hver og C++Builder-suitten til 75 tilfælde, der dækker streaming-indlæsning via TFileStream, owned-stream-oprydning og eksternt-ejet-stream-overlever-udlæsning-kontrakten
Version 1.7.0
- Tilføjede kooperative async-annullerings-primitiver i den nye FPdfAsync-enhed, der eksponerer IPdfCancellationToken / IPdfCancellationTokenSource og en genanvendelig PdfNoCancellationToken-singleton, så længerevarende rendering- og eksport-arbejdsgange kan understøtte ren cancel-from-UI-semantik
- Tilføjede en letvægts TPdfFuture<T>-hjælper, der kører en worker på en baggrundstråd og poster TPdfFutureResult<T>-konvolutten tilbage til hovedtråden, der skelner mellem succes-, annullerings- og fejl-tilfælde
- Udvidede Delphi- og Lazarus-regressionssuiterne til 76 cases hver og C++Builder-suiten til 73 cases med delt dækning af annulleringsstatus, idempotent annullering, callback-fordeling og registrering efter annullering
Version 1.6.10
- Tilføjet højniveauadgang med TPdf.PrintPageRanges til PDF-viewerens præference for udskriftsider, som returnerer en-baserede sideintervaller til programkode
- Tilføjede TPdf.SetFormFieldFlags / SetFormFieldFlagsAt og matchende TPdfView-hjælpere, så applikationer kan opdatere AcroForm-felt-flag via den offentlige API, inklusive adgangskode- og multi-select-flag-dækning
- Hærdede PDFium-binding-ABI-dækning for Windows-størrelse FPDF_DWORD, FPDF_FILEACCESS-tilbagekald og V8-embedder-slot-felter
Version 1.6.9
- Tilføjet lave niveauer af Skia-gengivelsesbindinger til de nyligt eksporterede FPDF_RenderPageSkia- og FPDF_FFLDrawSkia-API'er i de medfølgende standard- og V8-PDFium-DLL'er
- Udvidede de offentlige binding-dækningskontroller, så standard- og V8-DLL-indlæsning nu verificerer Skia-render-entry-points ved siden af de eksisterende V8/XFA-capability-probes
Version 1.6.8
- Tilføjede TPdf.SetTextPositions og TPdfSingleArray til at sætte per-tegn-positioner på eksisterende tekst-objekter via den ny-eksporterede FPDFText_SetPositions-API
- FPDFText_SetPositions er nu en påkrævet binding for de aktuelle medfølgende PDFium-DLL'er, samtidig med at det bekræftes, at Skia-gengivelsesindgangspunkterne fortsat ikke er tilgængelige, fordi DLL'erne stadig ikke eksporterer dem
- Udvidede Delphi-, C++Builder- og Lazarus-regressionssuiterne til 65 tilfælde hver med tekst-position-dækning
Version 1.6.7
- Tilføjede højt-niveau TPdf-adgang til dokument-JavaScript-name-tree-handlinger, der returnerer handlingsnavne og scripts via JavaScriptAction og JavaScriptActions
- Tilføjede TPdf.FileIdentifier til at læse permanente og skiftende trailer-ID'er som binære TBytes uden PDFium-terminator-byten
- Tilføjet TPdf.PageBox, GetPageBox og SetPageBox for MediaBox, CropBox, BleedBox, TrimBox og ArtBox på den aktuelle side
- Bekræftet at de aktuelle medfølgende PDFium-DLL'er kun efterlader Skia-gengivelsesindgangspunkterne utilgængelige ved kørsel, fordi disse exports ikke findes
- Udvidede regression-suiterne for Delphi, C++Builder og Lazarus til 64 cases hver med dækning af dokument-JavaScript, trailer-ID og sideboks
Version 1.6.6
- Tilføjet understøttelse ved kørsel for den medfølgende V8-aktiverede PDFium-DLL. Når EnableV8Engine sættes før indlæsning, vælges nu pdfium.v8.dll fra DLLs\Win32- eller DLLs\Win64-træet, og V8/XFA-only bindinger eksponeres, når den indlæste DLL stiller dem til rådighed
- Tilføjet V8FunktionerAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags og lave niveauer af valgfrie bindinger til FPDF_BStr_*, FPDF_GetRecommendedV8Flags og FPDF_GetArrayBufferAllocatorSharedInstance
- Gjorde FPDFText_SetPositions valgfri, så PDFiumPas fortsætter med at indlæse med PDFium-DLL'er, der ikke eksporterer den eksperimentelle tekstposition-indstiller
- Udvidede regression-suiterne for Delphi, C++Builder og Lazarus til 61 cases hver med dækning af funktioner fra standard-DLL og V8-DLL
Version 1.6.5
- Tilføjede tagged PDF strukturtræ-inspektion via TPdf.StructureElements og TPdfView.StructureElements, inklusive element-type, titel, alternativ tekst, faktisk tekst, udvidelsestekst, sprog, marked-content-ID'er, underordnede antal og attribut-antal
- Tilføjede Windows PDFium-udskriftstilstands-valg via TPdfPrintMode og SetPdfPrintMode, der dækker EMF-, kun-tekst-, PostScript-, pass-through-, image-mask- og Type 42-udskriftstilstande
- Tilføjede lavt-niveau-bindinger for de resterende standard-DLL PDFium-offentlige eksporter, der dækker JavaScript-handlinger, annotation-form-flag/skrifttypefarve, side-objekt-aktiv-tilstand, indekseret indsættelse, content-mark-flydende-værdier, billede-ICC-profil-data, form-objekt-fjernelse og tekst-positioner
- Udvidede Delphi-, C++Builder- og Lazarus-regressionssuiterne til 59 tilfælde hver med tagged PDF strukturtræ, udskriftstilstand og offentlig eksport-binding-dækning
Version 1.6.4
- Opdaterede Delphi-, C++Builder- og Lazarus-demoerne til automatisk at åbne genererede PDF'er, eksporteret tekst/billeder og batch-outputmapper efter vellykket oprettelse
Version 1.6.3
- Udvidede de tilpassede Delphi-, C++Builder- og Lazarus-regressionssuiter til 56 tilfælde hver med TPdfView-GUI-dækning for fit-zoom-hjælpere, enheds-/side-koordinat-round-trips, tegn-hit-testing og muse-panorering gennem skjult-vindue-fremviser-kontroller
- TPdfView-fixtures bruger nu en eksplicit visningsstørrelse og test-only-underklasser, der øver beskyttede musehåndterere, mens suiterne forbliver helt headless
Version 1.6.2
- Rettet TPdf.AddPage(0, ...), så den indsatte første side bliver den aktive side øjeblikkeligt. Eksisterende prøvekode fortsætter med at virke, mens PageNumber nu rapporterer en gyldig én-baseret side efter indsættelse
- Synkroniserede Lazarus-pakkeversionen og udvidede de afstemte regression-suiter for Delphi, C++Builder og Lazarus til 52 cases hver
Version 1.6.1
- Rettet et forkert minimums-versions-krav i v1.6.0 PDF-versions-overholdelses-validatoren: SetState-handlingen blev omklassificeret fra PDF 1.5 ned til PDF 1.2, hvilket matcher PDF 1.2 Reference 6.9.9. PDF 1.3-/1.4-SaveAs-mål, der indeholder SetState-handlinger, gemmes nu korrekt i stedet for at blive afvist
- Tilføjet tilsvarende leksikale PDF 1.2-kontroller efter samme specifikationsafsnit: handlingerne Sound, Movie og NOP samt Separation-farverummet blokeres nu, når den valgte målversion er ældre end PDF 1.2
- Udvidede regression-suiterne for Delphi, C++Builder og Lazarus til 50 cases hver ved at tilføje en positiv PDF 1.4 SetState-accepttest, der låser den rettede grænse fast
Version 1.6.0
- Hærdede eksplicitte PDF 1.0- til PDF 1.7-SaveAs-mål med en fuld versionsfunktion-validator, der dækker hele PDF 1.1- til ISO 32000-1-funktionstidslinjen. Validatoren blokerer nu gem, der indeholder ordbogsposter, filternavne, annotationsundertyper, handlingstyper, skrifttyper, farverum eller krypteringsparametre, der introduceres efter den valgte målversion. Eksempler: JBIG2Decode (1.4+), MarkInfo / Tagged PDF (1.4+), OutputIntents (1.4+), ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+), Polygon / PolyLine / Caret / Screen / Watermark / Redact-annotationer, AES- og AES-256-kryptering (CFM AESV2 / AESV3), Perms / Legal / Requirements / NeedsRendering-katalogposter og versions-porterede handlinger såsom JavaScript, Trans, SetState, Rendition, GoToE, GoTo3DView afvises alle, når mål-PDF-versionen ikke kan repræsentere dem
Version 1.5.13
- Udvidede Delphi-, C++Builder- og Lazarus-regressionssuiterne til 49 tilfælde hver, hvilket tilføjede direkte dækning for afvisning af ICCBased-farverum, Tagged PDF MarkInfo, Polygon-annotationer, AES (V2)-kryptering og Redact-annotationer mod henholdsvis PDF 1.2-/1.3-/1.4-/1.5-/1.6-mål
Version 1.5.12
- Rettet SaveAs-post-behandling for inkrementelle katalog-omskrivninger. PDFiumPas validerer nu det seneste gentagne indirekte objekt, så eksisterende katalog-/Version-tilsidesættelser erstattes korrekt ved gem til en eksplicit ældre PDF-målversion
- Udvidede Delphi-, C++Builder- og Lazarus-regressionssuiterne til 44 tilfælde hver, hvilket tilføjede direkte dækning for udskiftning af forældet katalog-/Version, PDF 1.4-katalog-versionsnormalisering og afvisning af gennemsigtigheds- og portable-collection-funktioner, når den valgte PDF-målversion ikke kan repræsentere dem
Version 1.5.11
- Hærdede versioneret SaveAs-output for eksplicitte PDF 1.3-, 1.4-, 1.5-, 1.6- og 1.7-mål. PDFiumPas normaliserer nu katalog-versionsmarkører, holder standard Fit Height OpenAction versions-sikker og afviser nyere PDF-funktioner, når den valgte målversion ikke kan repræsentere dem
- Tilføjet regressionsdækning for Delphi, C++Builder og Lazarus, der gemmer og genindlæser eksplicitte PDF 1.3- til PDF 1.7-filer og verificerer den endelige header, standard OpenAction til Fit Height og den rapporterede PDF-version
Version 1.5.10
- Trådte fra spec'ens mulighed B til mulighed C ved at tilføje TPdfView-smoke-tests i alle tre IDE-suiter (Tests.PdfView). Hver suite bygger en skjult forældre-TForm (via TForm.CreateNew på Pascal-sider og
new TForm(NULL, 0)på C++Builder-siden), reparenterer en TPdfView, sætter Active := True og verificerer derefter round-trip-fladen for PageCount, PageNumber-standard, Zoom, Rotation, DisplayMode og at View.Text matcher den underliggende TPdf.Text. Hver IDE-suite kører nu 39 tilfælde
Version 1.5.9
- Trådte fra spec'ens mulighed A til mulighed B ved at tilføje render-smoke-tests i alle tre IDE-suiter. Hver Tests.Render-suite kalder TPdf.RenderPage på sample.pdf og verificerer tre robuste signaler i stedet for byte-for-byte-checksummer: den returnerede bitmap matcher præcist den anmodede pixel-størrelse; forskellige anmodede størrelser (200x100, 64x256) producerer matchende bitmapper; og den renderede side er mindst 95% hvid baggrund med mindst 50 (Lazarus: 20) ikke-hvide pixels, der markerer den antialiasede tekst. Hver IDE-suite kører nu 33 tilfælde
Version 1.5.8
- Lukkede de oprindelige A(2)-testplan-grupper ved at tilføje syv flere regressioner pr. IDE: TPdf.CreateAnnotation, der bygger en anHighlight-annotation plus en SaveAs/LoadDocument-round-trip, AcroForm-læse-stien på Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf (FormType er ftAcroForm, FormFieldCount > 0, FlattenAllPages dropper felterne til nul), og stille læse-sti-dækning for Bookmarks, LinkAnnotationCount og WebLinkCount på et dokument, der ikke har nogen af disse funktioner. Hver IDE-suite kører nu 30 tilfælde
Version 1.5.7
- Udvidede Delphi (DUnitX)-, Lazarus (FPCUnit)- og C++Builder (GoogleTest)-suiterne med syv nye regressioner pr. IDE: PdfVersion, PageRotation, TPdf.FindFirst / FindNext-substreng-opslag, CharacterOrigin / CharacterRectangle-overensstemmelse mod AddText-origo, CreateAttachment-registrering plus en SaveAs/LoadDocument-round-trip og en accent-tekst-AddText-round-trip, der verificerer, at v1.3.0-Europæisk-TrueType-indlejringsstien bevarer Latin-1-supplementære kodepunkter intakte
Version 1.5.6
- Gemte PDF'er får nu en standard første-side Fit Height åben-handling, når ingen eksisterende OpenAction er til stede, så PDF-læsere oprindeligt viser genererede dokumenter ved sidehøjde-zoom
- Tilføjede Delphi-, Lazarus- og C++Builder-regressionsdækning for den genererede OpenAction- og Fit Height-indstilling
Version 1.5.5
- Tilføjede regressionstests på tværs af Delphi (DUnitX)-, Lazarus (FPCUnit)- og C++Builder (GoogleTest)-suiterne for den indekserede tegn- og skrifttype-inspektions-API-overflade (TPdf.FontBaseName, FontFamilyName, FontWeight, FontItalicAngle, FontData, FontIsEmbedded, CharacterFontWeight, CharacterAngle). Lazarus-suiten springer bevidst FontData over, som i øjeblikket access-violates inde i FPDFFont_GetFontData under FPC
Version 1.5.4
- Tilføjede en C++Builder Attachment-demo portet fra Delphi-prøven, der dækker oprettelse af PDF'er, tilføjelse, oplisting, udtrækning, sletning og gemning af indlejrede filvedhæftninger med MIME-subtype-visning
Version 1.5.3
- Eksponerede spread-side-beregningen, der bakker TPdfView to-side-tilstande, som enheds-niveau-hjælperen ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo). Adfærden er uændret; hjælperen gør cover-bevidst-reglen uafhængigt testbar uden at instantiere en fremviser
- Tilføjet fem regressionstests på tværs af Delphi (DUnitX)-, Lazarus (FPCUnit)- og C++Builder (GoogleTest)-suiterne, der dækker tomme dokumenter, den normale to-siders parring, forside-siden stående alene i dmTwoPageContinuousWithCover, par efter forsiden og afgrænsning ved sidste side / uden for intervallet
Version 1.5.2
- Tilføjede dokument-sprog-understøttelse via TPdf.Language, afbildet til PDF-katalogets /Lang-post
- Tilføjede vedhæftnings-MIME-subtype-adgang med TPdf.AttachmentType
- Tilføjet anRedact til TPdfAnnotationSubtype og tilføjet hjælpefunktioner til fjernelse af sideobjekter for TPdf og TPdfView
- Opdaterede viewer- og vedhæftningsdemoerne, så de viser de nye oplysninger om sprog og vedhæftningstype, når de er tilgængelige
Version 1.5.1
- Tilføjet dmTwoPageContinuousWithCover til TPdfView, så visningslayout kan vise første side alene og derefter fortsætte med to-siders opslag
- Opdaterede Delphi-, C++Builder- og Lazarus-MultiPageViewer-demoerne til at eksponere den cover-bevidste to-side-visningstilstand
Version 1.5.0
- Tilføjede smoke-niveau automatiserede test-suiter til Delphi (DUnitX), Lazarus (FPCUnit) og C++Builder (GoogleTest). De tre suiter deler en enkelt fixture-PDF i Tests\TestData og kører de samme syv tilfælde hver, der dækker dokumentindlæsning, side-info, tekst-udtrækning, metadata, save-round-trip, PDF-hoved-validering og Compressed-egenskaben
Version 1.4.3
- Forbedrede FontProperties-demoen til at vise både TPdfView- og TPdf-skrifttype-metadata-API'er, inklusive skrifttype-handles, skrifttype-datastørrelse og tegn-metrik
- Tilføjede indekserede TPdfView-tegn- og skrifttype-inspektions-egenskaber og opdaterede FontProperties-demoen til at forespørge tekst-objekt-skrifttype-metadata
Version 1.4.2
- Tilføjede indekserede tegn- og skrifttype-inspektions-egenskaber til TPdf til tekst-analyse uden at kræve en fremviser. Tegn-indekserede egenskaber (CharacterAngle, CharacterFontSize, CharacterFontWeight) forespørger per-tegn-metrik fra den nuværende sides tekst-stream. Side-objekt-indekserede egenskaber (FontAscent, FontBaseName, FontData, FontDescent, FontFamilyName, FontHandle, FontIsEmbedded, FontItalicAngle, FontWeight) forespørger skrifttype-metadata for ethvert tekst-objekt på den nuværende side
- Ikke-tekstlige sideobjekter returnerer sikre nul- eller tomme værdier for alle Font*-egenskaber i stedet for at rejse en fejl, hvilket gør det let at gennemløbe hvert sideobjekt og kun inspicere de tekstlige
- FontBaseName læser PostScript-basis-skrifttypenavnet direkte snarere end at falde tilbage på skrifttype-familienavnet, hvilket giver en mere præcis identifikator for indlejrede skrifttyper
Version 1.4.1
- Tilføjede C++Builder- og Lazarus-versioner af EuropeanText-demoen, så alle understøttede IDE-familier kan verificere accenteret europæisk tekst-generering med system-TrueType-skrifttyper
- Tilføjede C++Builder- og Lazarus-versioner af FormFill-demoen, inklusive prøve-form-PDF'er, felt-redigering, udseende-regenerering, udfyldt-gemning og flad-gemning-arbejdsgange
Version 1.4.0
- Tilføjet støtte til Lazarus / Free Pascal: den nye PDFiumLaz-pakke leverer de samme TPdf-, TPdfView- og relaterede komponenter under LCL-widget-sættet og udvider biblioteket til Lazarus IDE og Free Pascal-kompileren ved siden af de eksisterende Delphi- og C++Builder-pakker
- Tilføjede Lazarus-versioner af demoerne, så Lazarus-udviklere kan udforske enhver funktion med kørbare eksempler
- Rettet et Lazarus-kompilations-problem, hvor Free Pascal-betingede defines blev evalueret sammen med Delphi-kompiler-versions-kontrol, hvilket fik FPC-byg til at forsøge at resolve Delphi-specifikke enhedsnavne og fejle
Version 1.3.1
- Dokumenterede arbejdsgangen for formulardeling i hjælpsættet: GenerateFormAppearances, FlattenPage, FlattenAllPages og de relaterede FLAT_* / FLATTEN_* konstanter er nu dækket i TPdf, TPdfView, API-referencen, funktionsmatricen og programeksemplerne
- Fikset arkitekturtabellen på oversigtssiden, så den viser de faktiske binding-enheder, der leveres i Lib-mappen
Version 1.3.0
- Forbedrede europæisk tegn-understøttelse ved oprettelse af PDF'er. TPdf.AddText indlæser og cacher nu den matchende system-TrueType-skrifttype, før et tekst-objekt oprettes, hvilket bevarer accenterede tegn fra Czech, French, German, Spanish, Portuguese, Polish og Turkish, som PDFiums indbyggede standardskrifttyper ikke kan repræsentere
- Applikationer, der tidligere producerede spørgsmålstegn eller erstatnings-glyphs for ikke-ASCII Latin-tekst, renderer nu korrekt uden nogen kodeændring. Tilføjede EuropeanText-demoen for at illustrere funktionen
Version 1.2.0
- Tilføjede AcroForm-udseende-opdatering til TPdf: kald af GenerateFormAppearances efter modifikation af FormField[]-værdier opdaterer widget-udseendet, så udfyldte værdier er synlige i standard PDF-læsere uden at kræve en interaktiv redigerings-session
- Tilføjet hjælpere til formular-fladning i TPdf (FlattenPage / FlattenAllPages) og TPdfView (FlattenPage for den aktuelle visningsside). Fladning indlejrer udfyldte feltværdier permanent som almindeligt sideindhold og fjerner det interaktive formularlag, hvilket giver et statisk dokument, der gengives ensartet i alle visere
- Tilføjet Demo\Delphi\FormFill for at demonstrere fill-and-save og fill-and-flatten-workflows med en eksempel-AcroForm-PDF
Version 1.1.2
- Tilføjede gem-tids PDF-stream-komprimering. Den nye TPdf.Compressed-egenskab (aktiveret som standard) omskriver ukomprimerede indholds-streams til FlateDecode-komprimerede streams ved gem, hvilket reducerer filstørrelsen betydeligt for programmatisk genererede PDF'er. Applikationer, der kræver almindeligt ukomprimeret output, kan sætte Compressed til False før kald af SaveAs
Version 1.1.1
- Win64-pakke-byg inkluderer ikke længere designtids-registrerings-enheder, hvilket forhindrer byg-tids-fejl, når Win64-pakken udrulles i en ren kørselstids-kontekst
- PDFium-DLL-indlæseren søger nu først i Win32- eller Win64-underkataloget for applikationen med de standardiserede navne
pdfium.dllogpdfium.v8.dllog falder derefter tilbage til applikationens flade katalog og Windows-systemkataloget. Det matcher DLL-layoutet, der følger med komponentpakken, og gør installationen enkel
Version 1.1.0
- Rettet en visuel klipnings-defekt i TPdfView to-side-tilstand: sideindhold blødte over renden, fordi både venstre og højre side-fliser delte et enkelt klipnings-rektangel. Hver flise klipper nu uafhængigt, så indhold forbliver inden for dens side-grænse
- Forbedrede fejlmeddelelsen i Delphi-demoen, når PDFium-DLL'en ikke kan findes, med en klarere prompt med det forventede DLL-navn og sted