HotPDF Release Notes

Version history for HotPDF user-visible features, fixes, compatibility updates, and documentation changes

Note: Only the latest 500 change records are kept

Last release

  • Latest version: 2.458.0; Release date: 2026-08-03

Version 2.458.0

Added

  • ImmediateFlushLayout verplaatst voltooide paginastromen naar op bestand gebaseerde opslag voor begrensde rapportgeneratie; alinealay-out ondersteunt nu keep-with-next-, orphan- en widow-beperkingen, first-strong bidi-richting met expliciete overrides, begrensde coördinaatdiagnostiek, overerfde pagina-afmetingen, semantische /P-helpers en getypeerde pagineringsartefacten voor kopteksten, voetteksten, watermerken en paginanummers

Version 2.457.0

Added

  • SetFontFallbackChain en TextOutWithFallback voegen geordende scriptbewuste lettertypeselectie toe met Unicode-scalar-dekkingscontroles en persistente diagnostiek voor onopgeloste glyphs; verticale tekst zendt nu volledige Identity-V-runs uit met /DW2- en /W2-metrics afgeleid van OpenType vhea-, vmtx- en VORG-tabellen indien beschikbaar

Version 2.456.0

Added

  • HPDFEncodePredictor voegt strikte TIFF- en vaste of adaptieve PNG-predictor-codering toe voor packed-, 8-bit en 16-bit rasterrijen; ExtractLoadedImageToStream vermijdt full-size byte-arrays voor native of generiek gedecodeerde afbeeldingspayloads; OptimizeLoadedStreams comprimeert ondersteunde filterfamilies selectief opnieuw via memory-to-disk spill-buffers en vervangt alleen stromen die een positieve besparingsdrempel halen

Version 2.455.0

Added

  • DecodeLoadedStreamToStream composeert nu geladen PDF-filters tot een begrensde pijplijn waarvan de eindfase direct naar een aanroeperstream schrijft; DocumentDecodeBudgetBytes voegt een standaard plafond van 1 GiB toe over onafhankelijke ketens, terwijl filteraantal-, nestingsdiepte-, cyclische-referentie- en recursieve-stroombeveiligingen gestructureerde pijplijndiagnostiek blootleggen

Version 2.454.0

Added

  • Grote geladen stromen blijven nu op bronbestandbereiken tot mutatie en spillen overschitte wijzigingen naar eigendomstijdelijke bestanden via LoadedStreamMemoryThreshold; gecomprimeerde object-stream-leden worden geïndexeerd en per objectnummer bij eerste gebruik gerealiseerd; LoadFromRandomAccessSource voegt HTTP-range- en aangepaste-opslag-integratie toe, met stream- en objectcache-diagnostiek

Version 2.453.0

Changed

  • Incrementele opslagen behouden nu de permanente trailer-ID over elke revisie, roteren alleen de modificatie-ID, zenden geen toegevoegde revisie uit wanneer de geladen objectgrafiek ongewijzigd is, en leggen hybrid-reference-samenvoegbeslissingen bloot via GetLoadedXRefMergeInfo met expliciete xref-stream-, tabeloverlap- en nieuwste-revisie-voorrijkounters

Version 2.452.0

Added

  • Native PDF 2.0-uitvoer toegevoegd plus PDF/A-4-, PDF/A-4e-, PDF/A-4f- en PDF/UA-2-creatie, met revisiebewuste XMP-identificatie, PDF 2.0-structuurrollen, namespace-registratie via RegisterStructureNamespace en AddStructureElementNS, strikte PDF/UA-2-structuurvalidatie en profielneutrale bijbehorende bestanden via AddPDFAssociatedFile

Version 2.451.0

Added

  • DetectFacturXInvoice stelt nu het gedecodeerde MIME-type van de primaire bijlage en de gebonden XMP-namespace-URI bloot, terwijl ValidateFacturXInvoice de exacte FileSpec kruislings controleert die wordt gedeeld door Catalog /AF en de EmbeddedFiles-naamboom, /F- en /UF-namen, XML-MIME-type, XMP DocumentType en de profielspecifieke Factur-X- of ZUGFeRD-namespace via vier toegewijde issue-vlaggen

Version 2.450.0

Added

  • Preflight JSON-, HTML- en veraPDF-stijlbevindingen dragen nu stabiele namespaced ruleId-waarden plus machineleesbare locaties met logisch bereik, pad, PDF-sleutel en exact objectnummer, pagina-index of byte-offset indien beschikbaar; JSON-rapporten zenden ook de gedocumenteerde ISO spec-mappings uit en blijven geldig wanneer arrays meerdere bevindingen bevatten

Version 2.449.0

Added

  • SanitiseLoadedDocument past nu JavaScript-only-, actieve-content- of strikte niet-vertrouwde-documentbeleidsregels toe op een geladen PDF, rapporteert verwijderde acties en payloads, faalt gesloten voor onbekende actietypen, verwijdert onbereikbare objecten via een begrensde cycle-safe bijna-lineaire traversering, comprimeert levende objectnummers en vervangt atomair de bron bij opslaan op dezelfde plaats

Version 2.448.0

Added

  • De renderer voor geladen pagina's voert nu gekleurde en niet-gekleurde tiling-patronen uit plus axiale en radiale arceringspatronen voor vullingen en strepen, inclusief patroonmatrices, tintovererving, padclipping, gecachte inhoudstokensering, geneste grafische-statusherstel en begrensde recursie- en tile-aantallen voor vijandige bronnen

Version 2.447.0

Added

  • Een configureerbaar 256 MiB-per-keten DecodeBudgetBytes-plafond toegevoegd dat uitvoer van geneste Flate-, LZW-, ASCIIHex-, ASCII85-, RunLength- en image-predictor-fasen samenvoegt voordat ze het geheugen bereiken, met GetLastDecodeBudgetInfo-diagnostiek en nul als een expliciete onbeperkte modus

Version 2.446.0

Added

  • Opt-in LinearizeOutput toegevoegd voor snelle webweergave, waarbij het linearisatie-parameterdictionary in de eerste 1024 bytes wordt uitgezonden, hint-tabellen voor eerste pagina en gedeelde objecten, afhankelijkheidsgeordende paginasecties en twee compatibiliteits-cross-reference-tabellen, met behoud van directe bestands- en streamuitvoer en betrouwbare herlaaddetectie

Version 2.445.0

Added

  • Geladen PDF's gebruiken nu begrensde cross-reference-herstel na beschadigde startxref-declaraties of onbruikbare xref-gegevens, waarbij eerst een geldige tabel of stream wordt herplaatst en daarna gevalideerde directe-object-offsets worden herbouwd met nieuwste-definitie-voorrang, geneste-object-fout-positief-filtering, configureerbare scan- en objectbudgetten, begrensde xref-anker-pogingen, gestructureerde diagnostiek en full-rewrite-opslaan

Version 2.444.0

Added

  • AnalyzeLoadedSignatureRevisions classificeert nu elke incrementele revisie na een geselecteerde handtekening als langetermijnvalidatie, formulierinvulling en -ondertekening, annotaties of andere wijzigingen, rapporteert gewijzigde en bevrijde objecten en veldnamen, en evalueert DocMDP- en FieldMDP-naleving onafhankelijk over traditionele, stream-, hybride- en gecomprimeerde-object-xref-geschiedenis

Version 2.443.0

Added

  • VerifyLoadedSignatureWithTrust en HPDFValidateCMSCertificatePath bouwen nu ondertekenaar-certificaatpaden naar door de aanroeper geleverde vertrouwensankers en verifiëren certificaathandtekeningen, geldigheidsperioden, Basic Constraints, padlengte-beperkingen en Key Usage
  • Offline-herroepingsvalidatie verifieert nu OCSP- en CRL-handtekeningen, responder-autoriteit, certificaatidentiteit, statusversheid en herroepingstijden, waarbij per-handtekening VRI-bewijs wordt geprefereerd boven documentniveau-DSS, aanroeperbewijs en CMS-CRL's
  • THPDFSignatureInfo.CertificateValidation rapporteert vertrouwen, padlengte, vertrouwensanker, evaluatietijd, herroepingsstatus en -bron, herroepingstijd en validatieproblemen onafhankelijk van cryptografische svValid

Version 2.442.0

Added

  • Verificatie van geladen handtekeningen valideert nu cryptografisch RFC 3161-document-timestamps tegen de PDF /ByteRange en handtekening-timestamp-tokens tegen de bovenliggende CMS-handtekeningwaarde, terwijl THPDFSignatureInfo.Timestamp het timestamp-type, de status, het beleid, de message-imprint, het serienummer, de generatietijd, de nauwkeurigheid, de ordening, de nonce, de TSA-identiteit en de certificaatdetails van de token-ondertekenaar blootlegt

Version 2.441.0

Added

  • Verificatie van geladen handtekeningen ondersteunt nu CMS RSA-PSS-handtekeningen met SHA-1, SHA-256, SHA-384 of SHA-512 en valideert expliciete hash-, MGF1-hash-, salt-length- en trailer-field-parameters
  • THPDFSignatureInfo rapporteert nu SignedRevisionLength en UnsignedTrailingBytes, en svInvalidByteRange identificeert structureel onveilige PDF-handtekeningbereiken

Changed

  • Handtekeningverificatie herstelt nu de stream-positie van de aanroeper, vergelijkt beveiligingsgevoelige byte-sequenties zonder vroege uitgangen en rapporteert complete RSA-PSS-algoritme-parameters

Fixed

  • CMS-verificatie wijst nu overlappende, out-of-bounds, afgekapte of dubbelzinnige byte-bereiken af en valideert de complete RSA PKCS#1 DigestInfo-algoritme-identifier in plaats van een willekeurige digest-grootte octet-string te accepteren

Version 2.440.0

Fixed

  • Unicode-lettertyperegistratie wijst nu de volledige glyph-advance-buffer toe voordat de lettertypemetrics worden gelezen, waardoor toegangsovertredingen in OpenType-shaping- en font-subsetting-workflows worden voorkomen
  • GetWideTextWidth interpreteert gecachte Unicode-advances nu in em-eenheden en valt terug op platformmeting wanneer een glyph-metric niet beschikbaar is, waardoor correct geschaalde breedten voor regelafbreking en lay-out worden hersteld
  • BeginIncrementalUpdate markeert geladen objecten nu schoon voordat wijzigingen van de aanroeper worden bijgehouden, zodat ongewijzigde objecten niet worden herschreven en verweesde encryptie-woordenboeken correct worden vrijgegeven in de toegevoegde cross-reference-sectie

Version 2.439.0

Added

  • HPDFDecodePredictor en HPDFTryDecodePredictor bieden begrensde decodering voor TIFF 1-, 2-, 4-, 8- en 16-bit predictie en alle vijf PNG-rijfilters, met strikte rijvalidatie en bruikbare diagnostiek
  • TPDFLZWDecompressor voegt directe stream-uitvoer, herbruikbare non-raising decode-methoden, configureerbare uitvoerlimieten en stream-terminator-vereisten toe, en per-decode code-breedte-, woordenboek-, reset-, expansie- en uitvoerstatistieken

Changed

  • LZW-decodering gebruikt nu een aaneengesloten phrase-arena, ondersteunt beide PDF EarlyChange-modi en beide bit-vulvolgorde, verwerkt clear-resets en KwKwK-expansie strikt, en laat string-uitvoer geometrisch groeien
  • Geladen Flate- en LZW-beeldextractie respecteert nu DecodeParms-predictor-geometrie en EarlyChange, gebruikt overflow-veilige rastergroottebepaling, en deelt dezelfde predictor-implementatie als xref-stream-decodering

Fixed

  • Flate-decodering met predictor-parameters leest nu uit de decompressiestroom in plaats van gecomprimeerde invoerbytes naar de predictor-fase te kopiëren
  • Misvormde LZW-codes, afgekapte rijen, ongeldige PNG-rijtags, onmogelijke predictor-geometrie en overmatige expansie falen nu deterministisch in plaats van gedeeltelijke of nog steeds gecomprimeerde beeldgegevens terug te geven

Version 2.438.0

Fixed

  • THPDFViewer compileert nu op Delphi XE2 tot en met XE8, waar WM_DPICHANGED ontbreekt in Winapi.Messages; de per-monitor DPI-berichtconstante wordt nu lokaal gedefinieerd voor toolchains ouder dan Delphi 10 Seattle, waardoor de TRIAL-bibliotheek-DCU-builds voor RAD Studio XE2..XE8 worden hersteld die eerder afbraken met E2003 Undeclared identifier

Version 2.437.0

Changed

  • GetWideTextWidth meet nu Unicode-tekst vanuit een per-codepoint advance-width-cache die eenmaal wordt gevuld vanuit de hmtx-tabel van het lettertype, in plaats van bij elke aanroep een CreateCompatibleDC + GetTextExtentPoint32W-round-trip -- een 10-100x versnelling voor woordafbreking, uitlijning en tabelcelmeting op lange Unicode-documenten, met een transparante fallback naar het legacy GDI-pad wanneer er geen Unicode-lettertype is geregistreerd

Version 2.436.0

Fixed

  • Ingebed lettertype /FontDescriptor /CapHeight gebruikt nu de werkelijke otmsCapEmHeight-metric van het gezicht in plaats van een hardgecodeerde constante, met een fallback naar ongeveer 70% van de stijging voor gezichten die nul rapporteren

Version 2.435.0

Fixed

  • Ingebedde Unicode-lettertypen behouden nu de glyphs die OpenType-shaping produceert (Arabische presentatievormen, ligaturen, contextuele alternatieven) bij subsetting -- de FUnicodeExtraUsedGlyphs-set die door MarkUnicodeGlyphUsed / EnableShapingFeatureForSubset werd geregistreerd, werd wel geschreven maar nooit door de subsetter geraadpleegd, zodat deze glyphs in de uitvoer naar .notdef degradeerden

Version 2.434.0

Added

  • THPDFWeightedCache voegt niet-promoverende inspectie, Booleaanse opzoeking, expliciete verwijdering en eigendomsoverdracht, onmiddellijke budget-trimming, hit-rate- en levenscyclusstatistieken, en streaming SHA-256-inhoudssleutels toe

Changed

  • Grote geordende ToUnicode- en CID-CMaps gebruiken nu logaritmische teken- en bereikopzoeking, behouden one-byte tot en met four-byte codespaces exact, isoleren gedeelde geparste maps per resource-root, en laten parser-opslag geometrisch groeien
  • De persistente cache van gerenderde pagina's schrijft nu PNG- en indexgegevens atomair, houdt paginastrotheid bij op paginaniveau, past verminderde limieten onmiddellijk toe, en herstelt verouderde indexen, verlaten tijdelijke bestanden, ontbrekende mappen en ongeïndexeerde documentmappen

Fixed

  • CMap-parsing verwerkt nu oneven hexadecimale nibbles correct en wijst misvormde hexadecimale gegevens, ongeldige of overlopende bereiken, negatieve CID-doelen en onbegrensde expliciete mappings af, terwijl ongeldige UTF-16-surrogatiereeksen deterministisch worden vervangen
  • Weighted-cache-vervanging geeft een object niet langer vrij wanneer dezelfde instantie onder zijn bestaande sleutel opnieuw wordt ingevoegd, en corrupte schijf-cache-PNG-vermeldingen worden verwijderd na een mislukte decodering in plaats van bij elke latere opzoeking te falen

Version 2.433.0

Added

  • Geladen handtekeningverificatie ondersteunt nu ECDSA P-256-, P-384- en P-521 CMS-handtekeningen met SHA-1, SHA-256, SHA-384 of SHA-512, inclusief issuer-and-serial- en SubjectKeyIdentifier-ondertekenarselectie, strikte DER-handtekeningvalidatie en uitgebreide algoritme- en curvemaatwerk
  • ICC-kleurbeheer valideert nu ICC v2/v4-profielen, leidt componentaantallen af en verifieert deze, dedupliceert geregistreerde profielen, zet ICCBased-vector kleuren en ruwe beeldsamples om naar sRGB met rendering-intent-ondersteuning, en behoudt de PDF Alternate-kleurruimte als een gecontroleerde fallback

Version 2.432.0

Added

  • THPDFTableCell ondersteunt nu beeldcellen (ImageIndex + ImageAspect schalen een geregistreerde afbeelding naar de kolombreedte met H/V-uitlijning) en HTML-cellen (IsHTML rendert de celtekst via TextOutHTML voor inline vet/kleur/link/sub-sup-markup), overeenkomend met de verscheidenheid aan celinhoud die een grid-export naar verwachting moet bevatten

Version 2.431.0

Added

  • Nieuwe THPDFTable lay-out- en rendering-engine (HPDFTable-unit) legt tabellen aan uit gedeclareerde kolombreedten en rijen, met per-cel tekst, uitlijning, kleur- en lettertype-overrides, ColSpan / RowSpan-samenvoeging, automatische woordafbreking met gemeten rijhoogten, koptekst- en zebra-streef-achtergronden, en automatische pagina-onderbrek-voortzetting die de koptekstband op elke pagina herhaalt -- alles bestaande THPDFPage-tekenprimitieven aansturend, zodat producenten cellen niet langer handmatig tekenen met Rectangle en TextOut

Version 2.430.0

Changed

  • Verwerkings van inhoudsstroom en bewerking van geladen pagina's schalen nu efficiënter op grote tekst- en pad-workloads, behouden aanvullende-vlak Unicode- en PDF-pad-semantiek, maken paginacaches ongeldig na mutaties, en voltooien schrijfbewerkingen naar streams die gedeeltelijke buffers accepteren

Version 2.428.0

Added

  • THPDFPage.TextOutHTML krijgt een regelafbreken-overload die een MaxWidth accepteert en lange regels op woordgrenzen afbreekt, plus inline-hyperlink- (<a href>) en sub-/superscript-tags (<sub>/<sup>); hyperlinks worden blauw en onderstreept getekend en registreren een klikbare URI-annotatie

Version 2.427.0

Changed

  • Aaneengesloten tekstreeksen die dezelfde lettertype en grootte delen zenden de Tf-operator niet meer bij elke aanroep opnieuw uit, waardoor inhoudstromen in lettertype-rijke documenten (tabellen, alinea's) krimpen terwijl ze nog steeds opnieuw worden uitgezonden na een herstel van de grafische status (Q) waar PDF dit vereist
  • De ellipsbenadering van THPDFPage gebruikt nu de standaard kubieke-Bézier-kappa-constante 0.5522847498, overeenkomend met alle andere ellips- en cirkelimplementaties in de eenheid en verwijderend de kleine straalafhankelijke afwijking die de vorige 11/20-benadering opleverde

Version 2.426.0

Added

  • De viewer warmt nu de cache met gerenderde pagina's voor voor de pagina's aangrenzend aan degene die zojuist werd getoond, met een achtergrondthread op dezelfde DPI zodat de volgende pagina-omslag de cache raakt in plaats van synchroon opnieuw te renderen; de nieuwe eigenschap PrefetchRadius bepaalt hoeveel pagina's aan elke kant vooraf worden opgewarmd (0 schakelt het uit)

Version 2.425.0

Added

  • De renderer van geladen pagina's decodeert en tekent nu inline-afbeeldingen (BI/ID/EI) in plaats van ze over te slaan, waarbij de afgekorte inline-afbeeldingssleutelwaardeparen en onbewerkte bytes op tokenisatietijd worden uitgebreid en het resultaat via dezelfde eenheidsvierkante CTM-toewijzing als voor afbeelding-XObjects wordt geplaatst

Version 2.424.2

Changed

  • De schijfcache van gerenderde pagina's verzamelt nu alle paginabestanden in één directoryscan en zet de overlopende staart in één doorgang eruit, ter vervanging van de vorige herscan-per-verwijdering-lus die in kwadratische tijd liep over het aantal pagina's per document
  • Beeldontdubbeling memoïseert nu de SHA-256 van elke opgeslagen afbeeldingsstroom en vergelijkt hashes voordat de bytes worden doorlopen, zodat het toevoegen van dezelfde grote afbeelding aan veel pagina's niet langer elke eerder opgeslagen stroom bij elke invoeging opnieuw leest

Version 2.424.1

Changed

  • De gewogen cache van gedecodeerde afbeeldingen en subset-lettertypes lost nu opzoekingen via een hash-index op en handhaaft de meest recent gebruikte volgorde via een op index gebaseerde dubbel gelinkte lijst, waardoor elke Get, Put en actualiteitspromotie van een O(n)-arrayverschuiving tot O(1)-werk wordt omgezet, zodat het renderen van grote multi-afbeeldingsdocumenten niet meer degradeert naarmate de cache vult

Version 2.424.0

Changed

  • CompressLoadedDocument eert nu CompressionLevel, verwerkt bronsstromen in begrensde stukken, behoudt de oorspronkelijke lading wanneer compressie deze niet verkleint, geeft vervangen stromen veilig vrij en markeert getransformeerde stroomobjecten als vuil zodat SaveLoadedDocument het resultaat persisteert in plaats van het ongewijzigde-bestand-kopiepad te nemen.DecompressLoadedDocument gebruikt hetzelfde eigendomsveilige streamingpad, verwijdert identiteits-/DecodeParms en laat TIFF- of PNG-voorspellerstromen gecomprimeerd totdat de voorspellerfase veilig kan worden gedecodeerd

Version 2.423.0

Added

  • THPDFPage.AddCertificationSignatureField en ConfigureCertificationSignature maken nu de enige DocMDP-certificeringsondertekening met alle drie toestemmingsniveaus en de bijpassende Catalog /Perms /DocMDP-koppeling, terwijl AttachSignatureFieldLock indirecte SigFieldLock-beleiden en bijpassende FieldMDP-referenties voor de veldscopes All, Include of Exclude uitzendt.THotPDF.GetLoadedSignaturePermissions voert een begrensde structurele inspectie uit van dezelfde toestemmingsgraaf, met inbegrip van vereiste directheid, wortelkoppeling, beleidsovereenstemming en diagnostiek, zonder de beleidsstructuur te verwarren met cryptografische geldigheid of naleving van latere revisies

Version 2.422.0

Added

  • Placeholder-tokens voor watermerk / koptekst / voettekst resolven nu documentmetadata: <%Author%> / <%Title%> / <%Subject%> / <%Keywords%> / <%Producer%> worden gesubstitueerd naast de bestaande <%PageNo%> / <%TotPage%> / <%FileName%> / datum-tijd tokens wanneer de nieuwe HPDFReplaceWatermarkPlaceholders-overload een THPDFPlaceholderDocInfo-record krijgt. De legacy 4-parameter-signatuur blijft voor callers die alleen de pagina / bestand / datum-tijd-subset nodig hebben

Version 2.421.0

Added

  • THPDFActionBuilder.GoToEmbeddedNamedDestination en GoToEmbeddedPage maken GoToE-acties voor PDF 1.6 met standaard-geldige parent, EmbeddedFiles name-tree, bijlage-annotatie en geneste /T-doelpaden, terwijl benoemde of expliciete bestemmingen, optionele root-bestandsspecificaties, NewWindow, actie-chaining en PDF/A/PDF/X-beperkingen behouden blijven
  • Inspectie van geladen acties herkent nu alle 18 actiesubtypen van ISO 32000-1 en retourneert geordende, niet-uitvoerende THPDFLoadedActionInfo-snapshots uit catalogus-/OpenAction en /AA, pagina-/AA, annotatie-/A en /AA, AcroForm-veld-/AA en outline-/A-bronnen. Dictionary- en array-vormen van /Next behouden de uitvoeringsvolgorde, terwijl misvormde entries, gedeelde nodes, cycli, excessieve diepte en excessieve node-aantallen veilig stoppen met diagnostiek
  • De enums voor annotatie-actie en JavaScript-trigger bevatten nu de page-open /PO, page-close /PC, page-visible /PV en page-invisible /PI-events met de vereiste PDF 1.5-versieonderhandeling

Version 2.420.0

Added

  • Content-stream-device stadium 3 sluit de abstractie-lus: IHPDFContentDevice krijgt DrawXObject / DrawShading / ApplyExtGState voor de Do / sh / gs-operators, en de gedeelde interpreter stuurt ze nu door. Do is gated op cdcNeedImages zodat tekst/enum-devices de zware image-decoding overslaan; sh en gs dispatchen onvoorwaardelijk. Het ExecuteViaDevice-pad van de renderer kan nu de volledige operatorset schilderen (paden + kleuren + tekst + afbeeldingen + shading + ExtGState), observeerbaar equivalent aan het legacy HandleOperator-pad. De geneste procedure ApplyExtGState is gepromoveerd tot een class-methode (DoApplyExtGState) zodat het device-pad deze deelt zonder duplicatie; method-resolution-clauses routeren de drie nieuwe interface-entries naar de Dev*-helpers zonder botsing met de reeds bestaande private helpers
  • Observer-patroon voor documentinhoud: de event THotPDF.OnLoadedDocumentModified vuurt vanuit InvalidateRenderedPageCache (PageIndex = -1, hele document) en InvalidateRenderedPageCachePage (een specifieke pagina) zodat gekoppelde viewers automatisch verversen. THPDFViewer subscribes in SetDocument en unbindt bij detach / opRemove, waarbij RefreshDocument wordt aangeroepen wanneer de huidige pagina (of het hele document) wordt getroffen. Multi-view-sync (meerdere viewers op dezelfde THotPDF) werkt nu zonder dat elke caller handmatig RefreshDocument aanroept

Version 2.419.0

Added

  • Content-stream-device abstractie stadium 1: IHPDFContentDevice krijgt het tekst-callback-oppervlak (BeginText / EndText / UpdateFont / UpdateCharSpace / UpdateWordSpace / UpdateHorizScale / UpdateLeading / UpdateRenderMode / UpdateRise / TextMove / TextSetMatrix / TextNewLine / ShowText / ShowTextArray) dat de PDF-tekst-state-machine spiegelt; de gedeelde dispatcher HPDFInterpretContentStreamDevice stuurt nu BT/ET/Tf/Tc/Tw/Tz/TL/Tr/Ts/Td/TD/Tm/T*/Tj/TJ/'/" door naar het device wanneer het cdcNeedText declareert
  • THPDFTextExtractDevice is een concreet device dat de tekst-matrices bijhoudt en per char-code één THPDFGlyphRecord emitteert (gedecodeerd via een geïnjecteerde IHPDFFontResolver) — observeerbaar equivalent aan de output van HPDFInterpretTokens maar geproduceerd via de device-interface, zodat dezelfde interpreter-loop tekstextractie, padenumeratie en rendering aanstuurt
  • De convenience-functie HPDFExtractGlyphsViaDevice wrapped het tekst-extract-device + de gedeelde interpreter in één aanroep; de bestaande HPDFInterpretContentStream / HPDFInterpretTokens blijven onaangeroerd voor huidige callers
  • Content-stream-device abstractie stadium 2: THPDFPageRenderer implementeert nu IHPDFContentDevice zodat de gedeelde dispatcher hem via dezelfde abstracte interface kan aansturen. ExecuteViaDevice is de optionele device-gedreven render-entry; het productie-Execute-pad behoudt zijn ingebouwde ExecuteStream / HandleOperator-dispatch, zodat bestaand gedrag ongewijzigd blijft. De renderer draagt elk stuk state mee dat de callbacks nodig hebben (graphics-state-stack, font-cache, GDI-handles, vier paint-bridges) en elke device-methode is een dunne delegatie, dus de device-gedreven route is observeerbaar equivalent aan de legacy-route

Version 2.418.0

Added

  • DecompressLoadedDocument is de inverse van CompressLoadedDocument: hij loopt elke indirecte stream die een /Filter /FlateDecode draagt (naam- of enkel-element-arrayvorm) af, inflate-t de payload terug naar rauwe bytes, stript de /Filter-entry en herstelt /Length; streams met andere filters (CCITT / DCT / JBIG2 / JPX / Crypt / RunLength) en multi-filter-ketens worden met rust gelaten, en corrupte Flate-payloads worden overgeslagen in plaats van weggegooid
  • EnumLoadedPageElements retourneert nu de volledige padgeometrie per ekPath-element, niet alleen de bounding box: twee nieuwe velden PathPoints: array of THPDFPathPoint en PathIsCurve: array of Boolean zijn index-parallel en dragen elk segment’s user-space-controlepunten met een flag die kubische bézier-segmenten onderscheidt van lineaire (m / l / re-randen). Callers die alleen de bbox lezen worden niet getroffen; CAD-tekeningextractie, tabel-lijndetectie en vector-replay-consumenten kunnen nu de exacte curven reconstrueren die de pagina tekende
  • De nieuwe unit HPDFContentDevice introduceert de content-stream-device-abstractie (stadium 0): een IHPDFContentDevice-interface met een TInterfacedObject-basisimplementatie (spiegelend het beproefde IHPDFFontResolver-patroon), een gedeelde dispatcher HPDFInterpretContentStreamDevice die vandaag de pad / kleur / state-operator-subset dekt, en een concreet THPDFPathEnumDevice dat per geschilderd pad één record verzamelt met volledige puntgeometrie. Dit doorbreekt de drieweg-duplicatie tussen HPDFContentStream, HPDFPageRenderer.HandleOperator en HPDFCollectPathElements; stadium 1 zal tekst/image-callbacks toevoegen en stadium 2 zal de renderer naar het device migreren

Changed

  • HPDFPageRenderer header comment updated: the “TrueType/CFF glyph-outline rendering out of scope” note was stale — embedded glyph outlines have been active since v2.342.0 (DrawTextRun calls THPDFEmbeddedTTF.DrawGlyph / THPDFEmbeddedCFF.DrawGlyph with real quadratic/cubic bezier paths; GDI TextOutW is only the fallback for unmapped characters). CID fonts via Identity-H + CIDToGIDMap are covered too

Version 2.417.0

Added

  • Five named loaded-document annotation helpers close the discovery gap where the existing ASubtype-parameterised helpers (AddLoadedHighlightAnnotation, AddLoadedSquareAnnotation, AddLoadedPolygonAnnotation) already produced these subtypes but callers had to know the secret: AddLoadedCircleAnnotation, AddLoadedUnderlineAnnotation, AddLoadedStrikeOutAnnotation, AddLoadedSquigglyAnnotation and AddLoadedPolylineAnnotation -- once landed, the XFDF interchange layer (which already recognises these subtype strings) picks them up for free
  • AddLoadedFileAttachmentAnnotation embeds an arbitrary file payload (PDF, image, office doc) as a FileAttachment annotation with the full three-object graph the spec requires: annotation dict / Filespec dict / EmbeddedFile stream with /Subtype MIME, /Params /Size and creation/modification dates; the new THPDFFileAttachmentIcon enum (faiPushPin / faiGraph / faiPaperclip / faiTag) selects the standard pin icon viewers render
  • THPDFFieldValidationOptions record + HPDFDefaultValidationOptions expose the full Adobe AF* parameter surface (Decimals / SeparatorStyle / NegativeStyle / CurrencySymbol / CurrencyBefore / RangeMin / RangeMax) that the Acrobat JS helpers accept; the existing ApplyLoadedFieldValidation(FieldIndex, Kind, DateFormat, Mask) signature is retained as a backward-compatible overload that forwards into the new record overload
  • ApplyFieldValidation and ApplyFieldCalculation bring the same Format+Keystroke+Validate / Calculate template to producer-mode fields (looked up by name) so newly-created forms get the same AF* scripts as loaded ones, without writing JavaScript by hand
  • CopyLoadedAnnotationsFromDocument deep-copies annotations from another loaded document directly PDF→PDF (no XFDF intermediary): reuses CopyObject to rebuild indirect references, streams and /AP appearances, rewrites /P to the destination page, optionally remaps /IRT reply chains via /NM, optionally clears /T author, and accepts a THPDFAnnotCopyFilterEvent callback for selective copy -- covers Widget/PrinterMark/TrapNet/Watermark/3D/Screen that the XFDF layer does not reach

Fixed

  • ApplyLoadedFieldValidation wrote the Format JavaScript under trigger key /X (annotation-exit), which Acrobat never fires for form fields -- the script was effectively dead. Corrected to /F so the format actually runs on field commit
  • ApplyLoadedFieldValidation emitted AFSpecial_FormatEx for the ArbitraryMask kind, a function that does not exist in the Adobe AF* set; only AFSpecial_KeystrokeEx(mask) is real, so the Format pass is dropped and enforcement happens at keystroke time as the spec intends
  • ApplyLoadedFieldValidation unconditionally appended AFRange_Validate(true,true,0,9999999) for numeric kinds, imposing a hidden 0..9999999 range the caller never asked for; range validation now only fires when the caller explicitly sets RangeMin or RangeMax in the options record
  • ApplyLoadedFieldValidation wrapped the ArbitraryMask in a JavaScript regex literal and emitted a hand-rolled validate script, but the mask is a literal format pattern ("AAA-9999"), not a regex; the validate pass is now removed and the keystroke mask carries the enforcement alone
  • ApplyLoadedFieldCalculation now prepends a Format+Keystroke number-formatting pair before the AFSimple_Calculate script so the aggregated result renders as a plain number, matching common PDF viewer behaviour (without it the Calculate value displays raw)

Version 2.416.0

Added

  • THPDFViewer now scrolls on hover-wheel without needing a click first: a thread-local WH_MOUSE hook (new HPDFMouseWheelHook unit, auto-installed from its initialization section) routes WM_MOUSEWHEEL to whichever THPDFViewer instance sits under the cursor, matching the behaviour of every native Windows PDF reader
  • THPDFViewer is now Per-Monitor DPI v2 aware: new HPDFPerMonitorDPI unit resolves user32!SetProcessDpiAwarenessContext (Win10 1703+, DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2) at runtime and falls back through shcore!SetProcessDpiAwareness (Win8.1+) and user32!SetProcessDPIAware (Vista+); the legacy HPDFEnablePerMonitorDPI is retained as an alias that forwards to the new layered helper
  • THPDFViewer.RenderAtPhysicalDPI published property (default True) makes the rendering DPI baseline track the monitor’s physical DPI via HPDFGetWindowDPI, so 100% zoom on a 144 DPI panel renders at native resolution; a new WMDpiChanged handler re-renders on cross-monitor moves; set False to preserve the historical 96-DPI logical baseline
  • Optional persistent disk tier for the rendered-page cache: setting THotPDF.RenderCacheFolder to a writable folder path persists every page rendered by RenderLoadedPageToBitmapCached as a PNG under <folder>\<SHA256-prefix-16>\<page>@<dpi>.png, so re-opening the same document later is instant; RenderCacheMaxDocuments (default 20) and RenderCacheMaxBytes (default 500 MB) bound the footprint with a true LRU eviction; the lookup order becomes in-memory → disk → rasterise, with disk hits back-filling the in-memory tier
  • THotPDF constructor now activates the highest available per-monitor DPI tier at first instantiation in runtime mode (skipped in csDesigning), so hosts that never call HPDFEnablePerMonitorDPI explicitly still get crisp rendering on high-DPI displays

Version 2.415.0

Toegevoegd

  • HPDFParsePDFDate Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen+HH’mm, -HH’mm, or ZDeze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen TDateTime; HPDFFormatPDFDate Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen D:YYYYMMDDHHmmSS+00’00
  • GetLoadedExtGStateInfo reads LW / LC / LJ / ca / CA Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen GetLoadedShadingCount / GetLoadedShadingName and GetLoadedPatternCount / GetLoadedPatternName enumerate the /Shading and /Pattern resource sub-dictionaries
  • ReplaceLoadedPage Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen SwitchLoadedPages exchanges two pages, ReverseLoadedPages Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen ExtractLoadedPagesToPDF Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen GetLoadedPageInheritedBox Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen
  • GetLoadedFileSpecInfo Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen GetLoadedEmbeddedFileMIME returns the /Subtype, GetLoadedEmbeddedFileChecksum returns the /Checksum digest, and THPDFNameTreeType + GetLoadedNameTreeRootCount Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen
  • HPDFEnablePerMonitorDPI dynamically enables per-monitor DPI awareness; THPDFBackgroundRenderer Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen GetLoadedPageContentStreamCount reports whether /Contents Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen GetLoadedXMPValue Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen GetLoadedDocumentReport Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen

Version 2.414.0

Toegevoegd

  • THPDFActionBuilder.URIWithIsMap Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen /IsMap true Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen URI Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen /URI string
  • AddLoadedCaretAnnotationEx Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen/Sy PDeze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen
  • GetLoadedAnnotationDA Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen /DA Deze versie voegt het beschreven API-gedrag en de ondersteuning toe via de vermelde symbolen

Version 2.413.2

Opgelost

  • Deze versie synchroniseert het beschreven API-gedrag en de ondersteuning voor de vermelde symbolen

Version 2.413.1

Fixed

  • Type1 and CFF font handling now preserves parser ownership across repeated stream checks and multi-font FontSets, returns stable glyph names and bounding boxes, keeps fractional font sizes and DPI scaling, and avoids composite-glyph and private-dictionary memory errors
  • The C++Builder AddDelPages, HugeFileBenchmark, and Security demos now compile for Win64, while page-operation and preflight examples release partially constructed objects safely

Version 2.413.0

Changed

  • The Delphi E-Invoice demo now validates required invoice fields, amount and VAT ranges, currency syntax, and embedded XML profile compatibility before writing output
  • The attach workflow now rejects identical source and output paths, reports the detected XML guideline, and combines container, PDF/A, XML profile, signature, visual consistency, Schematron, and external-report checks into one verdict

Fixed

  • E-Invoice generation and manual validation no longer report a successful result when an enabled validation layer finds issues
  • Loaded electronic-invoice summaries now read the invoice number, seller, and buyer from their correct XML aggregates, preventing false visible-text consistency findings

Version 2.412.0

Changed

  • All Delphi demos now resolve no-argument relative assets and outputs from their executable directory while preserving the caller working directory for command-line paths
  • Delphi command-line demos now provide stricter argument validation, failure exit codes, deterministic comparison inputs, and generated-document verification across page copying, text extraction, preflight, optimisation, inspection, and in-memory workflows

Fixed

  • Delphi demos no longer risk page-list overflow above 100 selected pages, create an extra blank page in the add-page workflow, close unrelated PDF viewer windows, or report failed preflight checks as successful
  • The E-Invoice attach workflow now rebuilds its current page correctly when a single-page source is converted, signed, and stripped of the temporary initial blank page

Version 2.411.0

Added

  • E-Invoice demo: new "Attach to existing PDF" mode converts an existing PDF to PDF/A-3, embeds a Factur-X/ZUGFeRD invoice XML as a document-level attachment, and optionally signs the result with a PFX certificate

Version 2.410.0

Added

  • Loaded AcroForm fields can now update flags, maximum length, text justification, per-widget rectangles, rotation, border colour, and visible or printable state, with widget enumeration for radio groups and other multi-widget fields

Fixed

  • Loaded field tooltip, border-width, and background-colour edits now mark the correct field or widget dictionaries dirty, apply visual properties to every widget, and invalidate only the affected page render cache

Version 2.409.0

Added

  • ActivateLoadedLinks turns bare HTTP, HTTPS, FTP, www., mailto:, and email text into positioned borderless URI annotations across a selected page range

Changed

  • Loaded link creation now persists reliably in incremental updates, while automatic activation snapshots existing links once per page, skips matching URI and rectangle pairs, and invalidates each changed page cache only once

Version 2.408.0

Added

  • Geladen annotaties kunnen nu hun titel, unieke naam, wijzigingsdatum, genormaliseerde rechthoek en standaard rand stijl (ononderbroken, gestreept, afgeschuind, ingelegd of onderstreept) bijwerken

Fixed

  • Bewerkingen van geladen annotaties markeren het annotatieobject nu als gewijzigd voor incrementele opslag, terwijl visuele bewerkingen alleen de gecachede weergaven van de betrokken pagina ongeldig maken en andere warme pagina's behouden

Version 2.407.0

Added

  • THPDFViewerModel slaat blijvende markeergebieden per pagina op, knipt ze bij, telt ze op, verwijdert ze en wist ze zonder de PDF te wijzigen
  • THPDFViewer voegt een markeerinteractiemodus toe met vastgelegde markeersleepbewegingen, rotatiebewuste PDF-coördinaatstelling, configureerbare kleur en een OnMarqueeSelect-callback

Fixed

  • Viewercoördinaattransformaties behouden nu de werkelijke render-DPI onder 12 en boven 2400, zodat selecties uitlijnen op de zoomlimieten van 5% en 6400%

Version 2.406.0

Added

  • THPDFViewerModel maakt rotatiebewuste paginaminiaturen rechtstreeks op een DPI die is geselecteerd voor door de aanroeper opgegeven pixelgrenzen, zonder tussentijdse paginabitmaps op volledige grootte
  • Paginavoorcaching van het viewermodel verwarmt asynchroon een gecentreerde buurt terwijl het aantal geplande pagina's wordt beperkt tot de rendercachecapaciteit

Version 2.405.0

Added

  • THPDFPageLayout ondersteunt nu de PDF 1.5-omslagspreidindelingen plTwoPageLeft en plTwoPageRight met automatische versieonderhandeling en strikt-versie-fallback

Fixed

  • BeginDoc behoudt nu de door de aanroeper geselecteerde pagina-indeling in plaats van deze altijd te vervangen door plOneColumn

Version 2.404.0

Added

  • THPDFViewerModel maakt rotatiebewuste momentopnamen van begrensde PDF-paginagebieden zonder een volledige paginabitmap toe te wijzen

Version 2.403.0

Added

  • THPDFViewerModel converteert punten bidirectioneel tussen de PDF-paginaruimte en rotatiebewuste viewercoördinaten op een door de aanroeper geselecteerde DPI

Version 2.402.0

Changed

  • Viewerzoomopdrachten gebruiken nu stabiele standaardniveaus van 5% tot 6400%, inclusief omkeerbare navigatie rond willekeurige aangepaste waarden

Version 2.401.0

Added

  • THPDFViewer voegt Ctrl+wiel-zoom, verticaal wiel-scrollen en Shift+wiel horizontaal scrollen toe zonder opnieuw te renderen voor alleen-scrollen invoer

Version 2.400.0

Added

  • THPDFViewer voegt toetsenbordpaginanavigatie, scrollen, zoomsneltoetsen en selectie van de modus Werkelijke grootte, Breedte aanpassen of Pagina aanpassen toe

Version 2.399.0

Added

  • THPDFViewer tekent of print de rotatiebewuste huidige weergave met deterministische beeldverhoudingsbewarende passing en gecentreerde plaatsing

Version 2.398.0

Added

  • THPDFViewerModel maakt vectoriele EMF-momentopnamen van elke geladen pagina of de huidige weergave die eigendom zijn van de aanroeper, inclusief niet-destructieve rotatie van 90 graden

Version 2.397.0

Added

  • THPDFViewerModel slaat rotatiebewuste paginamomentopnamen op als BMP, JPEG of PNG naar bestanden en streams die eigendom zijn van de aanroeper met configureerbare JPEG-kwaliteit

Version 2.396.0

Added

  • THPDFViewer.ResetView herstelt Werkelijke grootte, wist weergaverotatie en zoekmarkeringen terwijl de huidige pagina behouden blijft, met bijbehorende reset- en rotatieacties en gebatchte enkele-render-updates

Version 2.395.0

Added

  • THPDFViewer en THPDFViewerModel voegen kloksgewijze, tegen de klok in en herstelbare weergaverotatie toe die ook van toepassing is op paginamomentopnamen die eigendom zijn van de aanroeper zonder de PDF-pagina te wijzigen

Version 2.394.0

Added

  • THPDFViewerModel kan paginamomentopnamen maken die eigendom zijn van de aanroeper en de huidige pagina opslaan als BMP zonder een Viewer-besturingselement te construeren

Version 2.393.0

Added

  • THPDFLoadedFormField geeft nu veldvlaggen, MaxLen, pagina-index, widgetgrenzen en algemene statussen Required, NoExport, Multiline en Password weer
  • GetLoadedFormFieldMaxLength biedt directe geïndexeerde toegang tot lengtebegrenzingen van geladen tekstvelden

Version 2.392.0

Added

  • SetDocumentAttachmentMetadata hernoemt ingesloten bijlagen op documentniveau en werkt hun beschrijvingen bij vóór serialisatie

Version 2.391.0

Added

  • ExtractLoadedPagesTextToStream streamt geselecteerde tekst van geladen pagina's als UTF-8 met aangepaste scheidingstekens en optionele BOM-uitvoer
  • THPDFViewerModel voegt formulierveldhittests en deterministische toetsenbordnavigatie over pagina-widgets toe
  • THPDFSignatureInfo.CertificateTimeValidity rapporteert geldigheidsclassificaties op basis van certificaat en ondertekentijd

Fixed

  • Geladen formuliervelden zonder widget /P backreferenties kunnen nu worden toegewezen via paginaannotatiearrays

Version 2.390.0

Added

  • THPDFWatermarkTemplate.MakeCurve en THPDFPage.AddCurveWatermark voegen kubieke Bézier-curven toe aan geladen composieten en het ontwerpen van nieuwe documenten

Fixed

  • Metagegevenssetters van geladen documenten markeren het Info-woordenboek nu als gewijzigd zodat incrementele opslag titel- en auteurswijzigingen bewaart

Version 2.389.0

Added

  • InsertLoadedBlankPage voegt een lege pagina met door de aanroeper gedefinieerde afmetingen in op een exacte positie in een geladen document
  • ExtractLoadedPagesText verzamelt tekst uit een op-één-gebaseerd paginabereik met een door de aanroeper gedefinieerd scheidingsteken
  • GetLoadedFormFieldNameValuePairs en SetLoadedFormFieldNameValuePairs bieden batchgewijs name=value-formulieruitwisseling via TStrings
  • CMapResourcePath ondersteunt expliciete standaard CMap-implementatiepaden voor services, plug-ins en aangepaste applicatieindelingen

Changed

  • De VCL-viewer tekent nu zoektrefferrechthoeken en ververst wanneer de actieve treffer verandert op de huidige pagina, terwijl gekoppelde overzichtsbesturingselementen documentwijzigingen van de viewer volgen
  • Paginarendering lost nu overgeërfde mediaboxen, rotatie en bronnen op en wijst niet-nul pagina-oorsprongen correct toe bij elke rechthoekige rotatie

Fixed

  • Formuliernaamconflicten worden afgewezen voordat pagina-invoeging of -toevoeging begint wanneer samenvoegen hernoemen is uitgeschakeld, waarbij het aantal bestemmingspagina's ongewijzigd blijft
  • Het verwijderen van geladen pagina's ontkoppelt nu hun AcroForm-widgetvelden en verwijdert lege veldstructuurvertakkingen in plaats van verwijzingen naar verwijderde pagina's achter te laten
  • Zoekhelpers in cursorstijl en viewermodelmissers wissen beheerde tekstovereenkomstrecords niet langer met ruwe geheugenbewerkingen
  • Automatische CMap-detectie geeft nu de werkelijke collectieroot door aan de tekstdecoder

Version 2.388.0

Added

  • Het nieuwe DeletePages verwijdert op-één-gebaseerde paginabereiken uit geladen PDF's, dedupliceert overlappende selecties, rapporteert voortgang en herbouwt een geldige paginaboom voor opslag
  • Pagina-invoeging en -samenvoegen accepteren nu THPDFMergeOptions om recursieve overzichten te kopiëren, geïmporteerde AcroForm-velden te registreren en conflicterende veldnamen deterministisch te hernoemen
  • Het nieuwe AddLoadedRadioButton maakt een echt bovenliggend radiokeuzerondje met onderliggende widgets, gedeelde exportwaarden en volledige aan/uit-weergavestatussen
  • Het nieuwe SearchLoadedNext biedt statusloze paginagebonden zoekfunctie voor de volgende overeenkomst, terwijl GetLoadedOutlineEntries volledige recursieve overzichtsmomentopnamen retourneert met bovenliggende en niveaugegevens
  • Nieuwe Windows-certificaatwinkel-ondertekeningsoverloads selecteren een certificaat van de huidige gebruiker of de lokale machine op basis van SHA-1-vingerafdruk en ondertekenen via CNG- of verouderde CSP-privésleutels
  • De nieuwe THPDFLoadedDocumentFacade geeft getypeerde overzichts-, formulier-, annotatie-, lettertype- en afbeeldingscollecties weer met mutatie- en extractiehelpers
  • Nieuwe klassen THPDFViewer, THPDFSearchPanel, THPDFOutlineViewer, viewermodel en vieweractie voegen herbruikbare VCL-paginaweergave, navigatie, zoom, zoeken en bladwijzerbesturingselementen toe
  • Nieuwe demo's voor geavanceerd afdrukken, handtekeningvalidatie, paginaminiaturen, exporteren van geladen afbeeldingen en inspectie van getypeerde geladen documenten behandelen de end-to-end-workflows

Changed

  • Afdrukken van geladen documenten bouwt nu deterministische gecollationeerde of niet-gecollationeerde fysieke paginareeksen, ondersteunt aangepaste papierbreedte en -lengte en rapporteert printerpapiercode's, namen en formaten
  • Systeem-certificaatnummering bevat nu SHA-1-vingerafdrukken, beschikbaarheid van privésleutels, geldigheidsdata en metagegevens voor sleutelgebruik

Fixed

  • Groei van geladen zoekresultaten in tekst kopieert beheerde tekenreeksrecords niet langer met ruwe geheugenbewegingen, waardoor ongeldige-aanwijzerfouten op Win64 worden voorkomen
  • Het verwijderen van geladen pagina's maakt gedeelde paginabronnen niet langer vrij en laat geen verlopen paginaboomtellingen achter die opnieuw verschijnen na opslaan en opnieuw laden

Version 2.387.0

Added

  • Het nieuwe PrefetchLoadedPages rendert een paginabereik in de rendercache op een achtergrondwerkthread, zodat een viewer die pagina's omdraait directe warme-cache-treffers krijgt in plaats van op elke render te wachten
  • CancelLoadedPagePrefetch stopt de worker en IsLoadedPagePrefetchActive rapporteert de status; het laden van een ander document of het vernietigen van de component annuleert automatisch een actieve voorinlading
  • Gecachede rendering en de voorinlaadworker worden intern geserialiseerd, zodat RenderLoadedPageToBitmapCached veilig kan worden aangeroepen terwijl een voorinlading actief is

Version 2.386.0

Added

  • Het nieuwe FlattenLoadedAnnotations tekent de normale weergave van elke annotatie permanent in de pagina-inhoud op zijn rechthoek en verwijdert de annotatie, zodat opmaak- en formuliervisuals bewaard blijven in viewers die annotaties verbergen of niet kunnen bewerken
  • De pas volgt weergavestatus-woordenboeken via /AS, respecteert de weergavebegrenzingsdoos en -matrix bij het passen in de rechthoek en kan worden beperkt tot één annotatie-subtype of een paginabereik

Version 2.385.0

Added

  • Het nieuwe RenderLoadedPageRegionToBitmap rastert alleen een gekozen gebruiksruimtevenster van een pagina op de gevraagde DPI, zodat zeer grote pagina's tegel voor tegel kunnen worden gerenderd in begrensde geheugen bij hoge resoluties in plaats van als één overgrote bitmap
  • Tegels sluiten precies aan: de bitmap dekt precies het gevraagde gebied, zodat aangrenzende tegels zonder naden samenvallen tot de volledige pagina

Version 2.384.0

Added

  • Het nieuwe GenerateLoadedPageThumbnails rendert de geselecteerde pagina's van een geladen document en sluit ze in als JPEG-paginaminiaturen, de voorbeelden getoond in viewerpaginapanelen; de langste randgrootte en JPEG-kwaliteit zijn configureerbaar en bestaande miniaturen worden ter plekke vervangen
  • GetLoadedPageThumbnailSize leest de pixelafmetingen van een ingesloten miniatuur terug en ClearLoadedPageThumbnails verwijdert miniaturen van de geselecteerde pagina's

Version 2.383.0

Added

  • EnumLoadedPageElements rapporteert nu vectorpadelementen naast tekstuitvoeringen en afbeeldingen: elk geschilderd pad levert een element op met zijn gebruiksruimtebegrenzingsdoos, de schilderoperator (lijn, vulling of beide), de actieve vul- en lijnkleuren en het segmentaantal
  • De padloper volgt q/Q-nesting en cm-transformaties, zodat vormen getekend binnen geschaalde of vertaalde blokken hun echte paginacoördinaten rapporteren

Version 2.382.0

Added

  • THPDFPrintOptions krijgt velden Duplex (enkelvoudig, lange rand, korte rand), PaperBin en PrintQuality die in de printerapparaatmodus worden gepusht voordat de taak begint; een expliciete Orientation-waarde wordt nu ook toegepast
  • Het nieuwe HPDFGetInstalledPrinters somt de systeemprinters op en HPDFGetPrinterCapabilities rapporteert duplex- en kleurondersteuning van een printer, maximaal kopieaantal, papierbakken (met de codes die door PaperBin worden geaccepteerd) en ondersteunde resoluties

Version 2.381.0

Added

  • Het nieuwe CopyLoadedOutlinesFromDocument voegt de volledige bladwijzerboom van een ander geladen document samen in het huidige, waarbij titels, nesting, volgorde van broers/zussen en bestemmingsweergaveparameters worden bewaard en elke bestemmingspagina wordt opnieuw toegewezen via een door de aanroeper opgegeven verschuiving — de aanvulling op pagina-toevoegingssamenvoegingen zodat gecombineerde documenten beide bladwijzersets behouden

Fixed

  • GetLoadedBookmarkPageIndex vindt nu bladwijzers voorbij de eerste ingang op het hoogste niveau en binnen geneste niveaus; de vorige zoekopdracht wist later overeenkomende bladwijzers alleen bij toeval te vinden

Version 2.380.0

Added

  • Het nieuwe ImposeLoadedPagesNUp legt elk paginabereik op rasterbladen (elke kolommen-bij-rijen-indeling, configureerbaar bladformaat en tussenruimte) in leesvolgorde, waarbij elke pagina in zijn cel wordt geschaald met optionele beeldverhoudingsbewaring
  • Het nieuwe ImposeLoadedPagesBooklet produceert zadelstiksgewijs boekenbladen: pagina's worden aangevuld tot een veelvoud van vier en in boekjesvolgorde gepaird zodat dubbelzijdig afdrukken en vouwen een correct geordend boekje oplevert
  • Beide impositie-aanroepen wikkelen de bronpagina's als Form XObjects en voegen de afgewerkte bladen toe na de bestaande pagina's en geven het bladaantal terug

Fixed

  • Rendering van geladen pagina's volgt nu een indirecte verwijzing op het subwoordenboek /XObject van bronnen; pagina's waarvan de bronnen als afzonderlijke objecten aankwamen, sloegen hun afbeeldingen en formulieren stilzwijgend over

Version 2.379.0

Added

  • SaveLoadedPagesAsImages krijgt twee TIFF-indelingen: ifTIFF schrijft één enkelpagina TIFF-bestand per pagina en ifTIFFMulti voegt het volledige paginabereik samen tot één meerpagina TIFF, waarmee TIFF-uitvoer wordt verenigd met de bestaande BMP-, JPEG-, PNG-, EMF- en WMF-keuzes
  • Beide TIFF-paden respecteren de gevraagde rendering-DPI in de afbeeldingsresolutietags en gebruiken verliesvrije Deflate-compressie

Version 2.378.0

Added

  • Rendering van geladen pagina's tekent nu tekstrenderingmodi 1 (lijn) en 2 (vulling dan lijn) met echte glyfcontouren voor zowel ingesloten lettertypen als systeemlettertype-fallbacks, met gebruik van de huidige lijnkleur en lijnbreedte; de knipvarianten 4 tot 7 schilderen zoals hun basismodi

Fixed

  • Twaalf inhoudsoperatoren met één operand (Tc, Tw, Tz, TL, Ts, Tr, w, J, j, M, ri, i) lazen hun operand van de verkeerde tokenpositie en pasten altijd nul toe; teken- en woordspatiëring, horizontale schaling, regelafstand, tekststijging, rendermodus, lijnbreedte, dopjes, verbindingen en hoekmetergrens worden nu van kracht bij het renderen van geladen pagina's

Version 2.377.0

Added

  • Rendering van geladen pagina's respecteert nu de zichtbaarheid van optionele inhoud (lagen): inhoud binnen gemarkeerde secties BDC /OC en XObjects met een /OC-ingang worden verborgen wanneer de laag is uitgeschakeld, overeenkomstig de standaardconfiguratie van het document (/BaseState, /ON, /OFF)
  • Lidmaatschapswoordenboeken voor optionele inhoud evalueren hun /P-beleid (AnyOn, AllOn, AnyOff, AllOff) over de lidgroepen
  • Nieuwe laag-API's op geladen documenten: GetLoadedOptionalContentGroupCount, GetLoadedOptionalContentGroupName, GetLoadedOptionalContentGroupVisible en SetLoadedOptionalContentGroupVisible om laagstatussen te inspecteren en te overschrijven voor rendering; overschrijvingen maken de rendercache van pagina's automatisch ongeldig

Version 2.376.1

Fixed

  • Bitmaprendering van geladen pagina's schildert nu afbeeldings-XObjects: de resource-opzoekingen Do, gs en sh misten eerder hun slash-voorafgegane operandnamen en sloegen het object stilzwijgend over
  • De operator cm en Form XObject /Matrix-waarden worden nu in de juiste volgorde samengevoegd, zodat plaatsingsreeksen met vertaling plus schaling (het standaard afbeeldingsplaatsingsidioom) inhoud op de beoogde paginapositie landen

Version 2.376.0

Added

  • Nieuwe API's RegisterExponentialFunction, RegisterStitchingFunction en RegisterPostScriptFunction maken zelfstandige functieobjecten van Type 2, Type 3 en Type 4 voor gebruik overal waar een functieverwijzing wordt geaccepteerd (schaduwen, halftoon spot- en overdrachsfuncties, tintomzettingen)
  • RegisterPostScriptFunction valideert het rekenprogramma bij registratie door proefuitvoering, zodat misvormde programma's onmiddellijk worden afgewezen in plaats van stilzwijgend te degraderen in viewers
  • Het nieuwe RegisterSeparationFunc maakt een Separation-kleurruimte met een door de aanroeper opgegeven tintomzettingsfunctieobject

Fixed

  • Rendering van Type 2 (exponentiële) tintomzettingen met een- of driecomponentuitvoer schildert niet langer zwart; voorheen werden alleen viercomponent (CMYK) uitvoer correct gedecodeerd
  • Rendering van Type 3 (stiksels) tintomzettingen ondersteunt nu een willekeurig aantal subfuncties, past de /Encode-hermapping toe en accepteert /Bounds-arrays met één ingang

Version 2.375.0

Added

  • Paginarendering evalueert nu tintomzettingsfuncties van Type 4 (PostScript-rekenmachine), zodat Separation- en DeviceN-kleuren en gradiëntschaduwen aangedreven door rekenprogramma's hun echte kleuren renderen in plaats van een grijze tijdelijke aanduiding
  • De rekenmachine-evaluator dekt de volledige ISO 32000-1 7.10.5-operatorset: rekenkundig, vergelijking, booleaans en bitsgewijs, stapelmanipulatie en if/ifelse-conditionals

Fixed

  • Benoemde kleurruimteselectie (cs/CS-operators) in rendering van geladen pagina's lost nu bronnamen correct op; voorheen miste de zoekopdracht en viel de inhoud terug op de standaardkleurruimte
  • Rendering van geladen pagina's volgt nu indirecte verwijzingen naar array-gewaardeerde kleurruimten zoals /Separation- en /DeviceN-definities opgeslagen als zelfstandige objecten

Version 2.374.0

Fixed

  • XFDF-annotatie import/export bewaart nu standaardweergavegegevens van caret-annotaties via het <defaultappearance>-kind en de PDF-annotatie DA-ingang

Version 2.373.0

Fixed

  • XFDF-annotatie import/export bewaart nu de fringegeometrie van caret-annotaties via het fringe-attribuut en de PDF-annotatie RD-ingang

Version 2.372.0

Fixed

  • XFDF-annotatie import/export bewaart nu de rotatie van stempelannotaties via het rotation-attribuut en de PDF-annotatie Rotate-ingang

Version 2.371.0

Fixed

  • XFDF-annotatie import/export bewaart nu antwoordrelaties van tekstannotaties via inreplyto, replyType en de PDF-annotatie IRT- en RT-ingangen

Version 2.370.0

Added

  • XFA-numerieke, datum-tijd- en wachtwoordvelden met uitgeschakeld horizontaal scrollen worden nu afgevlakt tot AcroForm-tekst-widgets met de PDF-vlag voor niet scrollen

Version 2.369.0

Added

  • XFA-tekstvelden met uitgeschakeld scrollbeleid worden nu afgevlakt tot AcroForm-tekst-widgets met de PDF-vlag voor niet scrollen

Version 2.368.0

Added

  • XFA-tekstvelden met multiLine="1" worden nu afgevlakt tot AcroForm-tekst-widgets met de PDF-meerregelvlag

Version 2.367.0

Added

  • Toegangsbeperkingen voor XFA-subformulieren worden nu overgeërfd in onderliggende widgets zodat gegenereerde AcroForm-velden alleen-lezen blijven wanneer een voorouder readOnly, protected of nonInteractive is

Version 2.366.0

Added

  • XFA-keuzelijstafvlakking wijst nu commitOn="select" toe aan de AcroForm commit-bij-selectiewijziging-vlag voor gegenereerde keuzevelden

Version 2.365.0

Added

  • XFA-keuzelijstafvlakking wijst nu open="always"-lijsten toe aan enkelselectie AcroForm-lijstvakken in plaats van vervolgkeuze-keuzevakken

Version 2.364.0

Added

  • XFA-keuzelijstafvlakking wijst nu textEntry="1"-keuzelijsten toe aan bewerkbare AcroForm-keuzevakken terwijl getypte waarden buiten de optielijst worden bewaard

Version 2.363.0

Added

  • XFA-keuzelijstafvlakking geeft nu de voorkeur aan <items save="1">-waarden wanneer een veld afzonderlijke weergave- en opgeslagen-waardeoptielijsten heeft

Version 2.362.0

Fixed

  • XFDF-annotatie import/export bewaart nu FreeText justification- en tail-attributen via de PDF-annotatie Q- en IT-ingangen
  • JBIG2-documentstandaarden komen nu overeen met de gedocumenteerde scanvriendelijke instellingen voor verliessniveau, geïsoleerde zwarte pixelreiniging en zwartpuntgrootte

Version 2.361.0

Fixed

  • XFDF-annotatie import/export bewaart nu standaard lijnleider- en bijschriftattributen, inclusief leaderLength, leaderExtended, caption, leader-offset, caption-style, bijschriftoffsetwaarden en de importzijde leaderExtend-spelling gebruikt door compatibele XFDF-bestanden

Version 2.360.0

Added

  • XFA-afvlakking onderdrukt nu uitvoer voor velden en statische tekeningen verborgen door presence="hidden", presence="invisible" of presence="inactive", inclusief afstammelingen van verborgen containers

Version 2.359.0

Added

  • XFA-afvlakking wijst nu beperkingen op veldniveau access="readOnly", access="protected" en access="nonInteractive" toe aan de gegenereerde AcroForm alleen-lezen-vlag

Version 2.358.0

Added

  • XFA-afvlakking bewaart nu de <choiceList open="multiSelect">-semantiek door de PDF-meervoudige-selectie-vlag in te stellen op het gegenereerde AcroForm-lijstvak

Version 2.357.0

Added

  • XFA-afvlakking wijst nu <ui><passwordEdit>-velden toe aan AcroForm-tekstvelden met de PDF-wachtwoordvlag, waarbij gebonden waarden behouden blijven terwijl lezers het veld als wachtwoordstijlinvoer kunnen behandelen

Version 2.356.0

Added

  • XFA-afvlakking respecteert nu expliciete <bind match="none">-veldkoppelingen, zodat velden gemarkeerd als ongebonden leeg blijven in plaats van gelijknamige waarden te nemen uit het XFA-formulier of gegevenspakketten

Version 2.355.0

Added

  • XFA-afvlakking respecteert nu eenvoudige expliciete <bind match="dataRef" ref="...">-veldkoppelingen zoals $record.customer.legalName, zodat ApplyXFAAsAcroForm en FlattenLoadedXFA waarden bewaren opgeslagen onder een andere gegevensknoopnaam vóór automatische gelijknamige overeenkomst

Version 2.354.0

Fixed

  • XFDF-annotatie import/export bewaart nu BorderStyleAlt-kinderen van linkannotaties via het PDF-annotatie Border-array, inclusief hoekradii, breedte en streeppatroonwaarden

Version 2.353.0

Fixed

  • XFDF-annotatie import/export bewaart nu standaard interior-color-attributen voor lijn-, vierkant-, cirkel-, veelhoek-, polylijn- en redactieannotaties via het PDF-annotatie IC-kleurarray

Version 2.352.0

Fixed

  • XFDF-annotatie import/export bewaart nu standaard annotatie-randstijl en wolk-randeffectattributen, inclusief width, dashes, style en intensity

Version 2.351.0

Fixed

  • XFDF-annotatie import/export bewaart nu rijke tekst van annotaties via <contents-richtext> en importeert popup-kindgeometrie en open-status in annotatie Popup-woordenboeken

Version 2.350.0

Fixed

  • XFDF-annotatie import/export bewaart nu aanvullende standaard annotatie-attributen: tekst-open- en beoordelingsstatuswaarden, lijnpuntstijlen, link- en redactie coords, FreeText standaardstijl, standaardweergave en rotatie, en vierkant- of cirkelfringegeometrie

Version 2.349.0

Fixed

  • XFDF-annotatie import/export volgt nu ISO 19444-1-structuren voor lijnen, veelhoeken, polylijnen en inktannotaties: lijnexports bevatten volledige start/end-coördinatenparen, veelhoek- en polylijngegevens gebruiken <vertices>-kindelementen, inktgegevens gebruiken <inklist><gesture>, met puntkomma gescheiden coördinatenparen worden correct geïmporteerd en niet-ondersteunde annotatiesubtypes verhogen de geëxporteerde telling niet meer

Version 2.348.0

Added

  • De eigenschap LoadedPageCount, DuplicateLoadedPage, AddLoadedBlankPage, SetLoadedPageRotationValue en GetLoadedPageBoxRect completeren de paginabewerkings-API voor geladen documenten — pagina's dupliceren, lege scheidingspagina's invoegen, rotatie instellen en elk van de vijf paginaboxen in één aanroep lezen
  • GetLoadedEncryptionMethod geeft de codenaam terug (RC4-40 / RC4-128 / AES-128 / AES-256), GetLoadedFileStructureInfo verzamelt linearisatie / objectstroom / xref-type in één aanroep, LoadedSourceFileSize is een eigenschap en SetLoadedPDFVersion werkt de versie bij
  • StampLoadedPageImage en StampLoadedPageImageFromFile sluiten een JPEG-afbeeldings-XObject (logo / handtekeningafbeelding / QR-code) in op een geladen pagina op een gegeven rechthoek, InsertLoadedText tekent een enkele-regel tekstreeks en GetLoadedPageContentLength geeft het gedecodeerde bytetal terug
  • THPDFPrintOptions krijgt IgnoreHardMargin (verschuif printer harde marges zodat inhoud niet wordt geknipt) en AutoRotate (liggende pagina's worden automatisch liggend afgedrukt)
  • SaveLoadedPagesAsImages krijgt BMPPixelFormat / BMPMonochrome (mono / 8-bit export) en JPEGScale (1/2/4/8 subbemonsterde JPEG-decodering voor snelle miniaturen)
  • CompressLoadedDocument comprimeert elke ongecomprimeerde stroom in de geladen objectgraph met zlib en schrijft /Filter /FlateDecode, waarmee de uitvoergrootte wordt verkleind

Fixed

  • StampLoadedPageText en StampLoadedPageImage decomprimeren nu transparant FlateDecode-inhoudsstromen voordat operators worden toegevoegd — eerder beschadigde het stempelen op gecomprimeerde /Contents de zlib-payload en verdween de toegevoegde tekst/afbeelding

Version 2.347.0

Added

  • AddLoadedOutline maakt een nieuwe bladwijzer op een geladen PDF op elk nestingniveau (ParentIndex = -1 voor het hoogste niveau), met een /Dest [page /XYZ x y zoom]-bestemming — de meest gevraagde functie voor geladen documenten, waarmee het gat wordt gedicht dat HotPDF bladwijzers kon lezen/wijzigen/verwijderen maar nooit aanmaken
  • SetLoadedOutlineDestination en SetLoadedOutlineURI herschrijven de bestemmingspagina van een bestaande bladwijzer of schakelen deze om naar een URI-actie
  • ResolveLoadedNamedDestination zet een benoemde bestemmingstekenreeks om in een op-nul-gebaseerde pagina-index en AddLoadedNamedDestination registreert een nieuw anker in de /Names /Dests-boom van het geladen document
  • GetLoadedBookmarkPageIndex is een handige zoekopdracht: geef een bladwijzertitel op en krijg de pagina terug waarnaar deze verwijst

Version 2.346.0

Fixed

  • Beeldschalingskwaliteit respecteert nu /Interpolate: HALFTONE-rekmodus wordt standaard gebruikt (vloeiend verkleinen) en COLORONCOLOR wanneer de afbeelding expliciet /Interpolate false instelt, zodat kleine rasterafbeeldingen hun scherpe randen behouden waar de auteur dat bedoelde in plaats van altijd te vervagen

Version 2.345.0

Fixed

  • TJ-array-kerningstijdstellingen worden niet langer genegeerd: de numerieke elementen tussen tekenreeksruns verschuiven de tekstmatrix met -waarde × Lettergrootte / 1000, zodat nauw gespatieerde titels en logo-lettertypen van Word/Illustrator glyphen op de bedoelde offsets plaatsen
  • Tw (woordspatiëring) gaat nu ook af op de CID ideografische spatie (U+3000, code $3000), zodat uitgevuld Japans/Chinees tekst zijn woordspatiëring krijgt in plaats van alleen ASCII-code 32
  • Lettertypegewicht/cursieve detectie raadpleegt nu ook /FontDescriptor /Flags (bit 18 ForceBold) en /ItalicAngle naast de /BaseFont-naam, zodat subset-voorafgeplaatste lettertypen wiens naam geen -Bold-achtervoegsel heeft toch op het juiste gewicht worden weergegeven

Version 2.344.0

Added

  • GetLoadedTrapped leest de /Trapped-sleutel uit het Info-woordenboek (True/False/Unknown), waar het voorheen alleen schrijfbaar was — PDF/X-preflightworkflows kunnen nu de trapstatus als lus doorlopen
  • GetLoadedDocumentMetadataXML geeft de ruwe XMP-metagegevensstream-bytes terug zodat PDF/A-documenten waarvan het Info-woordenboek afwezig is toch dc:title / dc:creator / xmp:CreateDate kunnen weergeven
  • GetLoadedCollectionInfo leest de /Collection-naam van een PDF-portfolio (de EmbeddedFiles-naamsboom bevat nog steeds de bestandenlijst)
  • GetLoadedOutlineChild daalt één niveau in de bladwijzerboom, waarbij het /First-kind van een ingang op het hoogste niveau wordt teruggegeven, zodat geneste hoofd-/subhoofdstukbladwijzers niet langer onzichtbaar zijn
  • RotateLoadedPages roteert elke pagina in een bereik met een gegeven hoek (cumulerend op bestaande /Rotate), het batchequivalent van rotatie per pagina
  • SetLoadedPageBoxForRange stelt een paginabox (Media/Crop/Bleed/Trim/Art) in voor elke pagina in een bereik in één aanroep
  • GetLoadedViewerPreferences leest nu ook HideWindowUI en CenterWindow, overeenkomend met de zes sleutels die de schrijver uitzendt (voorheen kwamen er slechts vier terug)

Version 2.343.0

Fixed

  • Het knipregelidioom W n / W* n past de knip nu toe: de operator n bouwt het hangende pad en roept SelectClipPath aan in plaats van zowel het pad als de hangende knip te verwerpen, zodat rechthoek-/containerknippengeschreven als re ... W n hun inhoud niet meer buiten de grens laten lekken
  • SetMiterLimit wordt nu naar GDI gepusht voordat de lijnpen wordt gebouwd, zodat scherpe verbindingen de PDF-hoekmetergrens (standaard 4) respecteren in plaats van GDI's standaard 10 — waarmee de lange pieken op verbindingen met scherpe hoeken worden geëlimineerd
  • Type 3-glyphen gedeclareerd met d0 (kleurtoestaan) wissen nu expliciet de kleuronderdrukkingsvlag, zodat een voorafgaand d1-glyph zijn kleuronderdrukking niet meer laat bloeden in een d0-glyph

Added

  • Operators ri (rendering intent) en i (vlakheid) worden nu verbruikt en opgeslagen in de grafische status (RenderingIntent / Flatness-velden), waar ze eerder stilzwijgend werden overgeslagen

Version 2.342.0

Added

  • De operator voor tekstrenderingmodus Tr wordt nu verbruikt; modus 3 (onzichtbaar) slaat het renderen van de tekstreeks volledig over, zodat de OCR-/formulierachtergrond verborgen tekstlaag niet meer als overlappende rommelglyphen wordt geschilderd — het meest voorkomende Tr-geval in echte PDF's. Modi 1 / 2 (lijn) vallen momenteel terug op vulling totdat glyph-per-glyph-contourondersteuning beschikbaar is
  • Gemarkeerde-inhoudsoperatoren BMC / BDC / EMC en de DP / MP-eigenschapsvarianten houden nu een dieptenteller bij op de renderer, de vereiste voor de zichtbaarheidsevaluatie van OCG/OCMD in een latere ronde; BX / EX-compatibiliteitsoperatoren houden hun eigen teller bij zodat de renderer weet dat het zich in een compatibiliteitsblok bevindt

Version 2.341.0

Fixed

  • Bezier-afkortingsoperatoren v en y worden nu verwerkt door de paginarenderer, waar ze eerder stilzwijgend werden overgeslagen — afgeronde rechthoeken, cirkels en de curven geproduceerd door Illustrator / PowerPoint / InDesign worden correct weergegeven in plaats van afgekapt of weggelaten te worden
  • DrawTextRun respecteert nu Tz (horizontale tekstschaling), Tw (woordspatiëring, toegepast op het spatie-glyph) en Ts (tekststijging) zodat uitgevuld Word-exports glyphen op de juiste breedte plaatsen, koppen die horizontaal worden uitgerekt/ingedrukt hun lengte behouden en super/subscripttekst van de basislijn oprijst — voorheen werden die drie tekststatus-waarden opgeslagen maar nooit verbruikt

Version 2.340.0

Added

  • SearchLoadedPageTextWholeWord filtert de deeltekenreeksovereenkomsten van SearchLoadedPageText tot die op woordgrenzen staan (het glyph vóór het overeenkomstbegin en na het overeenkomsteinde mag geen woordteken zijn), waarmee volledige-woordovereenkomst wordt geboden zonder de zoektekenreeks te voorzien van een volgspatie
  • GetLoadedSearchHitRect reduceert het glyphbereik van een overeenkomst tot één begrenzende rechthoek (gebruiksruimte Links/Boven/Rechts/Onder, gevuld met een fractie van de lettergrootte), zodat een viewer één markeerbox per treffer kan tekenen in plaats van de glypharray te doorlopen

Version 2.339.0

Added

  • ExtractLoadedPageTextColumns reconstrueert meerkolomstekst: glyphen worden geclusterd in basislijnen door een Y-tolerantie, elke rij wordt gesorteerd op X en een rij splitst in afzonderlijke kolommen (tab-gescheiden) waar de afstand tussen opeenvolgende glyphen een configureerbaar veelvoud van de mediaane glyphadvance overschrijdt — het kolomherkennende equivalent van ExtractLoadedPageTextLayout dat eerder kolomdetectie buiten bereik verklaarde
  • THPDFPageElement bevat nu een BaselineRole (brNormal / brSuperscript / brSubscript) gevuld door EnumLoadedPageElements: een reeks waarvan de lettergrootte merkbaar kleiner is dan de pagina-mediaan en wiens Y-oorsprong boven of onder de dominante basislijn staat wordt gemarkeerd

Version 2.338.0

Fixed

  • Afbeeldings-XObjects worden nu geplaatst door het eenheidskwadrant te transformeren via de huidige CTM, in plaats van uitgerekt over de hele paginabitmap — het vorige StretchDraw(Rect(0,0,W,H)) plaatste elke afbeelding verkeerd op de pagina; afbeeldingen komen nu terecht in de rechthoek die de inhoudsstroom werkelijk specificeert

Added

  • /ImageMask-stencilafbeeldingen worden nu aan de renderingkant gedetecteerd en geschilderd met de huidige vulkleur (PDF 8.9.6.1), waar de renderer ze eerder tekende als een gewone grijsschaalbitmap

Version 2.337.0

Added

  • Renderstijl voor lijnweergave: de paginarenderer respecteert nu de operators J (LineCap: afgekapt/rond/vierkant), j (LineJoin: hoekmeter/rond/afgeschuind), M (MiterLimit) en d (LineDash-array + fase) door een geometrische pen te bouwen via ExtCreatePen in plaats van de vorige vaste CreatePen(PS_SOLID, ...), zodat ronde verbindingen, gestreepte randen en vierkante eindkapjes correct worden weergegeven
  • Renderside gs (ExtGState)-operator: het benoemde ExtGState-woordenboek in /Resources/ExtGState wordt nu verbruikt voor LW / LC / LJ / ML / ca / CA en toegepast op de grafische status, waar de renderer de operator eerder volledig liet vallen
  • Grafische status uitgebreid met LineCap / LineJoin / MiterLimit / LineDash / DashPhase / FillOpacity / StrokeOpacity-velden, allemaal met PDF-standaard beginwaarden

Fixed

  • Knip (W / W*) stelt nu de GDI-veelhoekopvulmode (ALTERNATE vs WINDING) in vóór SelectClipPath, zodat even-oneven en niet-nul-winding knipintersecties niet langer identiek zijn

Version 2.336.0

Security

  • De renderside /Indexed-kleurruimteparser knipt HiVal nu bij tot het spec-verplichte bereik [0..255], waarmee een bufferoverleesbaar vector wordt gesloten waar een misvormde HiVal nComps × indexHigh een 32-bits bytetal liet overlopen en voorbij de opzoektabel las

Added

  • AttachLoadedAnnotationMeasure schrijft een /Measure-woordenboek (PDF 1.7 §12.5.6.13) op een Lijn- of Veelhoekannotatie, met het /NumberFormat-array (eenheidsaanduiding, decimaal/breuk/afrondingsstijl, precisie), de /Scale-verhouding en de /CYX-isotropiefactor — zodat een viewer de werkelijke afstand of het werkelijke gebied kan berekenen dat de vorm beslaat

Version 2.335.0

Added

  • Renderside sh (schaduwen)-operator: axiale (Type 2) en radiale (Type 3) schaduwen worden nu geschilderd in plaats van stilzwijgend weggelaten, zodat PDF's waarvan achtergronden afhangen van Word/Excel-achtige verlopen hun kleurovergang weergeven. De schaduw wordt gediscretiseerd in bands langs zijn as en elke band wordt gevuld met de kleur die de schaduwfunctie op dat punt evalueert

Version 2.334.0

Added

  • Renderside functie-objectevaluator HPDFEvalTintTransform lost nu Type 2 Exponentieel (C0 + xN·(C1-C0) met Domein/Bereik-bijknippen), Type 0 Bemonsterd (8/16/32-bit, Encode-mapping, dichtstbijzijnde steekproef) en Type 3 Stiksels (Bounds-geselecteerde subfunctierecursie) op — zodat Separation / DeviceN-tintomzettingen en schaduwfuncties evalueren naar echte alternatieve-ruimtekleuren in plaats van de v2.333.0-grijze terugval. Type 4-PostScript-rekenmachines degraderen op een vriendelijke manier
  • De paginarenderer koppelt nu de indirecte-referentie-oplosser en de gedecodeerde-stroom-lezer van de kleurruimte-eenheid aan zijn documenttoegang bij constructie, zodat tintomzettingsstroom-objecten kunnen worden gedecodeerd via hetzelfde pad als afbeeldings-XObjects

Version 2.333.0

Added

  • Renderside CIE-gebaseerde kleurruimten: CalGray, CalRGB (gamma + 3×3-matrix) en Lab (Lab→XYZ→sRGB met het 6/29-breekpuntblok) lossen nu op naar echte kleuren in plaats van te degraderen naar zwart; de Bradford-aangepaste sRGB-matrix wordt gecached per witpunt zodat per-pixel werk een enkele 3×3-vermenigvuldiging blijft
  • Renderside ICCBased-kleurruimte lost op via zijn /Alternate (of een N-gebaseerde DeviceRGB/Gray/CMYK-schatting wanneer Alternate afwezig is), zodat pagina's met een ICC-profiel correct worden weergegeven zonder lcms-afhankelijkheid
  • Renderside Separation- en DeviceN-spotkleurrruimten: de alternatieve ruimte, tintomzettingsfunctie-referentie en componenttelling worden geparseerd; de tintomzetting is gekoppeld via een pluggeerbare evaluator zodat spotkleuren-pagina's te onderscheiden zijn van "kleur niet ingesteld" (volledige tintbeoordeling valt bij de functie-engine)
  • Generieke kleuroperatoren cs / CS / sc / SC / scn / SCN worden nu verwerkt door de paginarenderer, de vereiste voor elke niet-apparaat kleurruimte om van kracht te zijn op een geladen pagina
  • Geünificeerde kleurresolutie via HPDFResolveColor met de uitgebreide THPDFColorSpaceFamily- en THPDFCIEParams-records, ter vervanging van de per-ruimte ad-hoc-logica

Version 2.332.0

Added

  • RenderSignatureFieldAppearance schildert een vooraf ingesteld sjabloon voor de handtekeningveldweergave — rand, lichte vulling en maximaal vier gelabelde tekstregels (“Digitally signed by <Name>”, “Reason: ”, “Location: ”, “Date: ”) — geselecteerd via een THPDFSignatureDisplayOptions-set als een handige wrapper om AttachSignatureFieldAppearance
  • EnumerateSystemCertificates doorloopt een Windows-certificaatarchief (typisch MY / ROOT / CA) via dynamisch geladen Crypt32.dll en geeft onderwerp-/uitgever-weergavenamen plus het ruwe DER voor elk certificaat terug, het bouwblok voor een “kies een certificaat / USB-sleutel” ondertekenaarsinterface

Security

  • Handtekening-hashalgoritme is standaard SHA-256 met PAdES Seed Value DigestMethods die al SHA-256 / SHA-384 / SHA-512 accepteert, zodat er geen SHA-1-ondertekeningspad bestaat

Version 2.331.0

Added

  • RenderLoadedPageToDC tekent één pagina rechtstreeks in een door de aanroeper opgegeven apparaatcontext (printercanvas, offscreen-oppervlak, aangepaste TCanvas), waarbij de bitmap-rondreis voor afdruk- en hoge-DPI-workflows wordt verwijderd
  • RenderLoadedPageToClipboard plaatst een pagina op het klembord als een 24-bits bitmap of als een verbeterd metabestand (vectortekst), zodat plakken in Word / plakken in een afbeeldingseditor gewoon werkt
  • PrintLoadedDocument met een THPDFPrintOptions-record bestuurt de VCL TPrinter via een paginabereik, DPI, kopieën, sortering, FitPage-schaling en per-pagina render — de documentbibliotheek wordt nu geleverd met zijn eigen afdrukpad in plaats van elke aanroeper er zelf één te laten koppelen

Version 2.330.0

Added

  • GetLoadedPageLabel leest het /PageLabels /Nums-bereik terug dat een gegeven pagina-index dekt en geeft de stijlcode, het voorvoegsel en het startnummer terug — het leesende equivalent van SetLoadedPageLabel, zodat labels die een aanroeper zelf niet heeft aangemaakt nu kunnen worden geïnspecteerd en als lus doorlopen
  • StitchLoadedPageSideBySideEx voert de naast-elkaar-2-up-koppeling uit met een configureerbare horizontale tussenruimte en bronpagina-schaalfactor, waar het verouderde StitchLoadedPageSideBySide was vastgesteld op halve breedte zonder tussenruimte

Version 2.329.0

Added

  • AddLoadedRubberStampAnnotation met een THPDFRubberStampIcon-enum die alle 14 standaard stempelnamen dekt (Approved, AsIs, Confidential, Departmental, Draft, Experimental, Expired, Final, ForComment, ForPublicRelease, NotApproved, NotForPublicRelease, Sold, TopSecret) zodat viewers de vertrouwde bitmaps weergeven zonder een aangepaste weergavestroom
  • SetLoadedAnnotationCloudyBorder verandert een Vierkant / Cirkel / Veelhoekannotatie in een wolk (cloud-burst) rand door /BE /S /C /I plus het /IC-interieurkleur-array te schrijven
  • SetLoadedLineAnnotationCaps stelt de /LE-lijnpunt (pijlpunt) stijlen in voor Lijn / Polylijn annotaties vanuit de nieuwe THPDFLineEndStyle-enum (None / OpenArrow / ClosedArrow / Butt / ROpenArrow / RClosedArrow / Slash / Diamond)

Version 2.328.0

Added

  • EnsureLoadedFieldAppearanceStream genereert een /AP /N-Form-XObject voor een bestaand AcroForm-veld vanuit zijn /DA + /V + /Rect, zodat viewers die /NeedAppearances negeren de veldwaarde nog steeds weergeven zonder een rondreis door Acrobat
  • ApplyLoadedFieldValidation koppelt een Opmaak / Toetsaanslagen / Validatiescriptdrie aan een veld met behulp van de Acrobat AF*-helpers, voor Getal, Percentage, Datum, Tijd, Valuta, Postcode, BSN, Telefoon en WillekeurigMasker invoersoorten — de aanroeper hoeft niet langer handmatig AFNumber_Format / AFDate_FormatEx / AFRange_Validate JavaScript te schrijven
  • ApplyLoadedFieldCalculation koppelt een AFSimple_Calculate-script zodat een veld de waarden van een benoemde bronveldset aggregeert via Som / Gemiddelde / Product / Minimum / Maximum

Version 2.327.0

Added

  • Visueel zoek-en-vervangen SearchAndRedactReplaceLoaded: voor elke treffer van de zoekterm maskeert het de overeenkomstrechthoek met een gekozen kleur (of slaat het masker over met HPDF_NO_MASK) en stempelt de vervangende tekst erbovenop, als aanvulling op het byte-niveau ReplaceLoadedPageText wanneer het oorspronkelijke lettertype geen omgekeerde char-codetabel heeft of de vervanging een ander lettertype vereist
  • Regiotekstextractie GetLoadedPageTextInRegion voegt elk glyph samen waarvan de oorsprong valt binnen een gebruiksruimterechthoek, met regeleinden tussen basislijnen — het bouwblok voor “kopieer tekst uit dit vak”-UI-stromen
  • Cursorstijl SearchLoadedFirst geeft de eerste overeenkomst terug als een enkele THPDFTextMatch, zodat aanroepers treffers kunnen doorlopen zonder een volledige overeenkomstarray te beheren

Version 2.326.0

Added

  • Document-brede eigenschap MeasurementUnit (muPoints / muPixels / muInches / muMM / muCentimeters / muTwips) zodat elke hoog-niveau ontwerpcoördinaat wordt omgezet naar PDF-punten via ToPDFUnit / FromPDFUnit
  • Tijdelijke aanduidingsvervanging in watermerktekst: <%PageNo%>, <%TotPage%>, <%FileName%>, <%ShortDate%>, <%LongDate%>, <%ShortTime%>, <%LongTime%> worden per pagina opgelost bij het stempelen, zodat “Pagina X van Y” en gedateerde stempels één aanroep zijn
  • AddTextWatermarkEx-paginamethode die tijdelijke aanduidingsvervanging, eenheidsbewuste coördinaten en een unified THPDFWatermarkBase-record (hoek, dekking, positiepresets) combineert
  • Vormwatermerklpaginahelpers AddRectangleWatermark, AddEllipseWatermark, AddLineWatermark en AddPolygonWatermark, elk de padprimitieven omwikkelend in een q/Q-grafische-staatpaar met geregistreerde vul/lijn-alfa
  • Unified THPDFWatermarkTemplate-record met MakeText / MakeRectangle / MakeEllipse / MakeLine / MakePolygon-fabrieken plus een THPDFWatermarkTemplateArray-samengesteld type
  • Watermerken voor geladen documenten: StampLoadedPageText en StampLoadedPagesText voegen een transparante, geroteerde tekstreeks toe aan bestaande pagina's, rekening houdend met de MeasurementUnit en dezelfde tijdelijke aanduidingsset; StampLoadedPagesComposite past een hele sjabloonarray (tekst + vormen) toe op een paginabereik
  • Z-volgorde-controle op stempels voor geladen documenten: Underlay = True plaatst de watermerkstroom vóór de bestaande /Contents via de arrayvorm, zodat het watermerk achter de pagina-inhoud wordt weergegeven
  • EnumLoadedPageElements geeft tekstuitvoeringen (glyphen geaggregeerd op basislijn + lettertype) en afbeeldings-XObject-plaatsingen terug als THPDFPageElement-records met begrenzende boxen
  • SaveLoadedPagesAsImages multi-formaat export: BMP / JPEG / PNG raster plus EMF / WMF vector, één bestand per pagina, met configureerbare DPI, bestandsnaamvoorvoegsel en JPEG-kwaliteit
  • GetLoadedPageMetafile vectorrendering van één pagina naar een TMetafile via het nieuwe THPDFPageRenderer.ExecuteToDC-pad, waardoor tekst en vectorpaden schaalbaar blijven voor afdruk-, klembord- en samenvoegworkflows

Version 2.325.3

Fixed

  • Aggregatie van batchpreflight-rapporten laat de totale-bytes-telling niet meer overlopen wanneer een enkel invoerbestand groter is dan 2 GB

Version 2.325.2

Fixed

  • Het opslaan van een document groter dan 2 GB met objectstromen ingeschakeld (UseObjectStreams) schrijft niet langer een beschadigde kruisverwijzingsstroom; de objectoffsets en kruisverwijzingsstroompositie, eerder verkleind tot een 32-bits geheel getal, worden nu als 64-bits waarden door de hele schrijfbewerking gevoerd

Version 2.325.1

Fixed

  • Vier herstel-enige scans gebruikt wanneer een beschadigde PDF normaal niet geparseerd kan worden — objectstroom-decompressie, objectstroom-detectie en twee referentieherstel-passes — lezen niet langer een bestand groter dan 2 GB in een afgekapt buffer; elk slaat nu die terugval over voor zulke bestanden in plaats van beschadigde gegevens te scannen

Version 2.325.0

Added

  • EMF/WMF-import rendert nu EMR_GRADIENTFILL-rechthoekkleurverlopen (GRADIENT_FILL_RECT_H / GRADIENT_FILL_RECT_V) als PDF-Type-2-axiale schaduwinpatronen, waarbij elk TRIVERTEX-kleurpaar wordt toegewezen aan een RegisterAxialGradient-aanroep en de rechthoek wordt gevuld met het resulterende patroon; eerder was dit record een gedocumenteerde no-op, nu worden Word/Excel/PowerPoint-kleurverlooperechthoeken in EMF's weergegeven met de juiste links-naar-rechts of boven-naar-beneden kleurovergang

Version 2.324.0

Added

  • EMF/WMF-import parseert nu EMR_GDICOMMENT-opmerkingen, waarbij Adobe PDF-passthrough-markeringen (0x416F4650 = "AoFP", MS-EMF §2.3.3) worden onderscheiden van andere opmerkingstypen. Wanneer de Adobe-markering aanwezig is, wordt de opmerkingslading gescand op het pdfmark-sleutelwoord en via debuglogboekregistratie weergegeven zodat gebruikers kunnen identificeren welke EMF-producenten PostScript-pdfmark-fragmenten uitstoten; andere opmerkingstypen blijven no-ops. Zowel HotPDF als llPDFLib hadden eerder alleen een lege stub voor dit record

Version 2.323.0

Added

  • EMF/WMF-import herkent nu expliciet EMR_GRADIENTFILL als een gedocumenteerde no-op (PDF-Type-2/3-schaduwinpatronen konden kleurverlopen uitdrukken maar viewerrendering is inconsistent en GDI's per-pixel Gouraud-interpolatie heeft geen zuivere toewijzing); eerder werd dit record stilzwijgend weggelaten zonder een case-tabel-ingang

Version 2.322.0

Changed

  • Op PFX gebaseerde ondertekening routeert nu invoer van 64 MB of groter via een streaming geblokkeerde ondertekenaar (HPDFCMSSignPDFStreamChunked) die in 256 KB-rolvensterteksten scant naar de /ByteRange + /Contents-tijdelijke aanduidingen, de twee bytebereikvensters verteert via HPDFCMSSHA256StreamRanges en vervolgens de invoerstroom naar de uitvoerstroom kopieert terwijl de tijdelijke aanduidingsbytes onderweg worden bijgewerkt, zodat het piekgeheugen begrensd blijft door de 256 KB-buffer in plaats van de volledige bestandsgrootte; kleinere invoer houdt het snelle in-memory Pos() + Move()-pad ongewijzigd

Version 2.321.0

Added

  • Gebruikswoordenboeken voor optionele-inhoudsgroepen: SetOptionalContentGroupUsage koppelt een /Usage-ingang aan een geregistreerde OCG (PDF 1.7 §8.11.4.4 Tabel 100) zodat viewers lagen automatisch tonen/verbergen op context. Categorieën View / Print / Export schrijven <Category>State = ON/OFF; Zoom schrijft een reëel-paar Min; Language / Creator schrijven tekenreekswaarden
  • Kopie van de overzichtsdeelboom: THPDFDocOutlineObject.CopySubtree kloont diep de gehele kinddeelboom van een knooppunt onder een nieuw bovenliggend, waarbij Titel / Kleur / Vet / Cursief / Geopend wordt overgedragen terwijl nieuwe objectnummers en nieuwe bestemmingen worden aangemaakt
  • Overzichtstopologiehulpers IsDescendant (cyclusveilig predikaat gebruikt door MoveTo) en MoveTo (herplaats een knooppunt, los van zijn oude broer/zus-keten en opnieuw verbonden als het laatste kind van het nieuwe bovenliggende, met volledig /Prev / /Next / /First / /Last / /Count-onderhoud op elke getroffen voorouder)

Version 2.320.0

Toegevoegd

  • Nested optional-content /Order tree: BeginOptionalContentOrderGroup / AddLayerToOptionalContentOrder / EndOptionalContentOrderGroup Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen /OrderGelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen /OCGs Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.319.1

Fixed

  • Het laden van een PDF waarvan de ingesloten JBIG2-afbeelding de standaard Huffman-coderingsoptie gebruikt (in plaats van de meer gebruikelijke MQ-rekenkundige codering) mislukt niet langer volledig: de lader herprobeert nu met de alternatieve decoderingsengine voordat hij opgeeft, zodat dergelijke afbeeldingen succesvol laden ongeacht welke decoderingsengine de voorkeur heeft

Version 2.319.0

Changed

  • EMF/WMF-import past nu een gecentraliseerde InPath-gate toe bij de ExecuteRecord-ingang: terwijl een padbrede is open (BeginPath gezien, EndPath/AbortPath nog niet bereikt) bereiken alleen padconstructierecords (lijn/curve/veelhoek/beweging/sluiten/einde/afbreken plus de coördinatensysteem- en DC-statusrecords) hun handlers; tekst- en bitmaprecords die eerder in het open pad lekten, worden nu centraal weggelaten, wat het verlooppunt-bewaker van llPDFLib weerspiegelt en een klasse van misvormde-PDF-bugs van oneven records binnen een padbrede elimineert

Version 2.318.0

Added

  • Optionele-inhoud radio-knopgroepen: nieuw RegisterOptionalContentRadioGroup declareert onderling exclusieve laagsets waarvan de leden elkaar uitschakelen (PDF 1.7 §8.11.4.3 /RBGroups); typisch gebruik is enkelvoudige keuzepanelen zoals "Concept / Beoordeling / Definitief"

Version 2.317.0

Added

  • THPDFDocOutlineObject.InsertBefore / InsertAfter voegt een nieuwe broer/zus in op de bestaande overzichtsdubbel gekoppelde lijst op een willekeurige positie, als aanvulling op de bestaande AddChild (toevoegen) en AddChildFirst (voorvoegen) helpers zodat overzichtsbomen in elke volgorde kunnen worden gebouwd zonder knooppunten los te koppelen en opnieuw te koppelen
  • EMF/WMF-import herkent nu expliciet de ICM/palet-familie (EMR_SETBRUSHORGEX, EMR_SELECTPALETTE, EMR_SETCOLORADJUSTMENT, EMR_SETICMMODE, EMR_CREATECOLORSPACE, EMR_SETCOLORSPACE, EMR_DELETECOLORSPACE, EMR_GDICOMMENT) en de geen-PDF-toewijzingsfamilie (EMR_FRAMERGN, EMR_INVERTRGN, EMR_PAINTRGN, EMR_FLATTENPATH, EMR_WIDENPATH, EMR_SETMETARGN, EMR_OFFSETCLIPRGN, EMR_PLGBLT, EMR_POLYTEXTOUTA, EMR_POLYTEXTOUTW), doorsturen naar de GDI-referentie-DC waar van toepassing zonder naar de PDF-inhoudsstroom uit te zenden; eerder werden deze records stilzwijgend weggelaten, nu zijn ze gedocumenteerd en consistent gehouden met de GDI-kant

Version 2.316.0

Added

  • Nieuw JBIG2Benchmark-demo genereert vier PDF's van dezelfde drievoudige synthetische scan, één per THPDFJBIG2Options-configuratie (per-afbeelding verliesvrij, per-afbeelding LossyLevel=5, cross-pagina geaccumuleerde globals, rechthoek symboolextractie), waarbij elke uitvoergrootte wordt afgedrukt zodat de afwegingen tussen de v2.310.0 scanvriendelijke standaarden, de v2.314.0 cross-pagina-accumulator en de extractiemodi direct kunnen worden vergeleken

Version 2.315.0

Changed

  • Het cross-pagina geaccumuleerde JBIG2-woordenboek wordt nu automatisch gebatched: zodra het lopende totaal glyphbreedte 131071 pixels overschrijdt, wordt het huidige woordenboek bevroren, uitgestoten als één /JBIG2Globals-stroom en de accumulator wordt gereset, zodat de volgende batch een verse globals-stroom start. Weerspiegelt het TotalWidth-gebaseerde overlopen van llPDFLib en houdt individuele globals-stromen op een grootte die lezers efficiënt verwerken bij zeer grote scanruns

Version 2.314.0

Added

  • Cross-pagina geaccumuleerd JBIG2-symboolwoordenboek: opt-in met THPDFJBIG2Options.AccumulateGlobalsAcrossPages := True (naast de bestaande UseSymbolDictionary + UseGlobalSegments + native-fallback-schakelaars) en opeenvolgende 1-bit icJBIG2-afbeeldingen delen één groeiend in-memory symboolwoordenboek en één /JBIG2Globals indirecte stroom, in plaats van dat elke afbeelding zijn eigen woordenboek uitstoot. Nieuw THPDFJBIG2SymbolDictionary bevat de persistente glyphset met dezelfde verliesTolerant/verliesvrije overeenkomst die de per-afbeelding encoder gebruikt; nieuw smoke_jbig2_accum_decode verifieert dat twee pagina's met verschillende glyphindelingen één globals-objectreferentie delen en bit-voor-bit terugdecoderen naar de bronpixels

Version 2.313.0

Added

  • JBIG2 globale-segmentstromen geproduceerd door de native symboolwoordenboekencoder worden nu op inhoud geadresseerd op documentniveau via THPDFJBIG2GlobalsPool, zodat afbeeldingen die byte-identieke globals opleveren één /JBIG2Globals indirecte stroom delen in plaats van elk hun eigen uit te zenden; nieuw smoke_jbig2_globals_multi-rook dekt drie pagina's van identieke glyphen die samenvouwen tot één gedeelde globals-stroom

Version 2.312.0

Added

  • EMF/WMF-import dekt nu EMR_SCALEVIEWPORTEXTEX, EMR_SCALEWINDOWEXTEX, EMR_EXCLUDECLIPRECT, EMR_CREATEDIBPATTERNBRUSHPT, EMR_SETMITERLIMIT, EMR_SETTEXTJUSTIFICATION en EMR_SETROP2, waarmee de zeven-records kloof met llPDFLib wordt gesloten zodat EMF-stromen uitgestoten door oudere GDI-toolketens die records niet langer stilzwijgend weglaten; SETMITERLIMIT en SETROP2 worden onmiddellijk van kracht, terwijl de anderen status opslaan voor een latere render-side-koppeling zonder huidige coördinaat- of knipuitvoer te verstoren

Version 2.311.0

Added

  • HPDFCMSSha256StreamRanges verteert nu de twee PDF /ByteRange-vensters rechtstreeks vanuit een TStream in 256 KB-brokken, zodat multi-GB ondertekende PDF's kunnen worden gehasht zonder eerst het hele bestand in een AnsiString te kopiëren; sluit de kloof met de stroom-gebaseerde CalcHash van llPDFLib, die de bestaande in-memory HPDFCMSSha256ByteRanges niet kon evenaren voor zeer grote invoer

Version 2.310.0

Changed

  • THPDFJBIG2Options gebruikt nu standaard scanvriendelijke instellingen (LossyLevel = 5, RemoveIsolatedBlackPixels = True, BlackDotSize = 3) zodat 1-bit gescande afbeeldingen standaard veel kleiner worden gecomprimeerd; stel LossyLevel = 0 of Lossless = True in om strikte verliesvrije overeenkomst te herstellen

Performance

  • Xref-tabelgroei is nu geometrisch (kleine documenten +N, grotere documenten +25%) in plaats van de dynamische array bij elk indirect object opnieuw toe te wijzen, waarmee de O(n²)-kosten die domineerden bij het laden en bouwen van grote PDF's met veel objecten worden verwijderd

Version 2.309.4

Added

  • Toegevoegd THPDFDocOutlineObject.AddChildFirst zodat gegenereerde overzichtsknooppunten een kinditem vóór bestaande broers/zussen kunnen plaatsen terwijl de opgeslagen overzichtsvolgorde behouden blijft

Version 2.309.3

Added

  • Toegevoegd pmUseOC aan THPDFPageMode zodat gegenereerde documenten het optionele-inhoudslagenpaneel kunnen opvragen met catalogus /PageMode /UseOC

Version 2.309.2

Added

  • Toegevoegd titeltekstreeks-overloads voor THPDFPage.AddTextAnnotation zodat gegenereerde tekstannotaties de PDF /T-titel- of auteursingang kunnen schrijven terwijl de bestaande pictogram-, kleur- en open-status-argumenten behouden blijven

Version 2.309.1

Fixed

  • Het wissen van THotPDF.OutputStream door nil toe te wijzen herstelt nu de normale FileName-uitvoer in plaats van het document in de stroom-uitvoermodus te laten

Version 2.309.0

Fixed

  • EMF/WMF-import respecteert nu EMR_EXTSELECTCLIPRGN-regiomodi voor kopieer-, doorsnede- en uitsluitingsknip terwijl EMR_SETWORLDTRANSFORM, EMR_MODIFYWORLDTRANSFORM en EMR_SETPIXELV worden gedekt door niet-GUI-regressietests

Version 2.308.0

Added

  • FastReport-invoegtoepassing ontwerptime-registratie wordt nu geleverd als frxHotPDFDesign, waarmee TfrxHotPDFExport op het FastReport VCL-palet wordt geplaatst terwijl de bestaande runtime-eenheid en Register-toetredingspunt beschikbaar blijven voor compatibiliteit

Version 2.307.0

Added

  • SignPDFWithPFX parseert nu ook verouderde PKCS#12 PBE-SHA1-3DES versleutelde PFX-bestanden naast PBES2 AES-256-CBC-profielen

Version 2.306.0

Changed

  • Herhaalde aanroepen die dezelfde gecodeerde afbeelding toevoegen, hergebruiken nu het bestaande PDF-afbeeldings-XObject terwijl afzonderlijke uitvoer voor verschillende JPEG-kwaliteitsinstellingen en maskerrelaties behouden blijft

Version 2.305.0

Added

  • TfrxHotPDFExport.PageRange laat FastReport-exports nu opt-in voor op-één-gebaseerde paginafiltering zoals 1,3-5 terwijl de gedeelde paginabereikparser van HotPDF wordt hergebruikt

Version 2.304.0

Fixed

  • XFA-naar-AcroForm-tabelafvlakking laat nu volledig-groeiibare enkele auto-kolommen de tabelinhoudsbreedte erven, zodat velden zonder hun eigen w nog steeds een meetbare breedte ontvangen en rijspatiëring behouden

Version 2.303.0

Fixed

  • XFA-naar-AcroForm-tabelafvlakking laat nu groeiibare tekstcellen vaste columnWidths-waarden erven wanneer ze hun eigen w weglaten, zodat rijhoogten worden gemeten en volgende rijen gescheiden blijven

Version 2.302.0

Fixed

  • XFA-naar-AcroForm-afvlakking meet nu groeiibare tekstvelden binnen geneste layout="tb"- en gewikkelde layout="lr-tb"-stromen, en tabelrijen houden nu groeiibare tekstcelhoogte bij het positioneren van volgende velden

Version 2.301.0

Fixed

  • XFA-naar-AcroForm-afvlakking houdt nu tekstvelden in layout="tb"- en layout="lr-tb"-stroomcontainers wanneer ze een expliciete h-hoogte weglaten, waarbij de ingepakte inhoudshoogte wordt gemeten in plaats van ze over te slaan als niet-ondersteunde groeiibare indeling

Version 2.300.0

Fixed

  • THotPDF.ExtractObjectFromStream geeft nu het geparseerde woordenboek terug voor gematerialiseerde objectstroom-leden en fabriceert niet langer ruwe-gegevensdiagnostische sleutels wanneer aanroepers geladen PDF 1.5+-objectstromen inspecteren

Version 2.299.0

Added

  • THotPDF.DecompressAllObjectStreams is nu openbaar en dwingt geladen PDF's die objectstromen gebruikten op te slaan waarbij compacte objecten worden gematerialiseerd als normale indirecte objecten in plaats van de bronobjectstroomlay-out te kopiëren

Version 2.298.0

Fixed

  • Het aanmaken van AcroForm-velden weigert nu dubbele rootveldnamen voor zowel nieuwe documenten als het bewerken van geladen documenten, terwijl de geldige gedeeld-bovenliggend-workflow voor radioknopgroepen behouden blijft

Version 2.297.0

Added

  • TDBGridHotPDFExportOptions en het TDBGridHotPDFExport-component stellen nu PDFACompliance en PDFXCompliance beschikbaar zodat DBGrid-tabelexports kunnen deelnemen aan dezelfde HotPDF-standaardenconformiteitspoorten die worden gebruikt bij directe documentgeneratie

Version 2.296.0

Added

  • TQRHotPDFExportFilter en TdxHotPDFExportOptions stellen nu PDFACompliance en PDFXCompliance beschikbaar zodat QuickReport- en DevExpress-exports kunnen deelnemen aan dezelfde HotPDF-standaardenconformiteitspoorten die worden gebruikt bij directe documentgeneratie

Version 2.295.0

Added

  • TfrxHotPDFExport en TppHotPDFDevice stellen nu PDFACompliance en PDFXCompliance beschikbaar zodat rapportexports kunnen deelnemen aan dezelfde HotPDF-standaardenconformiteitspoorten die worden gebruikt bij directe documentgeneratie

Version 2.294.0

Added

  • Form XObject- en tegelpatrooncanvas-bouwers laten aanroepers nu herbruikbare bronnen samenstellen via getypeerde tekenhulpen voordat ze worden geregistreerd voor hergebruik op pagina's
  • THPDFExtGStateOptions laat nu één ExtGState transparantie, mengmodus, lijnbreedte, lijnkap, lijnverbinding en hoekmetergrens-instellingen combineren

Version 2.293.0

Added

  • Systeemeigen JBIG2-codering ondersteunt nu symboolwoordenboekcompressie met optionele gedeelde globale woordenboeken, rechthoek- en uitsluitend-afbeelding-extractiemodi, lossy pixelverschilbewakers en PDF/A-terugval naar CCITT waar JBIG2 niet is toegestaan
  • EMF/WMF-rendering verwerkt nu TransparentBlt- en MaskBlt-bitmaprecords via PDF-afbeeldingsmasker- en transparantiepaden
  • FastReport- en ReportBuilder-systeemeigen exportmodi beslaan nu meer uitvoer op objectniveau, inclusief gestijlde memo/rijke tekst, streepjescode, afbeelding, vectorvorm, lijn, knippen, kader, streep en URL-annotatiepaden
  • De HugeFileBenchmark-demo's rapporteren nu werkset- en piekwerksetstatistieken, ondersteunen een optionele geheugenlimiet en houden gegenereerde werkbestanden gescheiden van rapportuitvoer
  • De Delphi PDFOptimize-demo documenteert nu producerszijde compressiekeuzes voor inhoudsstromen, objectstromen, JPEG-kwaliteit, CCITT en JBIG2-uitvoer

Fixed

  • Demo-dekkingscontroles bevatten nu Engels-basislijn-demo-README's, wijzen geconsolideerde C++Builder-voorbeelden toe aan hun werkelijke bestanden en houden GUI-demo's standaard uitgeschakeld bij routinetestuitvoeringen

Version 2.292.32

Added

  • EMF/WMF-arceerpenselen worden nu toegewezen aan PDF-tegelpatronen zodat geïmporteerde CAD-tekeningen en rapporten de arceerstructuur kunnen behouden in plaats van die vullingen plat te slaan naar effen kleur

Fixed

  • Woordenboekbewerkingen van geladen documenten markeren objecten nu als vuil zodat SaveLoadedDocument gewijzigde PDF's herschrijft in plaats van de oorspronkelijke bron te kopiëren na overzicht- en objectboombewerkingen
  • Het verwijderen van geladen overzichten koppelt broer/zus-bladwijzers nu opnieuw, en niet-geroteerde onderstreping- en doorhaling-tekstdecoraties zenden nu gevulde rechthoekoperatoren uit

Version 2.292.31

Added

  • THPDFEmfOptions.ShowNullBrush laat EMF/WMF-rendering nu null-penseel-vullingen blootstellen voor diagnostische en CAD-stijl importworkflows terwijl ongevulde null-penselen standaard worden bewaard

Version 2.292.30

Added

  • THPDFEmfOptions.CanvasOver laat de herhalende paginaCanvas nu bestaande PDF-inhoud boven het geparseerde Canvas-metabestand plaatsen terwijl de standaard de huidige Canvas-bovenaan-volgorde behoudt

Version 2.292.29

Added

  • THPDFEmfOptions.Redraw laat EMF/WMF-aanroepers nu het standaard tijdelijke hertekeningspad behouden of zich afmelden en het oorspronkelijke metabestand direct parseren

Version 2.292.28

Added

  • THPDFEmfOptions.UseFrame laat EMF/WMF-rendering geïmporteerde uitvoer nu knippen tot het EMF-koptekstkader voor metabestanden die vertrouwen op gedeclareerde kadergrenzen

Version 2.292.27

Added

  • THPDFEmfOptions.ShowNullPen laat EMF/WMF-rendering nu null-pen-contouren blootstellen voor diagnostische en CAD-stijl importworkflows terwijl onzichtbare null-pennen standaard worden bewaard

Version 2.292.26

Added

  • THotPDF.SetFormFieldTooltip laat applicaties nu AcroForm /TU-veldhints toewijzen op veldnaam voor widgets die zijn aangemaakt via de bestaande Add...-veldmethoden

Version 2.292.25

Fixed

  • TfrxHotPDFExport systeemeigen-objectmodus bewaart nu TfrxPictureView-knippen en kaderafbeelding wanneer afbeeldingsweergaven direct worden geschreven als HotPDF-afbeeldings-XObjects

Version 2.292.24

Added

  • TfrxHotPDFExport systeemeigen-objectmodus wijst ondersteunde horizontale eendimensionale FastReport-streepjescodeweergaven nu rechtstreeks toe aan HotPDF-streepjescode-operators, terwijl voor mensen leesbare tekst, controlesomgeneratie, aanvullende tekst, rotatie, gekleurde staven en niet-ondersteunde symbologieën op het bestaande terugvalpad blijven

Version 2.292.23

Added

  • TppHotPDFDevice systeemeigen tekenopdracht-modus wijst ondersteunde eendimensionale ReportBuilder-streepjescodetekenopdrachten nu rechtstreeks toe aan HotPDF-streepjescode-operators, terwijl de verbeterd-metabestand-terugval behouden blijft voor opdrachten die voor mensen leesbare tekst, invoegcodes, controlesomberekening, gekleurde staven, rotatie of niet-ondersteunde postsymbologieën nodig hebben

Version 2.292.22

Fixed

  • Automatisch starten van PDF-viewers kan nu worden onderdrukt in niet-interactieve uitvoeringen met HOTPDF_SUPPRESS_AUTO_LAUNCH=1, en de meegeleverde test- en smoke-runners schakelen die bewaker standaard in zodat niet-GUI-regressie-uitvoeringen geen viewervensters openen

Version 2.292.21

Added

  • THPDFPage.ShowMetafileEx heeft nu een per-aanroep THPDFEmfOptions-overload, zodat aanroepers EMF/WMF-renderinginstellingen kunnen overschrijven voor één metabestandtekening terwijl documentniveau-standaarden behouden blijven

Version 2.292.20

Added

  • TfrxHotPDFExport stelt nu HotPDF-uitvoerbesturingen beschikbaar voor FastReport-exports, inclusief AutoCreateURL, FontEmbedding, NotEmbeddedFonts, ActivateProtection, UserPassword, OwnerPassword, CryptKeyLength, ProtectOptions en EncryptMetadata

Version 2.292.19

Added

  • Een speciale dbGridHotPDFDesign-add-on-eenheid toegevoegd zodat ontwerptiijdpaketten TDBGridHotPDFExport kunnen registreren op het HotPDF IDE-palet terwijl de DBGrid runtime-exportadapter bruikbaar blijft zonder ontwerptiijdpakketreferenties

Version 2.292.18

Changed

  • HPDFParsePFX ondersteunt nu PBES2/PBKDF2-profielen die de standaard HMAC-SHA-1 PRF gebruiken evenals expliciet HMAC-SHA-256, wat de compatibiliteit verbetert met oudere AES-256-CBC PKCS#12-exports terwijl niet-ondersteunde PBE-SHA1-3DES-profielen met een diagnose worden afgewezen

Version 2.292.17

Added

  • THPDFTextOutBoxResult plus THPDFPage.TextOutBoxEx en THPDFPage.WideTextOutBoxEx toegevoegd zodat gewikkelde tekstvakuitvoer het aantal geschreven tekens, geschreven rijen en of de brontekst de box heeft overgelopen kan rapporteren terwijl de verouderde methoden het geschreven-tekens-aantal blijven retourneren

Version 2.292.16

Added

  • THPDFPage.TextFromBaseLine(Boolean) toegevoegd voor het schakelen van paginatekstuitvoer tussen bovenrand- en basislijn-Y-coördinaatsemantieken, plus THPDFPage.AppendScopedRawContent voor het omwikkelen van deskundige onbewerkte inhoudsoperatoren in een automatisch grafische-staat opslaan en herstellen-paar

Version 2.292.15

Changed

  • TfrxHotPDFExport systeemeigen-objectmodus bewaart nu geknipte memorandumtekst en FastReport-tekenspatiëring bij het rechtstreeks toewijzen van voorbereide memorandumweergaven aan HotPDF-paginatekstbewerkingen

Version 2.292.14

Added

  • TppHotPDFDevice stelt nu een opt-in RenderMode beschikbaar voor systeemeigen ReportBuilder-tekenopdracht-export, waarbij gewone tekst-, vorm-, lijn-, afbeeldings- en URI-hyperlinkopdrachten rechtstreeks worden toegewezen aan HotPDF-paginabewerkingen terwijl automatisch wordt teruggevallen op de bestaande verbeterd-metabestand-brug voor pagina's met niet-ondersteunde opdrachten

Version 2.292.13

Added

  • THotPDF.EncryptMetadata toegevoegd voor standaard AES-wachtwoordversleuteling zodat aanroepers /EncryptMetadata false kunnen schrijven, XMP /Metadata-stromen als leesbare tekst kunnen bewaren en de bijbehorende AES-128-sleutelafleiding of AES-256 /Perms-metagegevensvlag kunnen zenden in plaats van te vertrouwen op het vorige altijd-aan metagegevensversleutelingsgedrag

Version 2.292.12

Added

  • AcroForm-veldwikkelklassen bij aanmaaktijdstip toegevoegd via THPDFAcroFormField en THPDFPage.CreateTextField, CreateCheckBox, CreateRadioButton, CreateComboBox en CreateListBox, waarmee koppelbare tooltip-, gemeenschappelijke vlag-, standaard weergave- en veld- of widget-aanvullende-actie-instelling direct na het aanmaken van velden mogelijk is

Version 2.292.11

Added

  • Hoogwaardig afbeeldingsmasker, transparantie, per-afbeelding JPEG-kwaliteit en automatische monochrome compressiehulpen toegevoegd: AddImageAsMask, AddImageWithMask, AddImageWithTransparency, AddImageWithTransparency32, AddImageWithJpegQuality, AddMonochromeImageAuto en de opt-in icAutoMono-compressieselector

Version 2.292.10

Added

  • AcroForm-veld-aanvullende-actie-gemakshulpen toegevoegd voor THPDFActionBuilder-ketens, inclusief benoemde wikkelklassen voor /AA /K, /AA /F, /AA /V, /AA /C, widget muis- en focustrigggers, en bijbehorende wisfuncties voor veld- en annotatietriggeringangen

Version 2.292.9

Added

  • Documentlevenscyclus-aanvullende-actiehulpen toegevoegd voor THPDFActionBuilder-ketens: SetDocumentCloseAction, SetDocumentWillSaveAction, SetDocumentDidSaveAction, SetDocumentWillPrintAction, SetDocumentDidPrintAction en bijbehorende wismethoden die catalogus /AA /WC, /AA /WS, /AA /DS, /AA /WP en /AA /DP-ingangen schrijven

Version 2.292.8

Added

  • Ondersteuning voor aanvullende acties op gegenereerde pagina's toegevoegd met THPDFPageActionTrigger, huidige-pagina-hulpen voor SetPageAdditionalAction, SetPageOpenAction, SetPageCloseAction en bijbehorende wismethoden, plus THotPDF pagina-geïndexeerde hulpen die pagina /AA /O en /AA /C acties schrijven vanuit herbruikbare THPDFActionBuilder-ketens zonder de actieve tekenpagina te wijzigen

Version 2.292.7

Added

  • Paginalabeltekst voor gegenereerde documenten en artikeldraadkralen toegevoegd via THPDFPageLabelStyle, THotPDF.SetPageLabel, de vijf stijlspecifieke paginalabelhulpen, THotPDF.ClearPageLabels, THotPDF.RegisterArticleThread en THPDFPage.AddArticleBead

Version 2.292.6

Added

  • THPDFActionBuilder bouwt nu geavanceerde actiewoordenboeken voor Thread, Sound, Movie, Rendition, SetOCGState-laagzichtbaarheid, Trans-paginaovergangen en GoTo3DView, met ShowLayer-, HideLayer- en ToggleLayer-hulpen plus PDF/A/PDF/X-beperkingen

Version 2.292.5

Added

  • THPDFPage.SetAnnotationAdditionalAction en THotPDF.SetFormFieldAdditionalAction koppelen nu herbruikbare THPDFActionBuilder-ketens aan annotatie- en AcroForm /AA-triggerwoordenboeken terwijl alleen de geselecteerde trigger wordt vervangen en PDF/A/PDF/X-actiebeperkingen worden bewaard

Version 2.292.4

Added

  • THPDFNamesFacade voegt nu JavaScript-functiewikkelklassen en array-momentopnamen toe voor geladen JavaScript en benoemde bestemmingen, THPDFActionBuilder bouwt nu veldgebonden indienen/resetten-acties en externe paginadoelen, en de FastReport-adapter-systeemeigen-objectmodus bewaart memorandumachtergronden, tekstuitlijning en kaderopmaak

Version 2.292.3

Added

  • THPDFActionBuilder ondersteunt nu externe benoemde bestemmingen en Launch-acties, en de FastReport-adapter-systeemeigen-objectmodus wijst weergave-URL's toe aan HotPDF URI-linkannotaties

Version 2.292.2

Added

  • THPDFActionBuilder ondersteunt nu directe paginagerichte GoToPage-acties, EMF/WMF-bestandsnaamhulpen accepteren per-aanroep THPDFEmfOptions en de FastReport-adapter-systeemeigen-objectmodus wijst afbeeldingsweergaven rechtstreeks toe aan HotPDF-afbeeldings-XObjects

Version 2.292.1

Added

  • EMF/WMF-rendering ondersteunt nu per-aanroep THPDFEmfOptions-overschrijvingen via de ShowEnhancedMetafile-, EnhancedShowMetafile- en verbeterde ShowMetafile-overloads, zodat een enkel metabestand compressie, schaal, referentie-DC, rekkingsmodus en uitgebreid-pen-gedrag kan kiezen zonder de documentbrede THotPDF.EmfOptions te muteren

Version 2.274.1

Fixed

  • Type3-glyfprocedures gedeclareerd met d1 negeren nu kleurselect-operators binnen de procedure en schilderen altijd met de huidige vulkleur van de tekst, zoals de PDF-specificatie vereist; glyphen gedeclareerd met d0 behouden hun eigen kleuren
  • De onderdrukking geldt alleen binnen de glyfherhaling (inclusief geneste formulierobjecten) en beïnvloedt nooit kleuren geselecteerd door de omringende pagina-inhoud

Version 2.274.0

Added

  • Type3-glyfprocedures die een d1-begrenzingsdoos declareren worden nu tijdens paginaweergave daartoe beperkt, zodat misvormde of te grote glyfprocedures niet langer buiten hun gedeclareerde grenzen kunnen schilderen
  • Glyphen die de d0-vorm gebruiken behouden hun onbeperkte gedrag, en gedegenereerde (lege of omgekeerde) dozen worden genegeerd in plaats van de glyph leeg te maken

Version 2.273.0

Added

  • Paginaweergave lost nu eenvoudig-lettertype /Encoding-woordenboeken op: /Differences-arrays wijs tekencodes opnieuw toe aan benoemde glyphen, waarbij prioriteit wordt gegeven boven de eigen tekenmap van het lettertypeprogramma zoals de PDF-specificatie vereist — documenten geproduceerd door TeX- en PostScript-afgeleide gereedschapketens, die sterk vertrouwen op /Differences, geven nu de beoogde glyphen weer
  • Glyfnamen worden opgelost via de Adobe Glyph List (inclusief uniXXXX-vormen en gNN/glyphNN-subsettnamen), via de tekenset van een compact lettertypeprogramma of via de tekenmap van een TrueType-programma, afhankelijk van wat het ingesloten lettertype ondersteunt
  • De voorgedefinieerde StandardEncoding, WinAnsiEncoding en MacRomanEncoding-basiscoderinden worden geëerd voor codes zonder een /Differences-overschrijving, waarmee het 0x80–0x9F-bereik wordt gecorrigeerd dat een gewone Latin-1-aanname verkeerd verwerkt
  • Compacte (Type1C) programma's die uitsluitend vertrouwen op een voorgedefinieerde codering — die eerder terugvielen op een systeemlettertype voor de hele uitvoering — geven nu hun ingesloten contouren weer via de standaardnaamopzoeking

Version 2.272.0

Added

  • Ingesloten-glyf paginaweergave beslaat nu eenvoudige (niet-CID) Type1-lettertypen met een compact FontFile3 Type1C-programma: één-byte tekencodes worden opgelost via de ingebouwde codering van het lettertypeprogramma naar echte Type 2 charstring-contouren, waarmee ingesloten-contour-dekking over CID- en eenvoudige lettertypevarianten wordt voltooid
  • Eenvoudige TrueType-lettertypen accepteren bovendien een FontFile3 OpenType-programma (CFF-gearomatiseerd) wanneer er geen FontFile2 aanwezig is
  • Tekencodes die de ingebouwde codering niet kan toewijzen behouden de per-glyf systeemlettertype-terugval, en lettertypen die uitsluitend vertrouwen op de voorgedefinieerde Standaard/Expert-coderingen blijven de vorige gehele-uitvoering-terugval gebruiken

Version 2.271.0

Added

  • Paginaweergave ondersteunt nu Type3-lettertypen: de inhoudsstreamprocedure van elke glyf wordt via de renderer afgespeeld met de lettertypematrix, lettergrootte, tekstmatrix en huidige transformatie samengesteld, zodat stempels, streepjescodefonttypen en andere procedureel getekende glyphen in de gerenderde uitvoer verschijnen in plaats van overgeslagen te worden
  • De /Encoding /Differences-toewijzing koppelt tekencodes aan glyfprocedures en glyf-ruimte /Widths worden geïnterpreteerd via de /FontMatrix, waardoor voorschotten correct blijven voor niet-standaard glyfcoördinaatsystemen
  • Glyfprocedures kunnen het eigen /Resources-woordenboek van het lettertype raadplegen (terugvallen op de bronnen van de pagina) en worden beschermd door dezelfde recursiewachter als Form XObjects

Version 2.270.0

Added

  • Ingesloten-glyf paginaweergave beslaat nu eenvoudige (niet-CID) TrueType-lettertypen: één-byte tekencodes worden via de eigen cmap-tabel van het ingesloten lettertypeprogramma toegewezen aan glyphen, zodat pagina's met gewone ingesloten TrueType-lettertypen worden weergegeven met hun exacte glyfvormen in plaats van een gelijknamig systeemlettertype
  • De cmap-opzoeking volgt een robuuste subtabelketen — Unicode (formaat 4 en formaat 12) eerst, dan symboolgecodeerdede subtabellen met de F000-spiegel voor privat gebruik, dan verouderde Macintosh-subtabellen (formaten 0 en 6) — die overeenkomt met het terugvalgedrag van de auteurstoolkit
  • Tekencodes die de ingesloten cmap niet kan toewijzen vallen terug op de vorige systeemlettertypen per glyf, zodat gemengde of gedeeltelijk gesubsette lettertypen gracieus verslechteren in plaats van tekst te verwijderen

Version 2.269.0

Added

  • Ingesloten-glyf paginaweergave beslaat nu CFF-lettertypeprogramma's: tekst in Type0/CIDFontType0-lettertypen met een FontFile3-programma (CIDFontType0C, Type1C of een OpenType-omhulsel) wordt weergegeven vanuit de echte Type 2 charstring-contouren in plaats van een gelijknamig systeemlettertype te vervangen
  • De charstring-interpreter ondersteunt de volledige tekenoperatorset — lijnen, curven, de flexfamilie, hintmaskers en lokale/globale subroutineaanroepen met subroutine-bias — zodat professioneel geproduceerde CFF-lettertypen hun exacte glyfvormen reproduceren
  • CID-gekeyde CFF-programma's wijzen tekencodes toe via de tekenset van het lettertype, waardoor glyfelectie correct blijft voor gesubsette lettertypen waarvan de glyfvolgorde afwijkt van de CID-volgorde; per-glyf lettertype-DICT-selectie (FDArray/FDSelect) wordt gehonoreerd
  • TrueType- (FontFile2) en CFF- (FontFile3) ingesloten programma's delen nu één weergavepijplijn; lettertypen zonder een bruikbaar ingesloten programma behouden de vorige systeemlettertype-terugval

Version 2.268.0

Added

  • Ingesloten-glyf paginaweergave: tekst in Type0/CIDFontType2-lettertypen met een ingesloten TrueType-programma (FontFile2) wordt nu weergegeven vanuit de echte glyfcontouren van het lettertype — kwadratische contouren, geimpliceerde op-curve-punten en samengestelde glyphen worden afgespeeld als gevulde vectorpaden — in plaats van een gelijknamig systeemlettertype te vervangen
  • Zowel Identity- als expliciete stroom CIDToGIDMap-indelingen worden ondersteund, met dekking van gesubsette ingesloten lettertypen; documenten geproduceerd door de eigen Unicode-pijplijn van HotPDF gaan nu via RenderLoadedPageToBitmap heen en terug met de exacte ingesloten glyfvormen
  • CID-voorschotten honorer en nu de /W- en /DW-breedteingangen en twee-byte Identity-H-codes stappen correct, waarmee tekstpositionering voor CID-gekeyde lettertypen in weergegeven uitvoer wordt hersteld
  • Lettertypen zonder een bruikbaar ingesloten programma (CFF-gearomatiseerde FontFile3, toewijzingsfouten) behouden de vorige systeemlettertype-terugval

Version 2.267.0

Added

  • Gedecodeerderd-afbeeldingen-cache voor paginaweergave: afbeeldings-XObjects die over pagina's worden herhaald (logo's, briefhoofden, watermerkafbeeldingen) worden nu één keer per documentlading gedecodeerd in plaats van één keer per tekening, waardoor de weergavetijd voor gedeelde-afbeeldingspagina's ruwweg wordt gehalveerd en multi-pagina TIFF-export dienovereenkomstig wordt versneld
  • De cache is begrensd door ImageCacheMaxBytes (standaard 32 MB) met least-recently-used-verwijdering, wordt automatisch gewist wanneer een document laadt en wordt samen met InvalidateRenderedPageCache geleegd na in-place bewerkingen
  • Nieuwe herbruikbare THPDFWeightedCache (eenheid HPDFCache): een byte-gebudgetteerde meest-recent-gebruikte cache met treffers/misser-statistieken en een SHA-256-inhoudshash-sleutelhulp, beschikbaar voor hosttoepassingen voor het cachen van hun eigen dure tussenliggende gegevens

Version 2.266.0

Added

  • Symbool- en verouderde lettertypeondersteuning in RegisterUnicodeTTF: lettertypen die alleen een symbooltekenmap dragen (Wingdings, Webdings en vergelijkbare (3,0)-cmap-lettertypen) worden nu geregistreerd met een werkende codepunttoewijzing in plaats van elk teken op te lossen naar .notdef
  • Symboolcodepunten zijn bereikbaar zowel via hun eigen U+F0xx-bereik als via gewone ASCII ('A' bereikt dezelfde glyf als U+F041), overeenkomend met de manier waarop viewers symboolgecodeerdede tekst behandelen
  • Verouderde lettertypen waarvan de tekenmap alleen een formaat 6 (afgeknipte tabel) of formaat 0 (bytetabel) subtabel biedt, vallen nu terug op die, zodat oude Mac-erfgoedlettertypen correct worden ingesloten; de primaire Unicode-formaat 4/formaat 12-paden zijn ongewijzigd

Version 2.265.0

Added

  • Gerenderde-pagina-cache: RenderLoadedPageToBitmapCached houdt recent weergegeven pagina's bij op sleutel van pagina en DPI, zodat het opnieuw weergeven van dezelfde pagina (paginavoorbeelden, miniaturen, herhaalde exports) in microseconden terugkeert in plaats van de inhoudsstroom opnieuw te interpreteren — cache-treffers zijn typisch duizenden malen sneller
  • De cache houdt tot RenderCacheCapacity pagina's (standaard 8) bij in meest-recent-gebruikte volgorde en retourneert een onafhankelijke door de aanroeper bezeten bitmap bij elke aanroep; het laden van een nieuw document wist deze automatisch, en InvalidateRenderedPageCache wist deze na in-place paginabewerkingen

Version 2.264.0

Added

  • Rijke-tekst-uitvoer: THPDFPage.TextOutHTML geeft een tekenreeks weer opgemaakt met een HTML-subset — <b>, <i>, <u>, <s>, <br> en <font size color face> met nesting — zodat gestijlde alinea's geen afzonderlijke SetFont/TextOut-aanroep per stijlwijziging meer vereisen
  • Gemengde lettergrootten op één regel delen een gemeenschappelijke basislijn (het grootste lettertype van de regel stelt deze in) en de regelafstand van elke regel volgt het grootste lettertype, wat typografisch correcte uitvoer geeft voor koppen gemengd met bodytekst
  • Kleuren accepteren #RRGGBB en de 16 standaard HTML-kleurnamen; de entiteiten &amp; &lt; &gt; &quot; &nbsp; en numerieke &#N; (inclusief aanvullend-vlak codepunten) worden gedecodeerd
  • De aanroep retourneert de Y-coördinaat waarop een volgende regel zou doorgaan, zodat opeenvolgende TextOutHTML-blokken op natuurlijke wijze worden gestapeld

Version 2.263.0

Added

  • Lay-out-bewarende tekst-extractie: ExtractLoadedPageTextLayout reconstrueert de visuele indeling van een pagina als platte tekst — glyphen worden geclusterd in basislijnen en horizontale/verticale witruimte wordt gereproduceerd op een tekentegel, zodat kolommen, inspringing en tabeluitlijning in de uitvoer behouden blijven
  • Brede gaten tussen tekstuitvoeringen op dezelfde basislijn worden spatielijnen, en grote basislijngaten worden lege regels, waardoor het resultaat geschikt is voor vergelijken, grep-pen en het invoeren in tekst-analysepijplijnen die afhankelijk zijn van positionele uitlijning
  • De bestaande ExtractLoadedPageText-leesstroom-extractie is ongewijzigd; kies deze wanneer alleen de tekst-inhoud belangrijk is en de nieuwe aanroep wanneer de lay-out belangrijk is

Version 2.262.0

Added

  • Gehele-boom-bladwijzers zoeken: FindLoadedOutlineByTitle doorloopt de gehele overzichtshiërarchie van een geladen document (alle nestingniveaus, niet alleen hoofdstukken op het hoogste niveau) en lost de bestemmingspagina van de overeenkomende bladwijzer op, met optionele gedeeltelijke en hoofdlettergevoelige overeenkomst
  • Zowel directe /Dest-bestemmingen als GoTo-actiedoelen worden opgelost naar een pagina-index, zodat een gevonden bladwijzer onmiddellijk naartoe kan worden gesprongen
  • GetLoadedOutlineTitlesDeep somt elke bladwijzertitel in de boom op in diepte-eerst (lees-)volgorde, als aanvulling op de bestaande enumeratie alleen op het hoogste niveau

Version 2.261.0

Added

  • Batch-bijlage-extractie: SaveAllLoadedEmbeddedFiles schrijft elk ingesloten bestand van een geladen document in één aanroep naar een doelmap, maakt de map aan wanneer deze ontbreekt en retourneert het aantal geschreven bestanden
  • Bijlagenamen worden voor gebruik opgeschoond — padscheidingstekens en tekens die het bestandssysteem weigert worden onderstrepingstekens, zodat een document niet buiten de gekozen map kan schrijven — en dubbele namen ontvangen automatisch een _CopyN-achtervoegsel vóór de extensie

Version 2.260.0

Added

  • Multi-pagina TIFF-export voor geladen documenten: SaveLoadedPagesToTiff geeft de geselecteerde pagina's weer en schrijft ze in één TIFF 6.0-bestand met één afbeelding per pagina — het uitwisselingsformaat dat wordt verwacht door documentarchivering, scannen en faxpijplijnen
  • Pagina's worden geselecteerd met de vertrouwde op-één-gebaseerde bereiksyntaxis ("1,3-5,7-"; leeg selecteert elke pagina), weergegeven op een door de aanroeper gekozen DPI en opgeslagen als 24-bit RGB met optionele Deflate-compressie (standaard aan; geef False door voor ongecomprimeerde uitvoer)
  • SaveLoadedPagesToTiffStream schrijft dezelfde multi-pagina TIFF naar elke TStream; beide aanroepen retourneren het aantal werkelijk geschreven pagina's

Version 2.259.0

Added

  • Digitale handtekeningverificatie voor geladen documenten: VerifyLoadedSignature herberekent de /ByteRange-samenvatting en controleert cryptografisch de RSA-handtekening op het certificaat ingesloten in de handtekening, waarbij een nauwkeurig vonnis wordt gerapporteerd (geldig, document gewijzigd na ondertekening, handtekening ongeldig, niet-ondersteund algoritme of misvormde container)
  • GetLoadedSignatureInfo retourneert de naam van de ondertekenaar, onderwerpn- en uitgeverdistinguished names, certificaatserienummer en geldigheidsperiode, ondertekeningstìd, hash-algoritme, subfilter en /Reason//Location//ContactInfo voor elk handtekeningveld zonder documentbytes aan te raken
  • VerifyLoadedSignatureEx combineert beide: één aanroep verifieert en retourneert het gevulde infoverslag, inclusief of de handtekening het hele document beslaat; VerifyAllLoadedSignatures controleert elk handtekeningveld tegelijk
  • Ondersteunde algoritmen: RSA (PKCS#1 v1.5) met SHA-1, SHA-256, SHA-384 of SHA-512-samenvattingen, die adbe.pkcs7.detached- en ETSI.CAdES.detached-handtekeningen met of zonder ondertekende attributen beslaan
  • Een TStream-overload verifieert documenten geladen vanuit stromen; certificaatketen- en vertrouwensvalidatie blijft de verantwoordelijkheid van de aanroeper

Version 2.258.0

Added

  • De hoogwaardige externe JBIG2-decoder is nu beschikbaar in 32-bit (Win32) builds; eerder was deze alleen 64-bit. PDF-bestanden laden met /JBIG2Decode-afbeeldingen en ExtractLoadedImage gebruiken deze standaard op beide platforms, decodering typisch 3–9× sneller dan de systeemeigen Pascal-decoder
  • De UseExternalJBIG2Decoder-schakelaar gedraagt zich hetzelfde op 32-bit als op 64-bit: stel deze in op False om de systeemeigen Pascal-decoder te selecteren

Version 2.257.1

Fixed

  • De hoogwaardige JBIG2-coderingsbackend in 64-bit (Win64) builds hersteld: een platformcontrole-regressie die werd geïntroduceerd bij het aansluiten van de 32-bit backend compileerde de externe encoder uit Win64-builds, zodat AddImage met icJBIG2-compressie stilzwijgend terugviel op de systeemeigen Pascal MMR-encoder. Win64 codeert nu opnieuw via de rekenkundige backend, typisch 4–8× sneller met gelijke of betere compressie; THPDFJBIG2Options.UseExternalEncoder := False blijft de expliciete manier om de MMR-terugval te selecteren

Version 2.257.0

Added

  • De hoogwaardige JBIG2-coderingsbackend is nu beschikbaar in 32-bit (Win32) builds; eerder was deze alleen 64-bit. AddImage met icJBIG2-compressie gebruikt deze standaard op beide platforms, waardoor identieke standaardenconforme rekenmaatstaf-gecodeerde JBIG2-stromen 4–7× sneller worden geproduceerd dan de systeemeigen Pascal-terugval
  • De THPDFJBIG2Options.UseExternalEncoder-schakelaar gedraagt zich hetzelfde op 32-bit als op 64-bit: stel deze in op False om terug te vallen op de systeemeigen Pascal MMR-encoder

Fixed

  • Een reeks 32-bit-enige crashes (toegangsschendingen) in de statisch gekoppelde encoder-ondersteuningslaag opgelost die de JBIG2-coderingsbackend onbruikbaar maakten in Win32-builds; coderingsuitvoer is byte-identiek geverifieerd met de 64-bit backend en gaat verliesvrij heen en terug via zowel de gebundelde als de systeemeigen JBIG2-decoders

Version 2.256.0

Added

  • XFDF-annotatie-ondersteuning uitgebreid naar de resterende vier ISO 19444-1 Tabel 1-subtypen, waarmee volledige dekking van alle 18 XFDF-annotatie-elementen wordt voltooid: <fileattachment> (decodeert de base64 <data> in een ingesloten-bestandsstroom + Filespec bij import, herencodeert bij export), <sound> (ingesloten /Sound-stroom met /R /B /C /E audioparameters), <redact> (een standaard /Redact-annotatie met /OverlayText, /DA, /Q en /IC — onderscheiden van het bestaande inhoudsstream RedactLoadedRect-masker), en <link> (<OnActivation><Action> toegewezen aan een URI of Named-actiewoordenboek, met <Dest> benoemde bestemmingen)
  • Een zelfstandige base64-codec (HPDFXFDFEncodeBase64 / HPDFXFDFDecodeBase64) toegevoegd zodat de XFDF-laag niet afhankelijk is van HPDFXFA; de bibliotheek had eerder alleen een decoder
  • THPDFXFDFAccess uitgebreid met ingesloten-stroom-callbacks (ResolveStream / NewIndirectStream / ReadStreamBytes) verbonden met THotPDF.ResolveLoadedStream / NewIndirectStream / HPDFReadStreamBytes
  • 3 DUnitX-gevallen toegevoegd aan HotPDF.XFDFTests (base64 heen-en-terug, Redact met OverlayText, Link met URI-actie) — volledige suite nu 310/310 op Win32 en Win64

Version 2.255.0

Added

  • XFDF (ISO 19444-1) import/export toegevoegd: THotPDF.ExportLoadedFormToXFDF / ImportLoadedFormFromXFDF laten AcroForm-veldwaarden heen-en-terug gaan via het XML Forms Data Format (de XML-tegenhanger van FDF), met dekking van eenvoudige en gelaagde (gestippeld-naam) velden, meervoudige-selectie-lijsten (meerdere <value>-broers/zussen), vinkje/keuzerondje-exportwaarden en handtekeningvelden (alleen naam, geen <value> per §6.3.3.1). De uitvoer is een UTF-8 <xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">-document met de Adobe-naamruimte zoals vereist door §5.5.2
  • THotPDF.ExportLoadedAnnotationsToXFDF / ImportLoadedAnnotationsFromXFDF toegevoegd voor de 14 ISO 19444-1 Tabel 1-annotatiesubtypen die HotPDF al aanmaakt (tekst / vrije tekst / lijn / vierkant / cirkel / veelhoek / polylijn / markering / onderstreping / doorhaling / krullend / stempel / inkt / caret), met de gemeenschappelijke attributen (pagina, rechthoek, kleur, vlaggen, naam, datum, titel, inhoud, onderwerp, aanmaakdatum, dekking, bedoeling), typespecifieke geometrie (QuadPoints voor opmaak, Vertices voor veelhoek/polylijn, L voor lijn, InkList voor inkt), het pictogram voor tekst/stempel en popup-kinderen. FileAttachment/Sound/Redact/Link-actiesubtypen worden uitgesteld naar een latere ronde
  • Lib/HPDFXFDFXml.pas toegevoegd: een zelfstandige lichtgewicht XML-engine (geen MSXML/OmniXML-afhankelijkheid, bouwt op Delphi 5 .. RAD Studio) die een minimale DOM (THPDFXFDFNode), een tolerante parser (BOM, opmerkingen, CDATA, verwerkingsinstructies, attribuutvolgorde, zelf-sluitend, UTF-8 multibyte) en een UTF-8-schrijver levert die de ISO 19444-1 §5.8.2-escape-conventie toepast (entiteiten voor & < > ", tekensreferenties voor LF/CR/TAB, octale literals voor andere besturingstekens)
  • Lib/HPDFXFDF.pas toegevoegd: de XFDF-bedrijfslaag, losgekoppeld van HPDFDoc via een record van functieaanwijzers (THPDFXFDFAccess) gebonden door de implementatiesectie van HPDFDoc (hetzelfde patroon als HPDFTextExtraction). Levert kleur #RRGGBB ↔ DeviceRGB- en vlag-naam ↔ geheel getal bit-set-hulpen
  • HotPDF.XFDFTests (8 DUnitX-gevallen) toegevoegd die de XML-engine (escape heen-en-terug, parseringstolerantie, geneste velden, UTF-8), veldenexport/import via een nep-toegangsrecord en annotatie-export/import via een nep gebouwd vanuit echte THPDFDictionaryObject-instanties beslaan — alles slaagt op Win32 en Win64

Version 2.254.0

Added

  • Lees-kant gestructureerde factuurextractie toegevoegd: HPDFFacturXXMLElementText voert een woordgrens-bewuste deelreeksscan uit voor elk CII/UBL-element (geen XML DOM, werkt op elke ondersteunde Delphi), HPDFFacturXInvoiceSummaryFromXML en THotPDF.GetLoadedInvoiceSummary retourneren een THPDFFacturXInvoiceSummary-record met de gemeenschappelijke BT-1/2/5/27/44/106/110/112/115-velden (factuurnummer, uitgiftedatum, valuta, verkoper/koper-namen, regel/belasting/totaaltotalen), waarbij de kopernaam wordt verfijnd door het BuyerTradeParty-aggregaat te lokaliseren in plaats van alleen de eerste ram:Name
  • PDF/A-3 structurele-regressiescan toegevoegd als THotPDF.GetLoadedPDFAIssues, opzettelijk apart van ValidateFacturXInvoice zodat het Factur-X-containervonnis stabiel blijft (een hybride factuur met een ontbrekende OutputIntent is nog steeds een geldige container, gewoon geen conformant PDF/A-3-bestand); spiegelt de ISO 19005-3-beweringen die veraPDF verhoogt voor niet-ingesloten lettertypen (fxviFontsNotEmbedded), ontbrekende OutputIntent (fxviMissingOutputIntent) en verboden versleuteling (fxviEncryptedDocument), allemaal nieuwe leden van de THPDFFacturXValidationIssue-enum
  • Ingesloten-bijlage-classificatie toegevoegd via THotPDF.GetLoadedFacturXAttachments: somt elk ingesloten bestand op en classificeert het onder de Factur-X 1.09 spec 6.4-taxonomie (primaire CII-factuur, UBL- of EDIFACT-aanvullende representatie, ondersteunend document) met de nieuwe THPDFFacturXAttachmentRole-enum, zodat ontvangers bijlagen kunnen routeren zonder de rol opnieuw af te leiden uit bestandsnamen
  • EDIFACT-aanvullende bijlage-ondersteuning toegevoegd symmetrisch aan UBL: THotPDF.AddEDIFACTSupplementaryFile sluit een EDIFACT-bericht in als factur-xedifact.edi (MIME text/plain, relatie Alternative), HPDFIsFacturXEDIFACTFileName herkent de bestandsnaam en DetectFacturXInvoice registreert het in een nieuw THPDFFacturXInvoiceInfo.EDIFACTFileName-veld
  • PDF/A-4/PDF/A-4f-ondersteuning toegevoegd (ISO 19005-4, Factur-X 1.09 spec voetnoot 2): PDFAPart herkent nu '4'/'4F' (met pdfaid:part=4) en PDFAConformanceLevel retourneert leeg voor deel 4 omdat PDF/A-4 de A/B/U-niveaus laat vallen; IsPDFA2OrLater beslaat automatisch deel 4 zodat bestaande beperkingscontroles van toepassing zijn
  • Principe 4 visuele/XML-consistentiecontrole toegevoegd als THotPDF.ValidateVisualXmlConsistency: dumpt de zichtbare tekst van elke pagina en verifieert dat het factuurnummer, de verkoper, de koper en de totaaltotaalwaarden die aanwezig zijn in de ingesloten XML ook voorkomen in de voor mensen leesbare representatie (Factur-X 1.09 spec 5.1); een mismatch wordt gerapporteerd als een lijst van ontbrekende veldnamen, omlijst als een heuristische waarschuwing in plaats van een harde validatiefout omdat de PDF waarden kan opmaken of omhullen

Changed

  • Het E-Invoice-voorbeeld ShowValidationReport geeft nu de lees-kant factuuroverzicht, de onafhankelijke PDF/A-3-probleemset, de geclassificeerde bijlagenlijst en het Principe 4 visuele/XML-consistentievonnis weer naast de bestaande container- en Schematron-bedrijfsregelcontroles, waarbij de nieuwe lees-kant-API's op elke gegenereerde PDF worden gedemonstreerd

Version 2.253.1

Fixed

  • De E-Invoice-demobron afgestemd op de regressietestbeweringen: TInvoiceForm = class(TForm) gebruikt nu de standaard spatiedeclaratie, en IsDefaultOutputFile introduceert een per-iteratie Profile-lokaal (ingesteld vanuit GetProfile(I)) zodat de bron de exacte string(Profile.OutputBaseName)+ '.pdf'-literal draagt die de tests controleren, terwijl de dubbele GetProfile-aanroep per lus-iteratie wordt vermeden. Lost de twee lang-bestaande EInvoiceDemoDefaultOutputUsesProfileSuffix / EInvoiceDemoUsesProjectFileAndOutputNames-fouten op

Version 2.253.0

Added

  • Paginaweergave van geladen documenten toegevoegd: THotPDF.RenderLoadedPageToBitmap(PageIndex, DPI) tekent een pagina naar een 24-bit RGB GDI TBitmap (aanroeper geeft vrij) door de /Contents-stroom te interpreteren op een volledige grafische staat (CTM, kleuren, lijnattributen, teksttoestand) en een huidig pad, waarbij elke operator naar GDI wordt gevoerd via pad/tekst/afbeeldingbruggen. De ondersteunde operatorset beslaat de veelgebruikte document-PDF-subset: tekst (BT ET Tf Tc Tw Tz TL Tr Ts Td TD Tm T* Tj TJ ' "), padconstructie en -schildering (m l c v y re h S s f F f* B b B* b* n W W*), kleur (rg RG g G k K), grafische staat (q Q cm w) en Do voor afbeelding en één niveau van Form XObject-recursie. Behandelde kleurruimten zijn DeviceRGB/Gray/CMYK en Indexed; CalRGB/Lab/ICCBased degraderen naar een best-effort benadering. Zes nieuwe eenheden (HPDFRenderMatrix, HPDFRenderGraphicsState, HPDFRenderColorSpace, HPDFRenderPath, HPDFRenderFontMetrics, HPDFPageRenderer) houden de renderer losgekoppeld van HPDFDoc via een record van functieaanwijzer-accessors
  • HotPDF.RenderTests (3 DUnitX-gevallen) toegevoegd die paginatekstweergave (niet-lege bitmap), pagina-grootte-overeenkomt-DPI en buitenbereik-pagina-index retourneert nil beslaan — alles slaagt op Win32 en Win64

Version 2.252.0

Added

  • Geladen-document tekst vervangen toegevoegd: THotPDF.ReplaceLoadedPageText en ReplaceLoadedDocumentText herschrijven elk voorkomen van een naald door de vervanging omgekeerd te coderen via de teken-codetabel van het lettertype (HPDFEncodeUnicode) en het resultaat in te voegen in alleen de overeenkomende code-byte-bereiken van elke tekenreeksoperand — niet-overeenkomende bytes, intertoken-witruimte en operators worden letterlijk behaard. Elke /Contents-stroom wordt afzonderlijk verwerkt zodat multi-stroom-pagina's goed gevormd blijven; gecomprimeerde stromen worden gedecomprimeerd voor bewerking en ongecomprimeerd opgeslagen (de /Filter-ingang wordt verwijderd, waardoor een groter bestand wordt geaccepteerd). ReplaceCount rapporteert het aantal uitgevoerde operandherschrijvingen
  • HPDFEncodeUnicode toegevoegd in HPDFTextExtraction: het omgekeerde van HPDFDecodeCharCode, waarbij een Unicode-codepunt wordt toegewezen aan de teken-code-bytes van een lettertype door dezelfde strategie-keten in omgekeerde volgorde te doorlopen (ToUnicode bfchar/bfrange, Encoding-stroom cidchar/cidrange + CIDToUnicode, Type0 CIDToGID/CIDIdentity, voorgedefinieerde WinAnsi/MacRoman-tabellen), zodat een codeer→decodeer-heen-en-terug stabiel is voor elke code die de decoder kan oplossen
  • HPDFSerializeStringLiteral / HPDFSerializeHexString toegevoegd in HPDFContentStream: reserialiseer onbewerkte teken-code-bytes terug in een PDF-inhoudsstream-tekenreeksliteral ((...) met ( ) \ en octale escapes) of hextekenreeks (<...>), die de tokenizer ReadLiteralString/ReadHexString spiegelt zodat parseren → herserialiseren heen-en-terug gaat
  • HPDFMatchGlyphs toegevoegd in HPDFContentStream: een pure-functie-glyfenreeksvergelijker geëxtraheerd uit SearchLoadedPageText zodat de zoek- en vervangpaden één overeenkomende kern delen
  • THPDFPageFontResolver.LookupDecoder toegevoegd zodat het vervangpad een kopie van de lettertypedecoder kan verkrijgen voor omgekeerde codering buiten de interpreterlus
  • HotPDF.ReplaceTests (8 DUnitX-gevallen) toegevoegd die serialisator heen-en-terug (literal/hex/hoog-byte-escape) en end-to-end zelfde-lengte, verschillende-lengte, meervoudige-overeenkomst, gecomprimeerde-stroom-degradatie en ontbrekende-naald-scenario's beslaan — alles slaagt op Win32 en Win64

Version 2.251.0

Added

  • Geladen-document tekst zoeken toegevoegd: THotPDF.SearchLoadedPageText en SearchLoadedDocumentText lokaliseren elk voorkomen van een naald door de Unicode-glyfenreeks geproduceerd door ExtractLoadedPageGlyphs te vergelijken, waarbij een THPDFTextMatchArray wordt geretourneerd waarvan de ingangen het glyfbereik, de gebruikers-ruimte-oorsprong en -breedte en de bronstoken-/item-index dragen zodat een aanroeper later de operandbytes kan herschrijven; hoofdletterongevoelige overeenkomst gebruikt uitsluitend ASCII-vouwen om gedrag identiek te houden over de Delphi 5–XE-gereedschapketens
  • De inhoudsstream-tokenizer en -interpreter uitgebreid met byte-offset-tracking: THPDFContentToken en THPDFArrayItem registreren nu StartOfs/EndOfs die elke operand precies omspannen zoals geschreven (inclusief ( ) of < >-begrenzers) en elk THPDFGlyphRecord draagt TokenIndex/ItemIndex/ByteOffset die terugwijzen naar de operand en code-eenheid die het produceerde — de basis voor in-place tekstvervanging
  • HotPDF.SearchTests (10 DUnitX-gevallen) toegevoegd die offset-bereik-reconstructie voor literal/hex/TJ-array-operanden, de glyph→token-terugreferentie en end-to-end enkel/hoofdletterongevoelig/meervoudige-overeenkomst/document-breed zoeken plus de lege-naald- en ontbrekende-naald-randgevallen beslaan — alles slaagt op Win32 en Win64

Version 2.250.0

Fixed

  • ImportLoadedFormFromFDF gehard: de byte-niveau /T+spatie + /V+spatie-scanner (die /Type /Catalog en andere /T*-tokens verkeerd parseerde als veldnamen, bytes doorslikte over objecten naar de volgende ( en hex-tekenreekswaarden miste) vervangen door een structurele parse — elk << /T ... /V ... >>-veldwoordenboek binnen de /Fields-array wordt gesegmenteerd door haakjesdiepte-tracking (waarbij literal- en hex-tekenreeksliterals worden geërd) en overhandigd aan HPDFParserParseSimpleDictionary, zodat tekenreeks-, hex-tekenreeks-, naam- en numerieke /V-waarden nu allemaal correct heen en terug gaan
  • /V-waarden die worden gedragen als UTF-16BE-hextekenreeksen (<FEFF...>) behouden nu hun hexvorm bij import: HPDFSetDictFormValue detecteert het FEFF-BOM-voorvoegsel en stelt IsHexadecimal in zodat de schrijver <FEFF...> opnieuw uitzendt in plaats van een verminkte literal (FEFF...); vinkje/keuzerondje-naamwaarden (/Yes, /Off) worden als namen bewaard omdat het bestaande type-correctiepad de THPDFNameObject-sleuf al behoudt

Added

  • HotPDF.FDFTests (5 DUnitX-gevallen) toegevoegd die de export→import-heen-en-terug voor tekstvelden, het behoud van vinkje-naam-waardetype, het stil overslaan van onbekende veldnamen, het UTF-16BE-hexwaarde-heen-en-terug en de /Type-sleutelwoordruis-regressie beslaan — alles slaagt op Win32 en Win64

Version 2.249.0

Added

  • ZUGFeRD 2.5/Factur-X 1.09-metagegevensondersteuning toegevoegd: HPDFIsFacturXVersion accepteert de 2p5-versiealias, de nieuwe HPDFFacturXNormalizeVersion-hulp wijst deze terug naar 2p0 in het uitgestoten XMP per Factur-X 1.09 spec 6.3.2 (de XMP-extensieschemaversie is losgekoppeld van de XML-gegevensspecificatieversie) en HPDFFacturXFileNameOK, HPDFFacturXXMLGuidelineOK en de XMP-schemanaam/naamruimte-uri/prefix-driehoek behandelen 2p5 identiek aan 2p0; het E-Invoice-voorbeeld krijgt een zevende profielingang (ZUGFeRD 2.5/Factur-X 1.09, EN 16931) gevalideerd op het officieel 2.5-voorbeeldcorpus
  • UBL-aanvullende-bijlage-ondersteuning toegevoegd per Factur-X 1.09 spec 6.4: THotPDF.AddUBLSupplementaryFile sluit een UBL-representatie in als een secundair factur-xubl.xml-gekoppeld bestand met Alternative-relatie en application/xml-MIME naast de primaire CII-factuur (gedelegeerd aan de bestaande AddPDFA3AssociatedFile-pijplijn), HPDFIsFacturXUBLFileName herkent de bestandsnaam, DetectFacturXInvoice registreert het in een nieuw THPDFFacturXInvoiceInfo.UBLFileName-veld en het E-Invoice-voorbeeld wisselt dual-inbedding via een vinkje met BuildUBLSupplementaryXML die een compact UBL 2.1 EN 16931-skelet uitzendt
  • Optionele EN 16931 Schematron-bedrijfsregelvalidatie toegevoegd als de nieuwe HPDFEInvoiceValidator-eenheid: levert de vijf officiële Factur-X 1.09-regelbestanden (MINIMUM/BASIC WL/BASIC/EN16931/EXTENDED) onder Lib/resources/Schematron/ en stelt HPDFValidateEInvoice beschikbaar dat de containercontrole uitvoert via ValidateFacturXInvoice en vervolgens elke regel evalueert op de ingesloten XML; de MSXML-ondersteunde engine (alleen XE2+, XPath 1.0-subset) markeert XPath 2.0-beweringen als overgeslagen, terwijl Delphi 7 een stub compileert die de engine als niet beschikbaar rapporteert zonder het containervonnis te beïnvloeden; het E-Invoice-voorbeeld en de EInvoiceValidation-koploze harnachement geven nu interne regelresultaten weer naast de externe valida-torrapporten

Changed

  • AddFacturXAssociatedFile normaliseert nu het Version-argument via HPDFFacturXNormalizeVersion vóór het schrijven van XMP, zodat 2p5-aanroepers het spec-conforme 2p0-XMP-token zenden zonder het bestaande 1.0/2p0-gedrag te wijzigen
  • E-Invoice-voorbeeld GenerateInvoicePDF krijgt een optionele AttachUBL-parameter (standaard op False, waarbij bestaande aanroepplaatsen worden bewaard) en tagt de standaard uitvoernaam met -withUBL wanneer de UBL-bijlage wordt gevraagd

Version 2.248.0

新增

  • 加固 E-Invoice 例程的 profile 索引模型:把 GetProfile 从 1 基 case 加 else 兜底改为显式 0 基双射(0 BASIC .. 5 EN 16931),下拉框顺序同步重排,默认仍为 EN 16931;补全 E-Invoice 例程 README 对 ZUGFeRD 1.0 COMFORT 和 ZUGFeRD 2.0 BASIC 两个 profile 的输出文件、校验状态和运行输出描述

Version 2.247.0

新增

  • 新增已加载文档的 22 项创建/写入 API(第九轮,实现中等工程量特性,全部在已加载对象图上构造字典并注册到 AcroForm/Page):表单字段创建——文本字段(AddLoadedTextField)、复选框(AddLoadedCheckBox)、组合框(AddLoadedComboBox)、列表框(AddLoadedListBox)、按钮(AddLoadedPushButton)、签名字段(AddLoadedSignatureField),自动建立/补全 AcroForm 与 /NeedAppearances;注释子类型——橡皮图章(AddLoadedStampAnnotation)、高亮/下划线/波浪线/删除线(AddLoadedHighlightAnnotation)、矩形/圆形(AddLoadedSquareAnnotation)、直线(AddLoadedLineAnnotation)、墨迹(AddLoadedInkAnnotation)、多边形/折线(AddLoadedPolygonAnnotation)、插入符(AddLoadedCaretAnnotation);FDF 表单数据互换(ExportLoadedFormToFDF/ImportLoadedFormFromFDF);N-up 拼版(StitchLoadedPage/StitchLoadedPageSideBySide);脱敏遮罩(RedactLoadedRect

Version 2.246.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolenGetLoadedFormFieldOption/GetLoadedFormFieldOptions)/write (SetLoadedFormFieldOptions), field default-value read/write (GetLoadedFormFieldDefaultValue/SetLoadedFormFieldDefaultValue), field reset (ResetLoadedFormField), text-note annotation (AddLoadedTextAnnotation), free-text annotation (AddLoadedFreeTextAnnotation), annotation color (SetLoadedAnnotationColor), cross-page annotation move (MoveLoadedAnnotation), bookmark color (SetLoadedOutlineColor)/style (SetLoadedOutlineStyle)/delete (RemoveLoadedOutline), document Trapped flag (SetLoadedTrapped), optional-content group visibility (SetLoadedOCGVisibility), page-label write (SetLoadedPageLabel)

Version 2.245.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolenSetLoadedAnnotationFlagsGelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolenAddLoadedLinkAnnotation), bookmark expand/collapse state (SetLoadedOutlineOpen), document open-action (SetLoadedOpenActionPage), form-field export-value read/write (SetLoadedFormFieldExportValue/GetLoadedFormFieldExportValue), form-field tooltip (SetLoadedFormFieldTooltip/GetLoadedFormFieldTooltip), form-field border width/background color (SetLoadedFormFieldBorderWidth/BackgroundColor), clear all JavaScript (RemoveLoadedJavaScriptAll), page content copy (CopyLoadedPage)

Version 2.244.0

新增

  • 新增已加载文档的 15 项写入/编辑 API(第二轮写入,覆盖 RemoveAnnotation/SetRotationAngle 等模式):页面旋转写入(SetLoadedPageRotation)、注释删除/内容修改/清空(RemoveLoadedAnnotation/SetLoadedAnnotationContents/ClearLoadedAnnotations)、查看器偏好写入(SetLoadedViewerPreferences)、日期写入(SetLoadedCreationDate/ModDate)、Catalog 版本写入(SetLoadedCatalogVersion)、页面持续时间/过渡效果写入(SetLoadedPageDuration/Transition)、书签标题修改(SetLoadedOutlineTitle)、嵌入文件删除(RemoveLoadedEmbeddedFile)、表单字段值写入(SetLoadedFormFieldValueByIndex/ByName

Version 2.243.0

新增

  • 新增已加载文档的 14 项写入/编辑 API(首次突破只读检视,覆盖 SetXMLMetadata/InsertAnnotation/Stitch 等模式):页面模式/布局写入(SetLoadedPageMode/PageLayout)、文档语言写入(SetLoadedLanguage)、文档信息写入(SetLoadedCreator/Producer/Title/Author/Subject/Keywords)、Info 键删除(RemoveLoadedInfoKey)、XMP 元数据写入(SetLoadedXMPMetadata)、文档级 JavaScript 增删(AddLoadedDocumentJavaScript/RemoveLoadedJavaScript)、页面框写入(SetLoadedPageBox)。这些方法修改已加载的对象图,调用 SaveLoadedDocument 持久化

Version 2.242.0

新增

  • 新增已加载文档的 15 项检视 API(第四轮标准 PDF 功能差距扫除):页面模式/布局读取(GetLoadedPageMode/PageLayout)、Catalog 版本(GetLoadedCatalogVersion)、页面对象号(GetLoadedPageObjectNumber)、表单字段标志位组合(GetLoadedFormFieldFlags)/NoExport 检测(IsFormFieldNoExport)、注释标志解码(IsLoadedAnnotationHidden/Printable/Locked)、度量单位转换(PointsToMM/MMToPoints/PointsToInches/InchesToPoints/PointsToCm/CmToPoints

Version 2.241.0

新增

  • 新增已加载文档的 20 项深度检视 API(第三轮标准 PDF 功能差距扫除):Info 字典键枚举(GetLoadedInfoKeyCount/KeyName/KeyValue)、表单字段矩形/页索引(GetLoadedFormFieldRect/PageIndex)、注释 URI/弹出框/名称/修改日期(GetLoadedAnnotationURI/PopupRect/Name/ModDate)、书签颜色/样式(GetLoadedOutlineColor/Style)、元数据流检测(HasLoadedMetadata)、Trailer ID(GetLoadedTrailerID)、XRef 类型(GetLoadedXRefType)、最大对象号(GetLoadedMaxObjectNumber)、源文件大小(GetLoadedSourceFileSize)、嵌入字体计数(GetLoadedEmbeddedFontCount)、文档语言(GetLoadedLanguage)、页面持续时间/过渡效果(GetLoadedPageDuration/Transition)、表单字段必填标志(IsFormFieldRequired

Version 2.240.0

新增

  • 新增已加载文档的 20 项深度检视 API(第二轮标准 PDF 功能差距扫除):嵌入文件保存到磁盘(SaveLoadedEmbeddedFileToDisk)、设置文档信息字段(SetLoadedDocumentInfo)、读取 JavaScript 源码(GetLoadedJavaScriptSource)、命名目标枚举(GetLoadedNamedDestinationCount/Name)、OCG 可见性(GetLoadedOCGVisibility)、页面标签详情(GetLoadedPageLabelInfo)、全文档注释/字体计数(GetLoadedTotalAnnotationCount/TotalFontCount)、PDF/A 与 PDF/X 合规检测(IsLoadedPDFA/IsLoadedPDFX/GetLoadedPDFAVersion/GetLoadedPDFXVersion)、批量便捷方法(GetLoadedOutlineTitles/AllLinkURIs/ImageCountPerPage/AllPageBoxes/FormFieldNames/FormFieldValues)、一键文档摘要(GetLoadedSummary 返回页数/注释/字体/图像/表单/签名计数 + 加密/AcroForm/结构树标志)

Version 2.239.0

新增

  • 新增已加载文档的 20 项检视 API(标准 PDF 功能差距批量扫除):PDF 版本字符串(GetLoadedPDFVersionString)、线性化检测(IsLoadedLinearized)、XMP 元数据读取(GetLoadedXMPMetadata)、文档级 JavaScript 枚举(GetLoadedJavaScriptCount/Name)、页面标签计数(GetLoadedPageLabelCount)、查看器偏好(GetLoadedViewerPreferences)、结构树检测(HasLoadedStructureTree)、签名字段计数(GetLoadedSignatureFieldCount)、可选内容组(OCG)枚举(GetLoadedOCGCount/Name)、OutputIntent 检测(HasLoadedOutputIntent/GetLoadedOutputIntentInfo)、AcroForm 检测(HasLoadedAcroForm)、创建/修改日期(GetLoadedCreationDate/ModDate)、批量数组便捷方法(GetLoadedEmbeddedFileNames/LinkURIs/AnnotationSubtypes/FontNames 返回 THPDFAnsiStringArray

Version 2.238.0

新增

  • 新增已加载文档的深度检视 API(8 个只读方法):GetLoadedPageWidth/GetLoadedPageHeight 读取页面尺寸(pt);GetLoadedLinkCount/GetLoadedLinkInfo 枚举超链接注释(URI + 矩形);GetLoadedEncryptionInfo 查询加密版本、密钥长度、权限标志;GetLoadedEmbeddedFileCount/GetLoadedEmbeddedFileName 枚举文档嵌入文件(附件)。这些 API 遍历已加载的对象图但不修改它,仿现有 GetLoadedImageInfo/GetLoadedAnnotationInfo 模式。LoadedDocInspector 例程同步更新,演示页面尺寸/旋转/链接计数、加密状态、嵌入文件清单

Version 2.237.0

新增

  • 新增已加载文档的元数据查询 API:GetLoadedDocumentInfo 从 Info 字典读取标题、作者、主题、关键词、创建者、生成器;GetLoadedPageRotation 读取页面旋转角度;GetLoadedOutlineCount/GetLoadedOutlineItem 枚举书签树的顶层条目(标题 + 目标页索引)。这些都是只读查询,仿现有 GetLoadedImageInfo 模式,不修改文档对象图

Version 2.236.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen THotPDF methods: HPDFCMapReader parses both ToUnicode beginbfchar/beginbfrange Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen begincidchar/begincidrange Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen HPDFContentStream Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolenBT/ET, Tf, Tj/TJ/'/", Td/TD/Tm/T*, q/Q, inline-image BI/ID/EI Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen HPDFTextExtraction Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen/ToUnicode/Encoding Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen /DescendantFonts /CIDToGIDMapcid2code.txtGelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • Added THotPDF.GetLoadedFontDecoder, THotPDF.ExtractLoadedPageGlyphs and THotPDF.ExtractLoadedPageText Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen ExtractLoadedPageText Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • Added ExtractText Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen LoadedDocInspector read-only console layout

Gewijzigd

  • HPDFDoc now uses HPDFCMapReader, HPDFContentStream and HPDFTextExtraction Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen THotPDF Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen HPDFParser standalone-unit pattern (no dpk contains Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen HPDFDocGelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen THPDFFontDocAccess Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen ResolveLoadedDictionary / ResolveLoadedStream / HPDFReadStreamBytes helpers

Version 2.235.1

新增

  • 新增 PDFOptimize 控制台例程(Delphi):演示生成端 PDF 体积优化,通过同内容、不同压缩设置的多份 PDF 横向对比量化每种策略的收益 —— 文本/矢量文档的 cmNone vs cmFlateDecodeUseObjectStreams 对象流打包、彩色照片的 icJpeg JpegQuality 扫描对比 icFlate、双层扫描图的 icCCITT42(G4)对比 icJBIG2 lossless/lossy,控制台打印体积对比表,所有测试图像均在内存合成生成不依赖外部文件,并明确标注 HotPDF 压缩为生成端能力(无法对已加载 PDF 重新压缩)

Version 2.235.0

Added

  • Geconsolideerde Stamp-demo toegevoegd (Delphi en C++Builder): voegt de voormalige demo's Modify, MultiPageStamp en Watermark samen in één VCL-programma dat drie onafhankelijk in-/uitschakelbare stempel-lagen over een geparseerd paginabereik legt —— tekstwatermerk in de inhoudsstroom (AddTextWatermark), interactieve rubberen-stempelannotatie (AddStampAnnotation) en hoek-bitmap (AddImage + ShowImage), met behoud van paginabereik-parsing (HPDFParsePageRange) en positionering op vier hoeken
  • Geconsolideerde console-demo PageSizes toegevoegd: voegt de voormalige demo's SmallSize, NormalSize en LargeSize samen in één programma dat alle THPDFPageSize-enumwaarden van de categorieën klein/normaal/groot plus aangepaste Width/Height-afmetingen in één doorgang opsomt

Changed

  • De 5 zelfstandige programma's van de demogroep Security (Encryption, SecurityAES256, DecryptPDF, PFXSignature, SignatureField) zijn samengevoegd tot één console-programma dat RC4-128-versleuteling, AES-256-R5/R6-versleuteling, wachtwoord-ontsleuteling, handtekeningveld-placeholders en PFX-ondertekening dekt (automatisch overgeslagen wanneer de PFX-fixture ontbreekt)
  • De GUI's AddPages en DelPages zijn samengevoegd tot één GUI AddDelPages, terwijl de C++Builder-zijde PageMultiSize en AddDelPages zijn opgewaardeerd om overeen te komen met de rijkdom van Delphi (Size/Orientation/aangepaste breedte-hoogte/aantal/label/voortgang)
  • Het FontTest-glyf-regressiegereedschap is verplaatst van Demo naar Tests\Delphi\FontTest en Tests\C++Builder\FontTest, waarbij de rol als testgereedschap in plaats van functionele demo is verduidelijkt

Removed

  • De puur redundante demo TiffToPDF is verwijderd (Delphi en C++Builder); de mogelijkheid wordt volledig gedekt door het TIFF-conversiepad in ConvertTo
  • De C++Builder-demo CopyPages is verwijderd; de mogelijkheid wordt volledig gedekt door de meer complete PDFmerge
  • De demo Logger is verwijderd; het gebruik van de runtime-loggende facade HPDFLogger / HPDFLog dat zij demonstreerde is gemigreerd naar de API-documentatieonderwerppagina Docs/zh-cn/topics/HPDFLoggerFacade.html (de bibliotheek behoudt de unit HPDFLogger; alleen het demoproject is verwijderd)

Fixed

  • Het algoritme voor het verwijderen van even pagina's in de voormalige DelPages (nu samengevoegd in AddDelPages) is gecorrigeerd: de oorspronkelijke lus telde een statisch paginaantal tegen het krimpende document en verwijderde daadwerkelijk de indices 1..middenpunt in plaats van de echte even pagina's; nu loopt van de hoogste even pagina naar beneden en verwijdert 0-gebaseerde indices, en lost het lek van de globale THotPDF-variabele bij elke klik op

Version 2.234.1

Opgelost

  • Opgelost HPDFJBIG2Enc 单元编译错误(E2003 Undeclared identifier: 'Invariant'):旧版 Delphi 的 RTL 没有 TFormatSettings.Invariantatof 现改用与 HPDFXFA.XFAInvariantFormatSettings 一致的手动构造 TFormatSettings,恢复 RAD Studio 12.0 Win64 构建

Version 2.234.0

Toegevoegd

  • JBIG2 图像解码Toegevoegd高性能解码后端:加载侧图像提取(ExtractLoadedImage 等)默认启用该后端解码 PDF 内嵌的 JBIG2 图像
  • Toegevoegd THotPDF.UseExternalJBIG2Decoder 属性(默认 True):设为 False 即可切回原生 Pascal 解码器作为后备

Version 2.233.0

Toegevoegd

  • JBIG2 图像编码Toegevoegd高性能编码后端:AddImageicJBIG2 压缩黑白位图时默认启用该后端,产生更快且标准合规的算术编码 JBIG2 流
  • Toegevoegd THPDFJBIG2Options.UseExternalEncoder 选项(默认 True):设为 False 即可切回原生 Pascal MMR 编码器作为后备

Version 2.232.1

Opgelost

  • Opgelost JBIG2 算术 generic-region 编码器(HPDFJBIG2Codec)在高熵图像上的进位传播缺陷:MQ 算术编码器的字节输出(byte-out 与 0xFF 填充)遗漏了进位 spillover 位的清除,导致噪声、稀疏文档等高熵黑白位图被编码错误(规则的低熵图案恰好不触发,不受影响);同时将编码流终止符规范化为标准形式,确保第三方解码器可完整解析

Version 2.232.0

Toegevoegd

  • JBIG2-decoderingsbackend (HPDFJBIG2Codec) uitgebreid met ondersteuning voor rekenkundige (MQ) codering: afbeeldings-extractie aan de laadzijde (ExtractLoadedImage) kan nu rekenkundig gecodeerde JBIG2-afbeeldingen decoderen — rekenkundige generic region (GBTEMPLATE 0-3 + TPGDON), symboolwoordenboek en tekstgebieden; voorheen werd alleen MMR generic region ondersteund

Version 2.231.3

Toegevoegd

  • 为 jbig2dec 参考解码器打开 PNG 输出支持:Toegevoegd build-libpng-vc64.bat(用 MSVC 编译 libpng 1.8 的 16 个核心对象到 Win64\libpng-*.obj,自动生成 zlib-ng 头并复用 pnglibconf.h.prebuilt),改造 build-jbig2dec-vc64.bat 在检测到 libpng 对象时自动启用 jbig2_image_png.cHAVE_LIBPNG 并链接 libpng + zlib-ng 对象,jbig2dec.exe 现支持 -t png 输出,对 annex-h.jbig2 生成 64x56 1-bit grayscale PNG,SHA-1 与 PBM 输出一致

Version 2.231.2

Toegevoegd

  • 为 vendored 的 jbig2dec 参考解码器(Lib/thirdparty/jbig2dec)补齐 Windows 构建基础设施:Toegevoegd build-jbig2dec-bcc64x.bat(用 Embarcadero bcc64x 产 15 个 Delphi 可链接的 COFF64 对象,供未来 HPDFJBIG2.pas 通过 {$L} 消费)和 build-jbig2dec-vc64.bat(用 MSVC 产独立的 jbig2dec.exe 命令行解码器),并Toegevoegd config_types.h.in 模板与 .gitignore,Opgelost msvc.mak 缺失的对象规则

Opgelost

  • jbig2dec 上游源码在现代 Windows 工具链下的编译与可移植性问题:用干净的现代实现替换无法编译的 1990 年代 GNU getopt(getopt.c/getopt.h,MSVC 因缺 strings.h 中止、bcc64x/C23 拒绝无原型声明);Opgelost jbig2dec.c::hash_image 的 64 位 size_t 截断、jbig2_segment.c::jbig2_find_segmentuint32→int 下溢、sha1.c::SHA1_Update 的 64 位位计数,以及 jbig2dec.cfread 返回值误用、%lu 格式说明符与 POSIX 弃用警告。核心 JBIG2 解码算法保持上游原样

Version 2.231.1

Toegevoegd

  • Afbeeldings-extractie aan de laadzijde (ExtractLoadedImage) ondersteunt nu reeksen met meerdere filters: voorafgaande gegevensfilters zoals ASCIIHexDecode / ASCII85Decode / FlateDecode / LZWDecode / RunLengthDecode van de afbeelding worden in volgorde uitgepakt, waarna ze worden overgedragen aan het laatste afbeeldingsfilter (DCTDecode / JPXDecode of raster) voor decodering, bijvoorbeeld [/ASCII85Decode /FlateDecode]

Version 2.231.0

Toegevoegd

  • Toegevoegd CCITT 传真解码后端(HPDFCCITTDecode 单元):实现 ITU-T T.4(G3)与 T.6(G4)一维 / 二维传真解码,使加载侧图像提取(ExtractLoadedImage)现可解码 CCITTFaxDecode 双色图像,遵循 /DecodeParms 的 K / Columns / Rows / BlackIs1 / EncodedByteAlign 参数

Version 2.230.2

Toegevoegd

  • Afbeeldings-extractie aan de laadzijde (ExtractLoadedImage) ondersteunt nu DeviceGray en Indexed rasters met 1 / 2 / 4 bits per component: pakt bitsgewijs uit en schaalt grijswaarden proportioneel naar 8 bits

Version 2.230.1

Toegevoegd

  • Afbeeldings-extractie aan de laadzijde (ExtractLoadedImage) ondersteunt nu DeviceCMYK-afbeeldingen: CMYK-rasters met 4 kanalen worden geconverteerd naar RGB-bitmaps volgens standaardformules

Version 2.230.0

Toegevoegd

  • Toegevoegd JBIG2 解码后端(HPDFJBIG2Codec 单元):实现 ITU-T T.6(G4 / MMR)二维解码,激活原本休眠的 THPDFJBIG2Decoder,使加载侧图像提取(ExtractLoadedImage)现可解码 JBIG2Decode 双色图像。支持 MMR 编码的 generic region(含 /JBIG2Globals 共享全局段);算术编码、符号字典、文本 / 半调区域暂不支持

Version 2.229.3

Toegevoegd

  • Afbeeldings-extractie aan de laadzijde (ExtractLoadedImage) ondersteunt nu geïndexeerde kleurafbeeldingen (Indexed): FlateDecode / LZWDecode rasters opgeslagen in de Indexed kleurruimte worden hersteld naar ware kleuren bitmaps door op te zoeken in het palet; ondersteunt DeviceRGB / DeviceGray / DeviceCMYK basiskleuren en hexadecimale of letterlijke opzoektabellen

Version 2.229.2

Toegevoegd

  • Afbeeldings-extractie aan de laadzijde (ExtractLoadedImage) ondersteunt nu JPXDecode (JPEG 2000) afbeeldingen: afbeelding XObjects gecodeerd met JPXDecode worden door de OpenJPEG backend teruggedecodeerd naar bitmaps; GetLoadedImageInfo rapporteert Decodable=True voor dergelijke afbeeldingen. JPEG 2000 afbeeldingen ingesloten in PDF's kunnen nu rechtstreeks worden geëxtraheerd als VCL-bitmaps, met verliesvrije JPEG 2000 round-trip die pixel-perfect is

Version 2.229.1

Toegevoegd

  • Afbeeldings-extractie aan de laadzijde (ExtractLoadedImage) ondersteunt nu DCTDecode (JPEG) afbeeldingen: afbeelding XObjects gecodeerd met DCTDecode worden door TJPEGImage teruggedecodeerd naar bitmaps; GetLoadedImageInfo rapporteert Decodable=True voor dergelijke afbeeldingen

Version 2.229.0

新增

  • 新增加载侧图像提取 API:GetLoadedImageCount / GetLoadedImageInfo / ExtractLoadedImage,可枚举已加载 PDF 中的图像 XObject 并将其解码回 VCL 位图(TBitmap)。GetLoadedImageInfo 通过 THPDFLoadedImageInfo 返回每张图像的尺寸、位深、颜色空间、过滤器与可解码标志,便于在提取前预检。本版可解码以 FlateDecode / LZWDecode / ASCIIHex / ASCII85 / RunLength 编码的 DeviceRGB 与 DeviceGray 8 位栅格;索引色、CMYK、DCTDecode(JPEG)与 JPXDecode(JPEG 2000)图像将在后续版本接入

Version 2.228.0

新增

  • 新增 TJpeg2000BitmapTBitmap 派生类):可直接读写 JPEG 2000 图像,LoadFromStream 将 JP2 / J2K 解码为位图、SaveToStream 将位图编码为 JPEG 2000 码流;支持无损(LosslessCompression)与有损质量(CompressionQuality)两种模式、灰度 / RGB / CMYK 通道,并附带低层解码器 THPDFJpeg2000Decoder 供自定义图像管线直接取用解码后的像素数据

修复

  • 恢复 JPEG 2000(JPXDecode,PDF 1.7 ISO 32000-1 7.4.9)图像支持:此前解码后端因库源损坏退化为占位桩,无法解码任何 JP2 / J2K 码流;现重新接入 OpenJPEG 2.5.4 引擎,可将灰度、RGB 与 YCbCr 图像解码为 8 位样本(高位深分量重采样为 8 位、YCbCr 自动转 RGB、子采样分量按最近邻上采样),兼容带 JP2 box 头的文件与裸 J2K 码流
  • AddImage 现可直接传入 .jp2 / .j2k / .jpt / .jpc 文件并按所选压缩方式嵌入 PDF(自动识别格式),无需先行手工转码

Version 2.227.0

变更

  • 将 GSUB/GPOS 上下文应用与 Mark 定位函数(37 个纯函数)从 HPDFDoc.pas 追加提取到 HPDFShaping.pas。这批函数覆盖 GSUB 上下文/链式上下文/反向链式替换、GPOS 上下文/链式上下文/嵌套定位、Mark-to-Base/Mark-to-Mark/Cursive/Mark-to-Ligature 定位、GDEF 类查找、Collect-GID 子集闭包等,全部接收 TBytes 表切片 + glyph ID 值参数,不触碰实例状态。HPDFDoc.pas 本轮减约 11000 行(含被提取函数之间的 forward 声明和注释块),累计六轮拆分减约 21700 行(原文件的 26%)

Version 2.226.0

变更

  • 将简单对象解析器(ParseSimpleDictionaryParseSimpleArray)从 HPDFDoc.pas 提取到新单元 HPDFParser.pas。这两个 byte 级递归下降解析器从 AnsiString 内容构建 THPDFDictionaryObject / THPDFArrayObject 树,不触碰 THotPDF 实例状态;原方法保留为转发 stub,公开 API 不变。这是巨石拆分第五轮,本轮减约 2060 行,五轮累计减约 10700 行(原文件的 13%)

Version 2.225.0

变更

  • 将 OpenType 整形原语(71 个纯函数)从 HPDFDoc.pas 提取到新单元 HPDFShaping.pas。这批函数覆盖 GSUB 覆盖表/查找/替换、GDEF 类查找、TTF 表读取器、脚本重排与整形(Arabic、Syriac、Indic 语系、Thai/Lao、Hebrew、Javanese 等),全部接收值参数(TBytes 表切片、UnicodeString run、glyph ID)从不触碰 THotPDFTHPDFPage 实例。HPDFDoc.pas 通过 implementation 段 uses HPDFShaping 访问,TGPOSValue/TGPOSValueArray 类型一并迁移。这是巨石拆分第四轮,本轮减约 3000 行

Version 2.224.0

变更

  • 将 Factur-X / ZUGFeRD / XMP 电子发票辅助函数(22 个 standalone 函数)从 HPDFDoc.pas 提取到新单元 HPDFFacturX.pas。这批函数覆盖 FX/Basic/Minimum/EN16931 合规验证、XMP 元数据生成、嵌入式 XML 解析,全部自包含(仅操作值参数与 TBytes,不触碰 THotPDF 实例状态)。HPDFDoc.pas 通过 implementation 段 uses HPDFFacturX 访问,公开 API 不变。这是 HPDFDoc.pas 巨石拆分的第三轮,累计三轮减约 5600 行

Version 2.223.0

变更

  • 将 Direct File API 的底层 I/O helper(44 个共享函数)从 HPDFDoc.pas 提取到新单元 HPDFDirectFileIO.pas。这些 byte / xref / object-body / AES-crypt 读取函数被加载器和 Direct File 子系统共用,提取后两个子系统都通过 uses HPDFDirectFileIO 访问。HPDFDoc.pas 因此再减少约 1640 行(累计两轮拆分减约 5200 行)。DA 专用类型(THPDFDirectReadBufferTHPDFDirectWriteBufferTHPDFDirectIntArray)和全局缓冲(GHPDFCopyBuffer)一并迁移到新单元

Version 2.222.0

变更

  • 将预检(preflight)、合规检查、PDF/VT 验证相关代码从 HPDFDoc.pas 提取到新单元 HPDFPreflight.pas。原有 25 个公开方法(CreatePreflightReportValidatePDFVTEmbedPreflightReportAsXMP 等)签名完全不变,实现改为转发到新单元的自包含 standalone 函数;HPDFDoc.pas 因此减少约 3500 行。新增 3 个只读访问器(LoadedObjectCountGetLoadedObjectByIndexLoadedRootObjectIndex)让独立单元可枚举已加载文档的对象图

Version 2.221.0

新增

  • 全面支持多语言化:将 Readme.html 提取至 Docs/en-us 目录,并新增其他 37 种语言的翻译版本;更新了安装程序脚本(HotPDF-FULL.issHotPDF-TRIAL.iss),现在会根据安装时所选的语言,自动提取并放置对应语言版本的 Readme.html 至安装根目录

Version 2.220.0

新增

  • 新增统一运行期日志门面 THPDFLogger 与全局实例 HPDFLog:把原本散落的编译期调试开关统一为运行期可控的日志门面。提供 Error / Warning / Info / Debug 四级严重度过滤,可同时输出到文件、OutputDebugString(IDE Event Log 可见)和控制台;文件目标带 10 MB 单备份滚动;线程安全(TCriticalSection 保护);关闭态热路径仅一次布尔判断即返回,发布版零开销。LoadFromFileCreatePreflightReport 和 xref-stream 解析 fallback 三处诊断点已接入,加载成功 / 失败、preflight 摘要、对象流回退等事件会在启用日志时写入结构化记录。取代改 HotPDF.inc 重编包的传统做法,用户可在运行期随时开关诊断输出

Version 2.219.0

新增

  • 新增 THotPDF.GetGPOSSingleAdjustment(GID, FeatureTag, out XPlacement, YPlacement, XAdvance, YAdvance): Boolean:OpenType GPOS LookupType 1 Single Adjustment 的独立公开查询。按任意 4 字节 feature tag(典型 'size' 光学尺寸 / 'vhal' 半高度)收集 GPOS lookup,解包 Extension(Type 9)后对 LookupType 1 子表应用已有的 _GPOSApplySingle,返回单字形的 XPlacement / YPlacement / XAdvance / YAdvance 调整(1000-em,含正负号)。至此 GPOS 9 个 LookupType 全部 spec-complete——binary applier 早被 contextual kern 嵌套消费,本版补齐 standalone 查询入口填掉 spec matrix 里最后一条 GPOS gap

Version 2.218.1

新增

  • 新增 THPDFPage.GetWideCharAdvances(Text, out TotalWidth, out Advances):一次性返回 Unicode 文本的总宽和每字形自然 advance(含 kerning)。底层用 GDI GetTextExtentExPointW 一次调用同时拿总宽 + 累积宽度数组,差分后得到每字形 advance。调用方需预先 SetLength(Advances, Length(Text))。可用于自定义排版、表格列宽计算、签名块布局等需要全部字形宽度的一次性场景

变更

  • 优化 jtJustify 两端对齐性能:v2.218.0 的 _HPDFEmitJustifiedWideLine 对每行做 N+1 次 GetWideTextWidth(总宽 1 次 + 前缀差值 N 次,每次都是完整 GDI 往返)。改为一次 GetWideCharAdvances 调用,每行 GDI 往返从 N+1 次降到 1 次。典型 A4 整页 justify(45 行 × 80 字符)从约 3645 次 GDI 往返降到 45 次,约 80 倍提升。justify 视觉输出不变(同一度量引擎,含相同 kerning)

Version 2.218.0

新增

  • 新增 jtJustify 两端对齐模式(THPDFJustificationType 枚举第四值):传入 WideTextOutBox 后,每行(除末行)的自然宽度与框宽之间的差额会分摊到行内的可拉伸间隙,使文本左右两边都对齐到框边。Latin 文本在词间空格分摊;CJK 文本(Han / 假名 / 韩文等无词间空格的脚本)在任意相邻字形间均等分摊(日式排版均等割付)。末行及已达到 / 超过框宽的行保持自然左对齐宽度。底层用 v2.215.0 的 ExtTextOut TJ 数组 emit,测量用 v2.216.0 的 GetWideTextWidth

Version 2.217.0

新增

  • 新增 THPDFPage.WideTextOutBox:Unicode 多行自动换行。镜像 TextOutBox 的契约(返回放入框内的 WideChar 数),但用 GetWideTextWidth 测量、按 WideChar 索引切分。换行规则支持两种脚本:CJK(Han / 假名 / 韩文 / CJK 标点 / 全角)在任意两个字形间断行(CJK 无词间空格的标准行为);Latin 及其他脚本在最后一个空格 / Tab 处断词,无空格时硬断。硬换行(CR / LF / CRLF)照原样执行。修复 TextOutBox(AnsiString) 对中文 / 日文 / 韩文 / 代理对文本逐字节切分导致乱码换行的问题

Version 2.216.0

新增

  • 新增 THPDFPage.GetWideTextWidth(Text: WideString): Single:Unicode 文本宽度测量。现有 TextWidth(AnsiString) 先把 WideString 收窄成 AnsiString 再查 0–255 ABC 宽度表,对 CJK / 代理对 / 多字节文本测出无意义的值;新方法用 GDI GetTextExtentPoint32WlfHeight = -1000)按当前字体整串测量,返回用户空间点宽(与 TextWidth 同坐标系,可直接做布局预算)。同 _XFAMeasureTextImpl 的测量策略
  • 新增 THPDFPage.GetWideTextRowCount(BoxWidth: Integer; Text: WideString): Integer:Unicode 行数预测,镜像 GetTextRowCount 的 AnsiString 契约,基于 GetWideTextWidth 让 CJK / 代理对文本正确换行计数

Version 2.215.0

新增

  • 新增 THPDFPage.ExtTextOut(三个重载:PWORD / WideString / AnsiString):GDI ExtTextOut 风格的扩展文本输出,接受每字形水平位移数组 Dx,emit 单个 [<hex> <num> ...] TJ 数组,让调用方精确控制每个字形原点——用于表格数字对齐、手动字距、两端对齐、表单值填充和签名块排版。复用现有 _GPOSEmitPositionedRun TJ emit 器与 _GPOSGlyphAdvance1000 hmtx 读取,Dx 为 PDF 用户空间点(与 TextOut 的 X/Y 同坐标系);当 Dx 值等于字形自然 advance 时 TJ 调整数归零,可在一次调用内混排自然与覆盖字形。仅支持简单 LTR 文本,RTL bidi 重排与 producer-side shaping 被旁路

Version 2.214.0

新增

  • 新增 THPDFPage.AttachSignatureFieldAppearance:给已通过 AddSignatureField / AddSignedSignatureField / AddPAdESSignatureField 创建的签名字段挂上可见外观 /AP /N Form XObject,并返回 Form 让调用方在 widget 本地坐标系内绘制签名图片、签名者姓名、日期或原因文字;内置薄边框加浅灰底色作为默认的“在此签名”占位外观
  • 新增 HPDFNormalizeRect 工具函数(三个重载:TRect / THPDFRectangle / 四个 Extended 变参):把矩形角点重排为 Left<=RightTop<=Bottom,让鼠标拖框等无序输入可安全传给绘图 API
  • THPDFPage.RotateCoordinate 从 protected 提到 public:外部调用方现在可直接复用与 RectangleRotate 相同的旋转约定,计算旋转矩形角点、多边形顶点或文字包围盒

Version 2.213.0

新增

  • 新增 THPDFPage 几何便利方法套件:Arc 角度定义弧、Pie 角度定义扇形、Chord 弓形、ArcTo 中心加半径加扫角弧、Polyline 折线、Polygon 多边形、PolyBezier 三次贝塞尔样条。所有方法都复用已有的 MoveTo / LineTo / CurveToC / CurveArc 底层路径原语,对齐 GDI TCanvas 角度与点数组语义,让画弧、扇形、折线和样条曲线不必再手写操作符循环

Version 2.212.0

Nieuw

  • Nieuw is THPDFPage.SetAnnotationJavaScriptAction: voor gewone annotaties kunnen nu via /AA JavaScript action-scripts worden ingesteld voor mouse-enter, mouse-leave, mouse-down, mouse-up, focus en blur, wat handig is voor het toevoegen van interactieve scripts in annotatie-, link- en ondersteunende stromen voor de weergave van formulieren

Version 2.211.0

Nieuw

  • Nieuw is THPDFDocOutlineObject.SetURIAction: outline-nodes die door OutlineRoot.AddChild worden geretourneerd, kunnen nu worden omgeschakeld van de standaard in-page /Dest naar een /S /URI action, wat handig is om in het bladwijzerpaneel rechtstreeks links naar externe hulp, ondersteuningsportalen of gerelateerde bronnen aan te bieden

Version 2.210.0

Nieuw

  • Nieuw is THotPDF.AutoCreateURL: indien ingeschakeld kan THPDFPage.TextOut voor enkele horizontale regels de URL-teksten http://, https://, mailto: en www. automatisch als /S /URI link-annotaties uitschrijven, wat handig is om direct klikbare links te genereren in rapporten, inhoudsopgaven en contactinformatiepagina's

Version 2.209.0

Nieuw

  • Nieuw zijn THotPDF.SetOpenNamedDestinationAction en THotPDF.ClearOpenNamedDestinationAction: de /OpenAction in de document Catalog kan nu worden ingesteld om te navigeren naar een benoemd doel dat is geregistreerd via THotPDF.RegisterNamedDestination, wat handig is voor omslagen, inhoudsopgaven of documenten waarvan de generatievolgorde verandert, om bij het openen naar een stabiel hoofdstukingangspunt te verwijzen

Version 2.208.0

Nieuw

  • Nieuw is THPDFPage.AddPushButtonWithNextAction: aan de hoofdactie van een knop kan nu een tweede PDF action worden gekoppeld via /Next, wat handig is voor interactieve formulierstromen, zoals het opeenvolgend uitvoeren van /ResetForm en het vervolgens weergeven van velden, of het verbergen van velden voordat een benoemde actie in één enkele klik wordt uitgevoerd

Version 2.207.0

Nieuw

  • Verbetering van THotPDF.RegisterOptionalContentGroup: de parameter UserToggleAllowed is toegevoegd, waarmee de opgegeven optionele inhoudsgroep naar /OCProperties /D /Locked kan worden geschreven terwijl de standaard zichtbaarheidsstatus behouden blijft, wat handig is voor inhoud in kaarten, technische tekeningen en meertalige lagen die niet door de viewer-gebruiker mag worden in- of uitgeschakeld

Version 2.206.0

Nieuw

  • Nieuw is THPDFPage.AddNamedDestinationLink: paginalinks kunnen nu rechtstreeks verwijzen naar benoemde doelen die zijn geregistreerd met THotPDF.RegisterNamedDestination, waarbij een lokale /S /GoTo action en de string /D doelnaam worden uitgevoerd, wat handig is voor het behouden van stabiele navigatie in inhoudsopgaven, kruisverwijzingen en documenten waarvan de paginanummers kunnen veranderen

Version 2.205.0

Nieuw

  • Nieuw zijn THotPDF.JBIG2Options en THPDFJBIG2Options: AddImage(..., icJBIG2) geeft nu de op documentniveau ingestelde coderingsintenties Lossless, LossyLevel en UseSymbolDictionary door aan de geregistreerde JBIG2 encoder backend; de standaardwaarde behoudt het bestaande verliesvrije MMR-uitvoerpad en verliesgevende instellingen worden nog steeds geweigerd wanneer er geen backend is geregistreerd

Version 2.204.0

Nieuw

  • Nieuw zijn THotPDF.EmfOptions en THPDFEmfOptions: de verbeterde EMF/WMF-import kan nu per document worden geconfigureerd voor fit-verhoudingen, EMF-bitmaprenderingsschaal, WMF-bitmaprenderingsschaal, compressiemethode voor kleurenbitmaps en compressiemethode voor 1-bit bitmaps; de standaardwaarden behouden het bestaande uitvoergedrag, en bellers kunnen EMF-kleurenbitmaps overschakelen naar icFlate of de standaardwaarde icJpeg behouden

Version 2.203.0

Nieuw

  • TfrxHotPDFExport voegt de eigenschap ExportMode en de enumeratie TfrxHotPDFExportMode toe: de standaardwaarde hemPageMetafile behoudt het oorspronkelijke exportgedrag voor het voorbeeld van de hele pagina, terwijl hemObjectCanvas FastReport in staat stelt om TfrxView-objecten een voor een te tekenen tijdens de ExportObject-doorloop, waarna HotPDF het metabestand van de huidige pagina importeert, wat handig is voor FastReport-integratiescenario's die controle over de exportvolgorde op objectniveau vereisen

Version 2.202.0

Nieuw

  • Nieuw is de native JBIG2 monochrome afbeeldingsuitvoer: THPDFImageCompressionType bevat nu icJBIG2, en AddImage en AddImage(FileName) kunnen een 1-bit bitmap wegschrijven als een PDF 1.4+ /JBIG2Decode afbeeldingsstream; wanneer er geen externe encoder backend is geregistreerd, wordt het ingebouwde verliesvrije MMR generic region-pad gebruikt, waarbij het uitbreidingsmechanisme dat geregistreerde backends prioriteit geeft behouden blijft

Version 2.201.0

Nieuw

  • Nieuw zijn de JBIG2 backend-bridge en de native TDBGrid PDF-exportadapter: deze maken nu RegisterJBIG2DecoderBackend, RegisterJBIG2EncoderBackend, capaciteitsdetectie en encoder/decoder delegaatklassen openbaar en retourneren nog steeds expliciet False als er geen productieklasse-backend is geregistreerd; DBGridHotPDFExport kan de zichtbare kolommen van de VCL TDBGrid of de zichtbare velden van de dataset als gepagineerde tabel uitvoeren naar een file of stream, en herstelt na het exporteren de oorspronkelijke dataset bookmark

Version 2.200.4

Fixed

  • De E-Invoice-demo voegt nu ChargeTotalAmount en AllowanceTotalAmount toe aan de koptekstsamenvatting voor het ZUGFeRD 1.0 COMFORT-profiel: het ZUGFeRD 1.0 COMFORT-schema vereist dat elk bedragselement exact één keer voorkomt, en ontbrekende elementen zorgden ervoor dat de factuurgegevens niet door de validatie van ZUGFeRD/Factur-X-bedrijfsregels kwamen

Version 2.200.3

Added

  • De E-Invoice-demo bevat nu de profielen ZUGFeRD 1.0 COMFORT en ZUGFeRD 2.0 BASIC: het eerste genereert factuur-XML voor het verouderde CrossIndustryDocument 1p0-schema, terwijl het tweede het CrossIndustryInvoice 100-schema en zugferd-invoice.xml gebruikt; beide slagen voor de ingebouwde Factur-X/ZUGFeRD-validatie
  • De E-Invoice-demo bevat nu een selector voor het PDF/A-conformiteitsniveau, zodat de generatie het standaardniveau van het profiel kan overschrijven met PDF/A-3b of PDF/A-3u

Version 2.200.2

Fixed

  • Preflight-rapporten markeren nu niet-PDF-invoer zonder PDF-header als mislukt voor laadbare pagina's, in plaats van een fallback-paginatelling van de loader te accepteren

Version 2.200.1

Fixed

  • ZUGFeRD- en Factur-X-validatie decodeert nu met Flate gecomprimeerde ingebedde factuur-XML en XMP-metadata uit geladen PDF's, herkent PDF/A-identificaties in attribuutstijl en accepteert XRECHNUNG-factuur-XML-bestanden die /AFRelationship /Source gebruiken

Version 2.200.0

Added

  • Geladen Factur-X en ZUGFeRD hybride facturen kunnen nu worden gecontroleerd met een gestructureerd validatierapport dat PDF/A-3 metadata, Catalogus /AF-registratie, EmbeddedFiles naamboomregistratie, XMP-bestandsnaamconsistentie, profielbestandsnaamregels, /AFRelationship-regels en XML-richtlijnen uitlijning identificeert

Version 2.199.0

Added

  • Geladen PDF/A-3 hybride factuurbestanden kunnen nu worden geïnspecteerd met Factur-X en ZUGFeRD reader API's die de geladen catalogus, EmbeddedFiles-vermeldingen, ingebedde XML-bytes, document XMP-metadata, gedetecteerde factuurprofielgegevens en factuur-XML-extractie blootleggen

Version 2.198.1

Added

  • Factur-X PDF/A-3 workflows stellen nu FacturXWarnings bloot, zodat aanroepers extra ondersteunende bijlagen kunnen detecteren waarvan de MIME-typen buiten de aanbevolen PDF-, tekst-, afbeelding-, CSV-, XML-, JSON-, spreadsheet- en ODS-ondersteunende documentformaten vallen, zonder de bijlage te weigeren

Version 2.198.0

Added

  • PDF/A-3 Factur-X factuurinbedding accepteert nu de Franse EXTENDED-CTC-FR en EXTENDED-B2B-FR conformiteitsniveaus en valideert ze tegen de Factur-X 1.09 EXTENDED richtlijnidentificatie voordat de hybride factuurmetadata worden geschreven

Version 2.197.18

Fixed

  • PDF/A-3 Factur-X validatie behandelt COMFORT nu als een ZUGFeRD 1.0-only profielnaam en weigert de huidige factur-x.xml containers voordat ze niet-overeenkomende hybride factuurmetadata kunnen schrijven

Version 2.197.17

Fixed

  • PDF/A-3 ZUGFeRD 2.0 metadata schrijft nu de legacy urn:zugferd:pdfa:CrossIndustryDocument:invoice:1p0# PDF/A extensie namespace met behoud van zf:Version als 2p0, passend bij de validatieregels voor hybride facturen voordat de container definitief wordt gemaakt

Version 2.197.16

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen MINIMUM and BASIC WL Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen AFRelationship Data, enforces Alternative Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen XRECHNUNGGelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.15

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen Version values 1.2, 2.0, 2.1, 2.2, 2.3, and 3.0Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.14

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen EN16931 Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen EN 16931, matching current sample metadata while preserving existing EN 16931 calls

Version 2.197.13

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen urn:factur-x.eu:1p0:basic and urn:factur-x.eu:1p0:extended Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen BASIC and EXTENDED Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.12

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen ZUGFeRD-invoice.xml filename, COMFORT profile, urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0# Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen urn:ferd:CrossIndustryDocument:invoice:1p0 Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.11

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen zugferd-invoice.xml filename with Version 2p0Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen urn:zugferd.de:2p0 Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.10

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen fx:Version as 3.0 while keeping ordinary Factur-X metadata at 1.0Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.9

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen ConformanceLevel Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.8

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen signature-time-stamp Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.7

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen signature-policy-identifier Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.6

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen Reason Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen /Reason Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen signature-policy-identifier Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.5

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen CountryCode policy so current German ZUGFeRD invoices reject MINIMUM and BASIC WL, enforce Alternative Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen XRECHNUNG Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.4

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen CountryCode policy so German ZUGFeRD invoices can enforce Alternative Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen XRECHNUNG Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.3

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen xrechnung.xml Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen XRECHNUNG, factur-x.xml Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.2

Toegevoegd

  • PDF/A-3: THotPDF.AddFacturXAssociatedFile Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen factur-x.xml or xrechnung.xml in Catalog /AF and /Names /EmbeddedFilesGelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Gewijzigd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen /ModDate and raw MD5 /CheckSum Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen /Params Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.1

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen UseXRefStream / UseObjectStreams Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.197.0

Gewijzigd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen /CIDToGIDMap Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen /CIDSet Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.196.8

Fixed

  • PDF/A-1 Info dictionary and XMP metadata equivalence werkt nu correct en voorkomt de eerdere ongeldige of niet-conforme uitvoer

Version 2.196.7

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.196.6

Fixed

  • PDF/A markup-annotation print flags and appearance streams werkt nu correct en voorkomt de eerdere ongeldige of niet-conforme uitvoer
  • PDF/A rejection for non-standard named actions on form push buttons werkt nu correct en voorkomt de eerdere ongeldige of niet-conforme uitvoer

Version 2.196.5

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.196.4

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.196.3

Added

  • graceful XFA calculate evaluation for unsupported FormCalc constructs is nu beschikbaar, terwijl bestaande uitvoer ongewijzigd blijft tenzij de toepassing deze mogelijkheid gebruikt

Version 2.196.2

Added

  • XFA calculate evaluation for .rawValue, Sum(arr[*].field), and JavaScript this.rawValue is nu beschikbaar, terwijl bestaande uitvoer ongewijzigd blijft tenzij de toepassing deze mogelijkheid gebruikt

Version 2.196.1

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen+ - * /Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.196.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen <calculate> Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.195.0

Toegevoegd

  • XFA <exData> Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen <a href> Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • XFA flatten: exData rich text degraded-markup handling — unsupported inline tags (<b>, <em>Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen <exData contentType="text/html"> Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.193.0

Toegevoegd

  • XFA <exData> Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen <p> Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen text-align property on <p>: center and right Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen justify Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen margin-top, margin-bottom, space-before, and space-after in the <p> style attribute, giving control over vertical gaps between paragraphs

Version 2.192.0

Added

  • Bij het flattenen van een XFA <exData>-rich-text draw worden nu meerdere <span>-runs uit één alinea naast elkaar geplaatst, waarbij elke run zijn eigen inline CSS behoudt, met vet, cursief, kleur en lettergrootte, terwijl de vorige stap alleen de eerste span weergeeft
  • Elke run wordt geplaatst op basis van zijn gemeten breedte, zodat de spans met verschillende stijlen zonder overlap van links naar rechts over de regel stromen
  • Stapelende alinea's met tekstuitlijning en klikbare links volgen in latere updates

Version 2.191.0

Added

  • Bij het flattenen van een XFA-formulier wordt een <exData>-rich-textwaarde (een text/html-draw) nu weergegeven als een gestileerde tekst-run in plaats van overgeslagen, waarbij inline CSS op de span vet, cursief, kleur en lettergrootte instelt
  • Deze eerste stap behandelt één gestileerde run, dus één alinea en één span; meerdere spans, alinea-uitlijning en klikbare links volgen in latere updates

Version 2.190.43

Fixed

  • De object-stream herstelfallback vindt een lid nu op zijn positie in de stream in plaats van die positie als PDF-objectnummer te behandelen, zodat de fallback nu data retourneert in plaats van consequent leeg terug te komen
  • Die fallback labelt niet langer elk hersteld object als pagina — alleen een object waarvan de ruwe data een pagina declareren wordt als zodanig getypeerd, waardoor niet-gerelateerde object-stream leden het pagina-aantal niet meer ophogen — en een object dat na een parsefout in de indirect-objectlijst achterblijft wordt nu verwijderd vóór het vrijgegeven wordt

Version 2.190.42

Security

  • Het importeren van een PKCS#12 (.pfx/.p12) sleutellijstbestand wijst nu een PBKDF2-iteratieaantal buiten bereik af in plaats van het naar een 32-bit veld bij te kappen; een gekraakt bestand kan niet meer miljarden sleutelafleidingsrondes (een denial of service) opvragen of de teller naar een onverwachte waarde laten lopen

Version 2.190.41

Fixed

  • Het herstellen van een beschadigde gecomprimeerde stream accepteert niet langer een gedeeltelijk gedecomprimeerd resultaat als succes bij gedeeltelijke datacorruptie; de afgekorte output wordt weggegooid en de volgende decompressieconfiguratie geprobeerd, zodat aanroepen volledige data of een nette fout krijgen

Version 2.190.40

Fixed

  • Het kopiëren van een pagina met meerdere graphics-state (ExtGState) bronnen koppelt deze niet meer allemaal aan één naam en verwijdert niet meer alles behalve één; elke gekopieerde state krijgt nu een eigen naam

Version 2.190.39

Fixed

  • Het toevoegen van een hyperlink aan een geladen pagina waarvan de bestaande /Annots entry een dangling reference of geen array is veroorzaakt niet meer een crash; in dat geval wordt nu een verse annotatie-array geïnstalleerd in plaats van de onbruikbare waarde te casten

Version 2.190.38

Fixed

  • Het splitsen of extraheren van pagina's kent geen vaste sample dimensies meer toe aan een image die /Width of /Height mist, waardoor documenten vroeger met een vaste grootte werden bestempeld ; een ontbrekende dimensie blijft nu ongemoeid
  • Content-stream selectie tijdens paginavervolg geeft geen vaste bonus meer aan object nummer 192, wat stream scoring voor documenten met dat objectnummer eerder vertekende

Version 2.190.37

Fixed

  • Reparatie van een pagina die tijdens kopie of split verwijst naar een ontbrekend image (XObject) of graphics-state (ExtGState) bron lost nu het bronobject op via het objectnummer in plaats van het nummer als lijstpositie te behandelen, zodat het juiste object — of geen — wordt gekopieerd en een mislukte kopie niet meer naar nil derefereert

Version 2.190.36

Fixed

  • Bewerken en opnieuw opslaan van een pagina waarvan content over meerdere content streams is verdeeld rendert de eerdere streams niet meer dubbel — het samengevoegde resultaat blijft in één stream, de overige worden geleegd, en streams worden samengevoegd met whitespace zodat aangrenzende tokens niet versmelten tot een ongeldig token (ISO 32000-1 §7.8.2)
  • Een pagina met een /XObject bron maar zonder /Font bron laat niet langer de fontnamen van de vorige pagina staan; de fontnaamlijst wordt nu gereset in plaats van de imagenaamlijst

Version 2.190.35

Fixed

  • Een subset van een ingesloten TrueType font met corrupte glyph-location (loca) tabel leest niet meer buiten grenzen — een omgekeerd of buiten-bereik offset-paar wordt nu overgeslagen in plaats van te onderlopen naar een enorme kopieerlengte, en de horizontal-metrics tabel (hmtx) wordt op grenzen gecontroleerd voor kopiëren

Version 2.190.34

Fixed

  • Het kopiëren van documentmetadata (pagina labels en benoemde bestemmingen) naar een document dat deze entries al heeft lekt niet langer oude waardes, entries worden nu door dictionary eigen replace pad vervangen i.p.v. losgekoppeld zonder vrijgave

Version 2.190.33

Fixed

  • Het laden van bepaalde PDF 1.6 documenten waarvan pagina's uit object streams worden gereconstrueerd deelt dictionary waardes niet meer tussen twee pagina objecten, waardoor hetzelfde object bij vrijgave dubbel vrijgegeven kon worden; waardes worden nu diep gekopieerd

Version 2.190.32

Fixed

  • Het scannen van paginacontent om eenvoudige tekst te detecteren geeft geen range error meer op een content regel die leeg is na trim of geen sluitende haakje heeft ; de controle behandelt nu de lege case en begrenst scan tot de string lengte

Version 2.190.31

Fixed

  • Tekst renderen met codepoint U+FFFF schrijft geen glyf meer buiten het einde van een interne glyph tabel ; de tabel groeit indien nodig voor de glyph entry wordt opgeslagen

Version 2.190.30

Fixed

  • BeginParagraph wijst nu een alinea-index van 0 af i.p.v. vóór het begin van de array te lezen, en release een lopende alinea zodat herhaalde aanroepen niet meer lekken
  • EndParagraph wist nu zijn referentie na vrijgave van de huidige alinea, zodat een tweede aanroep niet meer hetzelfde object twee keer vrijgeeft

Version 2.190.29

Security

  • AES initialisatievectoren en sleutels worden niet meer gegenereerd uit een voorspelbare, niet-cryptografische fallback als de system random source tijdelijk niet beschikbaar is; de library weigert nu te encrypten in plaats van een zwakke, te raden IV of sleutel te produceren

Fixed

  • Het berekenen van een MD5 digest van een lege string dereferenceert niet meer een ongeldige pointer

Version 2.190.28

Fixed

  • Het renderen van EMF metafiles met PolyDraw records past nu elke punt zijn eigen type vlag toe in plaats van het volgende punts vlag te lezen — en voor 16-bit variant niet meer de eerste punt vlag voor ieder punt opnieuw gebruiken — dus lijn, curve, en sluiting worden correct getekend en parser leest niet meer voorbij het einde van punt array

Version 2.190.27

Fixed

  • Een LZWDecode stream met TIFF Predictor 2 en nul Columns of Colors in decode parameters decodeert niet meer division-by-zero ; de predictor stap wordt overgeslagen wanneer die waarden niet bruikbaar zijn
  • De een-argument LZW decoder initialiseert nu volledig zijn decode parameters, en verwijdert afhankelijkheid van ongeïnitialiseerde stack waardes

Version 2.190.26

Fixed

  • Code 93 controlekarakter berekening reset niet meer de verkeerde gewichtsteller, dus data langer dan 14 tekens geeft nu correcte controle symbolen
  • Code 128 set B codeert nu kleine letter i correct i.p.v. een spatie, dat eerder symbool en checksum vervuilde
  • MSI barcode controlecijfer berekening gebruikt nu de numerieke waarde van elke digit in plaats van char code, passend bij MSI readers
  • Barcodes met brede module width overflowen niet meer interne teller, die negatief of vermengd bar widths kon geven
  • Het tekenen van barcode met ongeldige data lekt niet meer opgeslagen font, pen en brush objecten
  • De standalone DrawText routine herstelt nu het canvas font dat werkelijk is opgeslagen, in plaats van de caller font naar een leeg default terug te zetten

Version 2.190.25

Fixed

  • Het decoderen van een afgekorte of malformede ASCIIHexDecode, ASCII85Decode, of RunLengthDecode stream zonder end-of-data marker loopt niet meer eeuwig vast en verbruikt niet meer geheugen — decoders stoppen nu wanneer input uitgeput is i.p.v. een stale byte opnieuw te verwerken
  • De ASCIIHexDecode filter verwerpt nu opnieuw illegale hexadecimale karakters ; een operator-precedence fout liet eerder out-of-range bytes door controle glippen

Version 2.190.24

Fixed

  • Het kopiëren of samenvoegen van objecten met geneste dictionaries die tijdens document recovery worden gereconstrueerd corrumpeert niet meer de dictionary of lekt geheugen — de routine bewaarde objectinstanties in slots met interne item records, en verworpen entries zonder release ; vervangen en verwijderen werken nu correct op item records

Version 2.190.23

Fixed

  • Een Type 0 (CID) font insluiten behoud nu zijn /ToUnicode map ook wanneer compressie van character map geen output geeft ; het vorige fallback pad had registratie overgeslagen, waardoor tekst in die font niet te kopiëren of extraheren was, en werkstreams konden tweemaal vrijgegeven worden ; de map wordt nu altijd opgeslagen, ongecomprimeerd indien nodig, en elke stream exact één keer vrijgegeven

Version 2.190.22

Fixed

  • Een cross-reference tabel die objecten met generatie-nummer 10 of hoger refereert — veelvoorkomend in PDFs met vele incrementele updates — schrijft niet meer buiten de interne duplicate detection table ; zulke entries worden nu geaccepteerd zonder de-duplication i.p.v. heap corruptie, en een malformeerde entry met objectnummer nul wordt overgeslagen i.p.v. indexen vóór begin van de tabel

Version 2.190.21

Fixed

  • Het doorgeven van een fontnaam van 32 tekens of meer aan SetFont schrijft niet meer over het vaste face-name veld in de interne font struct ; de naam wordt nu gekopieerd met dezelfde lengte-beperkte routine die al bestaat om geïnstalleerde fonts te peilen, zodat overlang gezicht-naam veilig getrimd wordt i.p.v. stack corruptie

Version 2.190.20

Fixed

  • Toevoegen van een niet-monochrome afbeelding met CCITT Group 3/4 compressie, of als 1-bit masker, corrumpeert niet meer de heap — de image builder had voorheen zijn stream vrijgegeven en de conversiefout op foutpad geabsorbeerd, waardoor destructor dezelfde stream nog eens vrijgaf; fout wordt nu doorgegeven zodat image object bouw foutloos faalt
  • Het opbouwen van lookup table kleur voor een 8-bit geïndexeerde afbeelding vraagt niet meer één palette item meer dan lookup buffer aan kan bevatten, waardoor een out-of-bounds write bij een bronbitmap met volledige 256 palette verdwijnt

Version 2.190.19

Security

  • Decoderen van een ASCII85Decode stream met all-zeros afkorting z schrijft niet meer voorbij decode buffer — output buffer is nu groot genoeg voor maximale expansie, waardoor heap overflow die een gemanipuleerd PDF stream kon triggeren is hersteld

Version 2.190.18

Security

  • Het importeren van een malformeerde PKCS#12 (.pfx/.p12) referentie of certificaat tijdens digitale ondertekening leest niet meer voorbij einde van zijn buffer — een overgrote ASN.1 lengte-veld dat eerder grenzen controle passeerde wordt nu geweigerd, zodat onbetrouwbaar ondertekenmateriaal geen out-of-bounds read meer kan triggeren

Version 2.190.17

Added

  • De standaard document loader leest nu hybrid-reference PDF's — bestanden waarvan het cross-reference trailer een /XRefStm zijsectie draagt, zoals geproduceerd door veel office exporters — zodat LoadFromFile de objecten laadt die deze bestanden in gecomprimeerde object streams bewaren in plaats van slechts een gedeeltelijk document te zien
  • Cross-reference streams en object streams zonder compressiefilter laden nu correct; ISO 32000-1 staat afwezigheid van /Filter toe

Fixed

  • Een hybride-reference document met AES-256 bescherming opnieuw opslaan — ActivateProtection plus SaveLoadedDocument, of EncryptFile — faalt niet meer met lijst-index fout, en de versleutelde output behoudt elk object van het bronbestand

Version 2.190.16

Changed

  • Het vinden van de objectheader en het stream-woord tijdens Direct File API-omschrijvingen scant het voorbeeld van elk object niet langer opnieuw vanaf het begin of dupliceert het voor een nieuwe poging, waardoor AES-256-versleuteling van een benchmarkdocument van 2 GB met 1,67 miljoen objecten ongeveer 2,3 keer sneller is (49 naar 14 seconden), ontsleutelen ongeveer 2,7 keer sneller (43 naar 16 seconden) en een volledige directe herschrijving daalt van ongeveer 10 naar 6 seconden

Version 2.190.15

Fixed

  • LoadFromFile en LoadFromStream stoppen niet langer voor de parsing begint wanneer er bytes staan voor de %PDF-header, zodat PDF's opgeslagen in HTTP- of Signed HTTP Exchange (SXG)-omslagen, mail captures en vergelijkbare containers de fallback herstelschema's voor documenten bereiken in plaats van te stoppen met een versieconversiefout
  • Het herstel laden van documenten met onbruikbare cross-referencegegevens gebruikt nu de pagina telling uit de actieve pagina-boom in plaats van elk pagina-achtig object in het bestand te tellen, waardoor een pagina die door een incrementele update is verwijderd niet meer wordt hersteld en het gemelde aantal overeenkomt met andere lezers
  • Wanneer een beschadigd document door scannen is hersteld, krijgen objectrevisies die later in het bestand zijn geschreven nu voorrang boven oudere revisies van hetzelfde objectnummer, conform de semantiek van incrementele updates

Version 2.190.14

Added

  • De Direct File API leest nu hybride-referentie-PDF's waarvan de cross-reference tabel een /XRefStm-nevensectie bevat, zoals geproduceerd door veelvoorkomende office-exporteurs, zodat directe open, copy, rewrite en AES-256-versleuteling de gecomprimeerde objecten die deze bestanden in objectstromen bewaren nu ziet in plaats van ze te verliezen

Fixed

  • Objecten die zijn vrijgegeven door een nieuwere revisie van een incrementeel bijgewerkt PDF met een traditionele cross-reference tabel kunnen niet meer uit een oudere revisie worden hersteld tijdens een directe rewrite
  • Vrije cross-reference-ingangen vormen niet meer onjuiste objectgrenzen meer, waardoor objecten dichtbij het begin van een bestand niet meer werden afgekapt bij directe herschrijfacties van documenten met hergebruikte objectnummers

Version 2.190.13

Changed

  • Het openen van PDF's waarvan de documentcatalogus in een gecomprimeerde objectstroom zit met DAOpenFileReadOnly of DACopyFile valt niet meer terug op een volledige documentlaadstap om het pagina-aantal te bepalen: op een 1,25 GB benchmarkbestand daalde directe opening van ongeveer 0,9 seconden naar enkele milliseconden, en lichte kopie bijna gehalveerd

Fixed

  • De Direct File API volgt nu de /Prev-keten van de cross-reference stream, waardoor incrementeel bijgewerkte PDF's alle objecten tonen aan directe open, copy, rewrite en AES-256-versleuteling in plaats van alleen de nieuwste revisie
  • Objecten die door een nieuwere revisie van een incrementeel bijgewerkt PDF zijn vrijgegeven kunnen niet meer uit een oudere cross-reference sectie worden hersteld tijdens een directe rewrite

Version 2.190.12

Changed

  • De Direct File API herschrijfpaden EncryptFile, DecryptFile en DASaveAsFile na documentwijzigingen lezen nu de bron via een schuivend venster en voegen uitvoerschrijfacties samen, waardoor het verwerken van zeer grote PDF's met miljoenen objecten meerdere malen sneller verloopt: in benchmarks van een 2 GB document daalde AES-256-versleuteling van ongeveer 153 naar 49 seconden, ontsleutelen van ongeveer 121 naar 43 seconden en een volledige directe rewrite van ongeveer 48 naar 10 seconden
  • Objectlichamen die al in geheugen aanwezig zijn worden niet meer nogmaals vanaf schijf opgehaald tijdens een directe rewrite waarbij ze naar het uitvoerbestand worden gekopieerd
  • Resolutie van indirecte /Length-referenties tijdens een directe AES-256 rewrite opent de bronbestanden niet meer per lookup opnieuw

Version 2.190.11

Added

  • Het flattenen van formulieren is nu eenvoudiger te sturen vanuit applicatiecode: FlattenFormFields retourneert het aantal AcroForm-velden dat het heeft afgevlakt, terwijl de nieuwe helpers HasFormFields en FormFieldExists toepassingen toestaan geladen PDF's of lopende formulieren te controleren vóór interactieve velden verwijderd worden
  • De Preflight CLI-demonstraties behandelen nu CSV-uitvoer, profiel- en presetvalidatie, exacte uitvoer paden van individuele bestanden, PDF/VT validatierapporten, geaggregeerde samenvattingen en dashboard-links, terwijl de Preflight Report GUI-demonstraties profielen valideren vóór generatie en CSV-uitvoer gefilterd op profiel als CSV behouden

Version 2.190.10

Fixed

  • Na MovePage heeft het document weer een actieve huidige pagina, gelijk aan DeletePage: direct tekenen na een verplaatsing werkt zonder eerst een pagina te selecteren, het tekenen belandt op dezelfde pagina die actief was vóór de verplaatsing, en direct sluiten van het document na een verplaatsing schrijft elke font betrouwbaar via het normale pad weg

Version 2.190.9

Fixed

  • Documenten die direct na MovePage zijn voltooid verliezen niet langer hun fonts: gedeelde fontgegevens die van al geschreven pagina's zijn uitgesteld worden nu altijd vastgelegd bij het sluiten van het document, zelfs als op dat moment geen pagina actief is, zodat de tekst van elke pagina zijn fontbronnen behoudt en correct rendert
  • Teruggaan naar een eerdere pagina en een extra font selecteren overschrijft niet langer een font dat al op die pagina is gebruikt: resource-namen die in het gedeelde-fontregister in afwachting zijn nu gereserveerd, zodat elk font zijn eigen naam behoudt en beide correct renderen
  • Als inbedden van een lettertype faalt, wordt het lettertypeprogramma nu on-gecomprimeerd opgeslagen en wordt het fontobject normaal afgerond, in plaats van een onvolledig fontobject te maken dat sommige viewers niet konden renderen
  • Met eenvoudige Latijnse lettertypen ingeschakeld behoudt tekst geschreven met Symbol of ZapfDingbats zijn symbolische betekenis: symbolieke lettertypen worden uitgesloten van de niet-ingesloten platte-tekstversnelling die anders welke glyphs toont (ISO 32000-1 §9.6.6.2)
  • Het genereren van PDF's veroorzaakt niet meer integer-overflowfouten in projecten met overflowcontrole ingeschakeld wanneer font subsetting actief is, en hergebruik van één componentinstantie in meerdere documenten veroorzaakt niet langer geheugenlekken in zeldzame werkstromen die een document halverwege herstarten of opnieuw structureren

Version 2.190.8

Fixed

  • Contextueel kerning wordt niet meer dubbel toegepast als een font meerdere alternatieve contextregels in één OpenType-lookup levert: de subtabellen van regels worden nu in volgorde geprobeerd en de eerste match wint, zoals de OpenType-specificatie eist
  • Overlappende contextmatches stapelen hun aanpassingen niet meer: nadat een contextuele positioneringsregel afgaat, begint de match verder na het gevonden glyph-bereik, zodat herhalende patronen elk kerning-aanpassingsniveau exact eenmaal krijgen
  • Versterkte parsing van OpenType-opmaak tegen afgebroken of foutieve fonts: geneste lookup-ontleding in zowel positionerings- als substitutie-engines valideert nu de volledige omvang van elk tabelrecord voor het lezen

Version 2.190.7

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolenfracGelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Gewijzigd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.190.6

Fixed

  • Meerdere accenten op één ligatuur positioneren nu correct in rechtse-toetstekst: de tweede en latere marks koppelen aan hun ligatuurcomponent (GPOS mark-to-ligature) in plaats van terugvallen naar de baseline
  • Gestapelde accenten die een ligatuurcomponent delen, zoals shadda gevolgd door een klinkerteken, stapelen nu op elkaar in plaats van te overlappen op hetzelfde anker
  • Ligatuurcomponentaantallen volgen nu GPOS-attribuutdata van het lettertype, zodat vooraf samengestelde ligatuurtekens met lange tekst-extractiemappingen de volgende marks niet meer uit bereik drukken
  • Enkelvoudige supplementairvlak-tekens worden niet langer per ongeluk als ligaturen behandeld tijdens markplaatsen
  • Een accent dat het lettertype herkent als een echte ligatuurcomponent wordt niet meer tweede keer getekend naast de ligatuur
  • Ligatuurcomponentmetadata lekken niet meer tussen niet-gerelateerde tekstuitvoercalls

Version 2.190.5

Added

  • Hanifi Rohingya-tekst krijgt rechter-naar-linkse cursieve modellering via de nieuwe eigenschap AutoShapeHanifiRohingya: wanneer ingeschakeld selecteert de engine de initiële, mediale, finale en geïsoleerde vormen van het lettertype zodat het script renderd met het juiste verbindingsgedrag
  • Tai Viet-tekst krijgt visuele herschikking via de nieuwe vlag sfTaiVietReorder: klinkers die voor de consonant staan, verschijnen nu op de juiste plek in plaats van volgens typlogica
  • Meetei Mayek-tekst krijgt syllabische herschikking via nieuwe vlag sfMeeteiMayekShaping: linker klinkertekens bewegen voor hun consonant voor correcte weergave
  • Alle drie schrijfsystemen volgen het bestaande opt-in model: documenten die de nieuwe eigenschap of vlaggen niet inschakelen produceren byte-identieke output

Version 2.190.4

Fixed

  • Tekst van links naar rechts wordt niet meer omgedraaid wanneer een lettertype-index toevallig in het numerieke venster valt dat de rechts-naar-links detector reserveert voor Hebreeuwse en Arabische codepoints; de detector slaat nu glyph-index payloads volledig over
  • Documenten die zeldzame Latijnse, Griekse of Cyrillische letters uit grote fonts mengen renderen in alle gevallen in de originele volgorde

Version 2.190.3

Fixed

  • Een alleenstaande hoge surrogate gevolgd door bepaalde BMP-tekens maakt niet langer een supplementair vlak codepoint tijdens right-to-left detectie: onjuiste UTF-16 invoer behoudt nu zijn logische volgorde in plaats van gegroepeerd en omgekeerd te worden als Adlam of Hanifi Rohingya tekst
  • Goed gevormde surrogateparen voor Adlam en Hanifi Rohingya blijven onaangetast en blijven rechts-naar-links vormen

Version 2.190.2

Fixed

  • Shaping vlaggen zijn nu geïsoleerd per schrijfsysteem: inschakelen sfMeeteiMayekShaping alleen herschikt niet langer Devanagari, Bengali, Tamil, Khmer, Myanmar of andere Indic tekst, en inschakelen sfIndicShaping of sfIndicGSUB alleen beïnvloedt Meetei Mayek tekst niet meer
  • Output blijft byte-identiek voor elk script waarvan de shaping vlag uit staat, waardoor het gedocumenteerde opt-in gedrag voor gemengde scripts behouden blijft

Added

  • ApplyIndicReorder krijgt een overload met een expliciete feature-set voor flag-scoped reorder queries; de bestaande parameterloze vorm behoudt volledige scriptdekking

Version 2.190.1

Fixed

  • De classificatie van Meetei Mayek letters is afgerond tegen de Unicode Character Database: letters PHAM, ATIYA en GOK tot BHAM (U+ABD0–U+ABDA) starten nu lettergrepen, zodat linker klinkertekens en gestapelde marks erna juist herschikt wanneer sfMeeteiMayekShaping is ingeschakeld
  • Woorden op basis van de veel voorkomende klinkerdrager ATIYA hielden klinkertekens eerder in logische volgorde; ze produceren nu dezelfde visuele volgorde als de rest van het Meetei Mayek-blok

Version 2.190.0

Fixed

  • Combinatiemarkeringen (accenten, Arabische harakat, Hebreeuwse niqqud, Thai en Lao klinkertekens) renderen nu op de juiste positie boven of onder de bedoelde letter in alle PDF-lezers; voorheen konden ze naar het begin van de regel verschuiven
  • Gestapelde combinatiemarkeringen hopen nu op de onderliggende markering in plaats van samen te vallen op de basisletter wanneer het lettertype ook een directe basisanchor voor de bovenmarkering draagt
  • Cursieve verbindingsoffsets en mark-to-ligature attachments volgen de PDF text-object specificatie (ISO 32000-1), waardoor positioneringsdrift na opgemaakte tekst verdwijnt
  • Tekst na een gepositioneerde mark of cursieve loop gaat door op de juiste penpositie

Changed

  • Kerning, mark positioning en cursieve attachment combineren nu binnen dezelfde tekstloop in plaats van elkaar uit te sluiten

Version 2.189.1

Fixed

  • Rechts-naar-links tekst past nu de vooruitgang van GPOS paar-kerning toe op de run-breedte, dus tekst na een gekernde RTL-run staat op de juiste positie
  • RTL kerning-runs met verticale stijging passen dezelfde vooruitgangscorrectie toe op hun laatste glyph

Version 2.189.0

Added

  • Uitgebreide opt-in OpenType-opmaak met contextuele GPOS plaatsingsindelingen, afstandspositionering, Khmer- en Myanmar-herschikking integratie, verticale alternatieven voor verticale lettertypen en extra typografische switches voor hoofdlettervormen, cijferbreedtes, wetenschappelijke kleinindexen, tellers, noemers en slashnul

Changed

  • AES-256 bestandsversleuteling en ontcijfering gebruiken nu een directe herschrijfpad voor grote PDF's, waarmee voor volledige documentgeheugenlading voor ondersteunde invoer zoals multi-gigabytebestanden wordt vermeden
  • Win32 AES-256-CBC gebruikt nu hetzelfde CPUID-geactiveerde AES-NI backend als Win64, met automatische pure-C fallback op processors zonder AES-NI-ondersteuning

Version 2.188.2

Added

  • sfStylisticAlternates past nu automatisch OpenType salt substituties toe tijdens Unicode tekstuitvoer wanneer het geregistreerde font passende stylistische alternaten toont

Fixed

  • GPOS paar- en mark-positioneringslookups weigeren nu misvormde class- en anchor-offsets waarvan grote fonttellingen 32-bit wiskunde-overloop kunnen veroorzaken, waardoor onveilige leesacties op beschadigde of vijandige fontdata worden voorkomen
  • GPOS mark-positioneringslookups respecteren nu LookupFlag mark filtering, zodat lettertypen die genegeerde marks, mark attachment types of mark filtersets vragen deze mark anchors niet langer per ongeluk toepassen
  • Adlam positionele vormgeving gebruikt nu dezelfde Unicode map beschikbaarheidsbewaking als Syriac, N'Ko en Mongolian shapingpaden

Version 2.188.1

Fixed

  • Rechts-naar-links Arabische en Hebreeuwse tekstuitvoer behoudt nu GPOS paar kerning actief wanneer mark positioning ook is ingeschakeld, zodat harakat en niqqud verankerd zijn zonder base-glyph spacing aanpassingen te verliezen

Version 2.188.0

Added

  • Nieuwe sfFractions vormgevingsoptie past automatisch OpenType frac substituties toe tijdens Unicode tekstuitvoer, inclusief tellercijfers, breukstreepje en kettingcontext noemercijfers met ToUnicode mappings terug naar originele tekst

Version 2.187.0

Added

  • Nieuwe vormgevingsopties passen automatisch OpenType enkelvoudige substitutie typografische kenmerken toe tijdens Unicode tekstuitvoer: sfSmallCaps voor smcp, sfCapsToSmallCaps voor c2sc, sfOldstyleFigures voor onum, sfLiningFigures voor lnum, sfSuperscripts voor sups, sfSubscripts voor subs en sfOrdinals voor ordn

Version 2.186.0

Added

  • Nieuwe sfDiscretionaryLigatures en sfHistoricalLigatures vormgevingsopties passen automatisch OpenType dlig en hlig lookups toe tijdens Unicode tekstuitvoer, waarbij font-native ligatuur glyph IDs met ToUnicode mappings worden uitgegeven en standaard uitgeschakeld blijven

Version 2.185.1

Fixed

  • Arabic Extended-B letters U+0870-U+089F nemen nu deel aan producer-side Arabische verbinding en native GSUB positionele vormgeving wanneer Arabische autoshaping is ingeschakeld, zodat lettertypen met passende OpenType Arabische kenmerken verbonden vormen kunnen emitten met ToUnicode mappings

Version 2.185.0

Added

  • Native Arabic GSUB vormgeving voor opt-in Arabische tekstuitvoer: als sfArabicGSUB is ingeschakeld, past HotPDF de geregistreerde lettertype-lookups init, medi, fina, isol, rlig, calt en rclt toe op logische Arabische runs en geeft de resulterende font-native contextuele glyph IDs met ToUnicode mappings uit
  • Nieuwe sfCursiveAttachment vormgevingsoptie past OpenType GPOS cursive ingang/uitgang ankers toe tijdens Unicode tekstuitvoer, waardoor met de native GSUB-pad gevormde verbonden Arabische glyphs via de eigen curs-data van het font uitlijnen

Version 2.184.2

Fixed

  • Rechter-naar-linkse Adlam fallbacktekst bewaart nu geldige UTF-16 surrogaat-paardvolgorde wanneer een font geen Adlam positionele substituties kan toepassen, en N'Ko U+07FA werkt nu alleen als join-causing teken zodat aangrenzende N'Ko letters verbinden zonder U+07FA door een positionele vorm te vervangen

Version 2.184.1

Fixed

  • Mark-to-ligature plaatsing dekt nu ook RTL Arabische ligaturen: een harakat op een ligatuur zoals de Allah-ligatuur komt op de juiste ligatuurcomponent, terwijl per-component plaatsing eerder alleen op links-naar-rechts tekst gold en RTL harakat op de gewone voortgangsbreedte bleef; al gevormde Arabische ligaturen (zoals Allah- en lam-alef-ligaturen) worden nu herkend voor componenttracking en de mark-to-ligature optie blijft standaard uitgeschakeld

Version 2.184.0

Added

  • Producer-side cluster en component tracking in de tekstvormgeving pijplijn: zodra ligaturen worden gevormd registreert de engine welke originele tekens elke outputglyph dekt en hoeveel ligatuurcomponenten deze bevat, waardoor een basis ontstaat voor precieze mark placeing en tekstextractie op geligeerde runs
  • Combinatiemarks worden nu aan de juiste component van een ligatuur gehecht (OpenType GPOS mark-to-ligature) wanneer de nieuwe mark-to-ligature vormgevingsoptie is ingeschakeld voor links-naar-rechts geligeerde tekst; output blijft onveranderd wanneer de optie uitgeschakeld is
  • Multi-component ligaturen uit dit pad bevatten precieze tekstextractiemappings, zodat kopiëren en plakken de originele tekenreeks herstelt

Version 2.183.0

Added

  • Voorbewerking voor Javanese schrift met correcte klinkerplaatsing: wanneer de Javanese-herschikkingsoptie actief is, worden pre-base-klinkertekens zoals taling en dirga mure v贸贸r de consonantcluster geplaatst, inclusief pangkon-verbonden stapels, voordat er wordt gerenderd, zodat de tekst in de juiste visuele volgorde staat; uitvoer blijft ongewijzigd wanneer de optie uit staat

Version 2.182.0

Added

  • Voorbewerking voor Hebrew-tekst met correcte klinkerpuntplaatsing: wanneer de Hebrew-herschikkingsoptie actief is, worden klinkerpunten, dagesh, shin- en sin-punten en cantillatietekens v贸贸r rendering in canonieke volgorde gezet, zodat mark-positionering ook werkt wanneer de bron een andere volgorde gebruikt; uitvoer blijft ongewijzigd wanneer de optie uit staat

Version 2.181.0

Added

  • Voorbewerking voor Thai- en Lao-tekst met correcte markplaatsing: wanneer de Thai/Lao-herschikkingsoptie actief is, wordt SARA AM gesplitst in een bovenste en achterste deel en worden klinker- en toonmarkeringen v贸贸r rendering canoniek geordend, zodat mark-positionering tonen en klinkers correct uitlijnt; uitvoer blijft ongewijzigd wanneer de optie uit staat

Version 2.180.0

Added

  • Automatische producer-side-vorming voor Adlam-tekst, het West-Afrikaanse Fula-schrift in U+1E900-U+1E95F: wanneer AutoShapeAdlam actief is, worden letters via OpenType-positionele substituties in hun juiste cursieve verbindingsvorm weergegeven, surrogate pairs worden correct verwerkt en kopi毛ren/plakken herstelt de oorspronkelijke letters; uitvoer blijft ongewijzigd wanneer de optie uit staat

Version 2.179.0

Added

  • Automatische producer-side-vorming voor N'Ko-tekst in U+07C0-U+07FF: wanneer AutoShapeNko actief is, worden letters via OpenType-positionele substituties in hun juiste cursieve verbindingsvorm weergegeven en kopi毛ren/plakken herstelt de oorspronkelijke letters; uitvoer blijft ongewijzigd wanneer de optie uit staat

Version 2.178.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.177.0

Added

  • Ondersteuning voor het lezen van OpenType GPOS verticale kerning via vkrn en verticale proportionele alternatieven via vpal, waarmee de verticale advance-correctie die de font tussen gestapelde glyphs definieert beschikbaar komt voor verticale tekstuitvoer

Version 2.176.0

Fixed

  • Kerning past nu GPOS-glyphplaatsingsoffsets toe, inclusief horizontale XPlacement en verticale YPlacement, die eerder werden gelezen maar genegeerd; fonts die glyphposities via hun kern-feature verfijnen renderen die offsets nu samen met de advance-correctie voor LTR- en RTL-tekst

Version 2.175.0

Fixed

  • Gelaagde combinatietekens in RTL-tekst worden nu correct gepositioneerd, zoals een Arabic-letter met shadda plus klinker of gestapelde Hebrew-punten; elk extra teken stapelt op het teken eronder in plaats van terug te vallen op de basisletter

Version 2.174.0

Added

  • Ondersteuning voor OpenType GPOS Mark-to-Ligature attachment LookupType 5, dat de plaatsing van een combinatieteken op een specifiek onderdeel van een ligatuur rapporteert zodat elk teken aan het eigen deel van een meerletterige ligatuur verankert

Version 2.173.0

Added

  • Ondersteuning voor het lezen van OpenType GPOS cursive attachment LookupType 3, met entry- en exit-ankers die cursieve schriften zoals Arabic Nastaliq gebruiken om verbonden letters op een vloeiende basislijn uit te lijnen

Version 2.172.0

Added

  • Kerning wordt nu toegepast op RTL-tekst zoals Arabic en Hebrew wanneer kerning actief is; voorheen plaatste het RTL-weergavepad alleen combinatietekens en liet kerning ongebruikt
  • OpenType GPOS contextuele kerning met LookupType 7 Context en LookupType 8 Chained Context wordt nu uitgevoerd voor LTR- en RTL-tekst, zodat contextafhankelijke kerning de uitvoer aanscherpt in plaats van alleen gelezen te worden

Version 2.171.0

Added

  • Ondersteuning voor OpenType GPOS contextuele kerning met LookupType 7 Context en LookupType 8 Chained Context positioning, zodat contextafhankelijke kerning uit de font kan worden gelezen en gebruikt voor tekstpositionering

Version 2.170.0

Added

  • Optionele automatische toepassing van de OpenType locl Localized Forms-feature, waarmee taalspecifieke lettervormen zoals Servische en Bulgaarse Cyrillische vormen of Turkish dotless i worden gekozen wanneer een shapingtaal is ingesteld

Version 2.169.0

Added

  • Optionele automatische toepassing van de OpenType calt Contextual Alternates-feature op tekst onder het actieve script, waarbij ongecodeerde contextuele glyphs met ToUnicode-mapping worden ingesloten zodat kopi毛ren en plakken de oorspronkelijke tekst herstellen

Version 2.168.0

Added

  • Optionele automatische toepassing van de OpenType rclt Required Contextual Alternates-feature op gevormde Arabic-tekst via de contextual-alternates-optie, zodat contextuele letterselectie geen downstream shaper meer nodig heeft

Version 2.167.0

Added

  • OpenType GSUB shaping for Devanagari and Indic scripts is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld
  • the new Indic GSUB mode remains opt-in and separate from reorder-only shaping is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld
  • ToUnicode recovery for producer-side complex shaping codepoints is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.166.0

Added

  • producer-side Mongolian shaping with OpenType GSUB is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld
  • ToUnicode extraction for shaped Mongolian letters is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.165.1

Fixed

  • right-to-left ordering for shaped Syriac and Arabic Supplement / Extended-A words werkt nu correct en voorkomt de eerdere onjuiste uitvoer of diagnose

Version 2.165.0

Added

  • eenvoudige Latijnse lettertypen compact WinAnsi output for printable ASCII standard-font text is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.164.0

Changed

  • document-wide shared font embedding across multiple pages gedraagt zich nu consistent over gegenereerde pagina's en behoudt rendering en tekstextractie

Version 2.163.3

Gewijzigd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen JEPSCD+ArialMTGelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.163.2

Gewijzigd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen Compression Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.163.1

Fixed

  • valid TrueType fonts without optional hinting tables werkt nu correct en voorkomt de eerdere onjuiste uitvoer of diagnose

Version 2.163.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen
  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.162.0

Added

  • OpenType liga / clig Latin ligature folding through sfStandardLigatures is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld
  • copy, paste, and search recovery for folded Latin ligatures is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.161.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.160.0

Added

  • OpenType GSUB groundwork for future Tibetan rendering is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.159.0

Added

  • GPOS mark positioning for Hebrew niqqud and Arabic harakat in right-to-left runs is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.158.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.157.0

Added

  • producer-side shaping for Arabic Supplement and Arabic Extended-A letters is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld
  • ToUnicode recovery for newly shaped Arabic Supplement and Extended-A letters is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.156.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.155.0

Added

  • GPOS Mark-to-Base placement for combining marks in Thai, Lao, Hebrew, and Latin text is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.154.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.153.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.152.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.151.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.150.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Opgelost

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.149.0

Toegevoegd

  • Gelokaliseerde wijzigingsdetails voor API-gedrag en de vermelde symbolen

Version 2.148.1

Changed

  • more verifiable Memory Stream and PDF Info demo output gedraagt zich nu consistent over gegenereerde pagina's en behoudt rendering en tekstextractie

Version 2.148.0

Added

  • XFA fields below the first page flowing onto following pages is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.147.4

Added

  • diagnostics for oversized content-sized XFA text fields and labels is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.147.3

Added

  • one-line minimum height for empty growable XFA text is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.147.2

Added

  • layout for XFA text without an explicit width is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.147.1

Added

  • automatic height for XFA text with width but no height is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.147.0

Added

  • internal text measurement groundwork for content-sized XFA text is nu beschikbaar; bestaande uitvoer blijft gelijk tenzij de bijbehorende optie is ingeschakeld

Version 2.146.4

Fixed

  • positive page-height normalization for loaded PDFs with descending box coordinates werkt nu correct en voorkomt de eerdere onjuiste uitvoer of diagnose
  • unchanged drawing positions, field rectangles, text, and images on affected loaded pages werkt nu correct en voorkomt de eerdere onjuiste uitvoer of diagnose

Version 2.146.3

Fixed

  • pagination for repeating fixed-position XFA data sections werkt nu correct en voorkomt de eerdere onjuiste uitvoer of diagnose
  • more accurate off-page diagnostics for XFA forms loaded from existing PDFs werkt nu correct en voorkomt de eerdere onjuiste uitvoer of diagnose

Version 2.146.2

Added

  • XFA-paginering strekt zich nu uit over meerdere inhoudsgebieden: wanneer een pagina meerdere inhoudsgebieden definieert, vult vloeiende inhoud ze op volgorde—deze gaat verder in het volgende gebied op dezelfde pagina voordat naar een nieuwe pagina wordt overgegaan—zodat formulierindelingen met meerdere kolommen en gebieden correct worden gepagineerd
  • Lange herhalende secties worden nu over meerdere pagina's gepagineerd: een gegevensgestuurde lijst die zich eenmaal per record herhaalt en groter wordt dan het inhoudsgebied gaat verder op volgende pagina's zonder rijen te verliezen
  • Sectie-einden worden nu gerespecteerd: een formuliersectie die is gemarkeerd om op een nieuwe pagina te beginnen, begint op een nieuwe pagina, zelfs als er op de huidige pagina nog ruimte is, terwijl een gebiedseinde de sectie naar het volgende inhoudsgebied verplaatst

Version 2.146.1

Added

  • XFA-formulieren worden nu automatisch gepagineerd: wanneer doorlopende inhoud—zoals een lange gegevensgestuurde lijst of een reeks velden—hoger wordt dan het inhoudsgebied van de pagina, loopt de overloop door op een nieuwe pagina in plaats van voorbij de onderrand; formulieren van 茅茅n pagina blijven ongewijzigd en leveren identieke uitvoer op

Version 2.146.0

Changed

  • Het afvlakken van XFA naar AcroForm leidt nu elk afgevlakt veld en elke afbeelding via een paginatoewijzing per item—de interne basis voor paginering over meerdere pagina's in komende versies; formulieren van 茅茅n pagina blijven onaangetast en leveren identieke uitvoer op

Version 2.145.4

Changed

  • XFA-tabel- en links-naar-rechts-lay-out (lr-tb) zijn gevalideerd aan de hand van echte XFA-formulieren—facturen, inkooporders, betalingsverzoeken en gegevensrasters—waarmee is bevestigd dat gegevensgestuurde tabellen 茅茅n rij per record genereren en dat elke cel in de juiste rij en kolom terechtkomt, zonder dat er velden verloren gaan ten opzichte van de eerdere positionele verwerking
  • Wanneer een tabelkolom met automatische breedte (een -1-vermelding in columnWidths) alleen uitbreidbare cellen zonder meetbare breedte bevat, wordt de weggelaten kolom nu gemeld via XFAFlattenWarnings in plaats van stilzwijgend te worden weggelaten

Version 2.145.3

Added

  • Tabelkolommen met automatische breedte (een -1-vermelding in columnWidths of niet-opgegeven kolommen) passen zich nu aan hun breedste cel aan, zodat elke cel in een kolom met automatische breedte op alle rijen op dezelfde positie wordt uitgelijnd; tabellen die vaste en automatische kolombreedtes combineren, worden nu consistent ingedeeld

Version 2.145.2

Added

  • Gegevensgestuurde XFA-tabellen worden nu correct uitgevouwen: een tabelrij die is gemarkeerd om te herhalen (met <occur>) genereert 茅茅n rij per gegevensrecord, zodat facturen en regelitemlijsten worden afgevlakt tot 茅茅n rij per item in plaats van 茅茅n enkele sjabloonrij; opmaak van rijen zonder inhoud verschuift de kolommen niet meer

Version 2.145.1

Added

  • XFA-formulieren kunnen nu de tabelindeling gebruiken: een subformulier met layout="table" schikt zijn layout="row"-onderliggende elementen in uitgelijnde kolommen, waarbij de kolombreedten worden ontleend aan de columnWidths van de tabel en de hoogte van elke rij wordt bepaald door de hoogste cel. Afgevlakte tabellen—facturen, regelitemlijsten, gegevensrasters—plaatsen hun cellen nu in de juiste rijen en kolommen in plaats van elkaar te overlappen aan de linkerrand

Version 2.145.0

Added

  • XFA-formulieren kunnen nu een van links naar rechts tegelende lay-out gebruiken: een subform met layout="lr-tb" plaatst zijn onderliggende veld- en tekenelementen naast elkaar en gaat naar een nieuwe regel wanneer het volgende niet meer in de containerbreedte past. Afgevlakte formulieren die besturingselementen in een teruglopend raster plaatsen—in plaats van in 茅茅n verticale kolom—positioneren ze nu correct

Version 2.144.5

Fixed

  • XFA-formuliervelden die hun x- en/of y-positie weglaten—een gangbare, geldige verkorting in gepositioneerde lay-out waarbij de weggelaten co枚rdinaat terugvalt op de oorsprong van de container—worden niet langer weggelaten. Praktijkformulieren waarvan de adresblokken, secties en tabellen op deze standaardwaarde vertrouwden, worden nu afgevlakt met hun volledige set velden in plaats van ze stilzwijgend te verliezen
  • Geneste subsecties in een formulier met stroming van boven naar beneden verplaatsen de verticale cursor nu met hun eigen inhoudshoogte, zodat aangrenzende secties onder elkaar worden gestapeld in plaats van op dezelfde positie te overlappen. Formulieren met stroming over meerdere secties worden nu in de juiste verticale volgorde geplaatst

Version 2.144.4

Added

  • XFA-formulieren met datagestuurd herhalende secties worden nu ondersteund: een subformulier met <occur max="-1"/> (of een willekeurig niet-standaard maximum) breidt uit tot 茅茅n instantie per overeenkomende gegevensgroep in het datasets-pakket, waarbij elke instantie zijn velden koppelt aan de bijbehorende rijwaarden. Formulieren die impliciete datasets-koppeling gebruiken om lijsten of tabellen met variabele lengte te genereren, worden nu afgevlakt met het juiste aantal velden en de juiste waarden per rij

Version 2.144.3

Added

  • XFA-formulieren kunnen nu een vloeiende lay-out van boven naar beneden gebruiken: een subformulier met layout="tb" stapelt zijn onderliggende veld- en tekenelementen verticaal—elk onder het vorige—zelfs wanneer die onderliggende elementen geen expliciete positie opgeven. Afgevlakte formulieren die afhankelijk zijn van automatische verticale stroming in plaats van vaste co枚rdinaten plaatsen hun velden nu correct

Version 2.144.2

Fixed

  • XFA-formulieren waarvan het eerste pakket begint met een DOCTYPE-declaratie—zoals geproduceerd door sommige XFA-ontwerptools—worden nu correct afgevlakt via FlattenLoadedXFA in plaats van te mislukken met een fout over een ontbrekende sjabloon. De loader herkent het hoofdelement xdp:xdp zelfs wanneer er een DOCTYPE-proloog aan voorafgaat
  • Interne XML-entiteiten die in de DOCTYPE van een formulier zijn gedeclareerd (bijvoorbeeld <!ENTITY name "value">) worden nu uitgebreid overal waar de bijbehorende verwijzing &name; in het formulier voorkomt, zodat de afgevlakte velden de opgeloste tekst bevatten

Security

  • Externe XML-entiteiten (SYSTEM of PUBLIC) waarnaar een XFA-formulier verwijst, worden tijdens het afvlakken nooit opgelost: HotPDF haalt de aangehaalde URL of het bestand niet op en beschermt zo tegen XXE-aanvallen (XML External Entity). Een dergelijke verwijzing wordt uitgebreid tot lege tekst en gemeld via XFAFlattenWarnings

Version 2.144.0

Changed

  • Het afvlakken van XFA naar AcroForm verloopt nu via een speciale layout-engine met twee fasen: eerst worden de posities van de elementen berekend, daarna worden de velden en afbeeldingen weggeschreven. Statische positionele formulieren leveren identieke uitvoer op; deze interne wijziging vormt de basis voor de ondersteuning van vloeiende lay-out en herhaalde secties in toekomstige versies

Version 2.143.5

Fixed

  • Praktijkgerichte XFA-formulieren die hun /XFA-vermelding als pakketarray opslaan, worden nu correct afgevlakt via FlattenLoadedXFA in plaats van te mislukken met een fout over een ontbrekende sjabloon. Dit omvat formulieren waarvan de pakketstromen afzonderlijk zijn gecomprimeerd zonder een direct leesbaar filter, en formulieren die het configuratiepakket v贸贸r de sjabloon plaatsen—beide komen vaak voor in PDF's die door professionele XFA-ontwerptools worden ge毛xporteerd

Added

  • Het XFA-<draw>-afvlakken geeft statische tekstlabels—formuliertitels en veldbijschriften—nu weer als native paginatekst, met behoud van het lettertype, de tekengrootte en de kleur van het label, zodat ze zichtbaar blijven op een afgevlakt formulier in lezers zonder XFA-engine
  • XFA-knopwidgets worden nu omgezet in native AcroForm-drukknoppen met behoud van hun bijschrifttekst, zodat actieknoppen op het afgevlakte formulier verschijnen

Version 2.143.4

Added

  • De nieuwe methode FlattenLoadedXFA maakt het XFA-formulier dat is ingebed in een reeds geladen PDF plat tot native AcroForm-velden en statische paginagraphics, en voltooit zo de XFA-naar-AcroForm-conversie voor documenten die vanaf schijf zijn geopend (eerdere releases maakten de door de aanroeper aangeleverde XFA-bytes plat via ApplyXFAAsAcroForm). De methode leest de /XFA-vermelding van het formulier, of dit nu 茅茅n stream of een pakketarray is, verwijdert vervolgens /XFA en wist de vlag voor dynamische rendering, zodat het resultaat een eenvoudig AcroForm is dat elke PDF-lezer weergeeft. De methode geeft het aantal aangemaakte velden terug, of nul wanneer de geladen PDF geen XFA bevat
  • Beide XFA-flatten-ingangen accepteren nu een Editable-optie: laat deze aan staan (de standaard) voor invulbare velden, of schakel deze uit om elk gegenereerd veld als alleen-lezen te markeren
  • Dubbele XFA-veldnamen, die in XFA zijn toegestaan maar niet in AcroForm, worden nu automatisch uniek gemaakt met een numeriek achtervoegsel, en de naamswijziging wordt gerapporteerd via XFAFlattenWarnings
  • XFA-sjablonen die voor verschillende sjabloonschemaversies zijn gemaakt, worden geaccepteerd; een niet-herkende sjabloonnaamruimte wordt als waarschuwing genoteerd in plaats van geweigerd, zodat het formulier toch wordt platgemaakt

Version 2.143.3

Added

  • Het afvlakken van XFA naar AcroForm geeft nu de statische <draw>-afbeeldingen uit een XFA-sjabloon weer als native pagina-inhoud, zodat rechthoeken, lijnen, bogen en ingesloten afbeeldingen hun plaats behouden op een afgevlakt formulier in PDF-lezers die geen XFA-engine implementeren. Rechthoeken en lijnen worden getekend met de XFA-randdikte en -kleur, een boog wordt weergegeven als een vloeiende curve volgens de begin- en veeghoek, en een ingesloten PNG- of JPEG-afbeelding wordt gedecodeerd en in het oorspronkelijke kader getekend

Version 2.143.2

Added

  • Het afvlakken van XFA naar AcroForm neemt nu de veldopmaak over op de gegenereerde AcroForm-velden. De XFA-lettertypefamilie en -grootte, de tekstkleur, de randkleur en -breedte van het veld en de horizontale tekstuitlijning worden vertaald naar de standaardweergave, de rand en de uitlijning van het veld, zodat een afgevlakt XFA-formulier zijn beoogde uiterlijk behoudt in standaard-PDF-lezers die geen XFA-engine implementeren. De lettertypeselectie wordt in deze versie toegewezen aan de standaard-PDF-lettertypen; volledige lettertype-insluiting volgt later

Version 2.143.1

Added

  • De XFA-naar-AcroForm-afvlakking die ApplyXFAAsAcroForm uitvoert, converteert nu naast tekstvelden ook numerieke velden, datumvelden, selectievakjes, keuzerondjes, keuzelijsten en digitale handtekeningvelden. Elke XFA-<ui>-widget wordt toegewezen aan het dichtstbijzijnde native AcroForm-veld: numerieke en datuminvoer worden tekstvelden, een check button wordt een selectievakje (of een groep keuzerondjes wanneer deze zich in een exclusion group bevindt), en een keuzelijst wordt een vervolgkeuzelijst of, bij meervoudige selectie, een keuzelijstvak. Veldwaarden worden nog steeds eerst uit het form-pakket en daarna uit het datasets-pakket gehaald

Version 2.143.0

Added

  • De nieuwe methode ApplyXFAAsAcroForm zet een door de aanroeper aangeleverd XFA-formulier (XML Forms Architecture) om in native AcroForm-tekstvelden, zodat statische XFA-formulieren zichtbaar en invulbaar worden in moderne PDF-lezers die geen XFA-engine implementeren. Deze eerste release ondersteunt tekstvelden met waarden uit het form- of datasets-pakket; meer veldtypen, opmaak en afbeeldingen volgen. XFAFlattenWarnings rapporteert elk element dat niet kon worden omgezet

Version 2.142.1

Changed

  • De PAdES-Seed-Value-bijvoegheper weigert nu waarden die een latere ondertekenaar zouden dwingen het PAdES-profiel te schenden (ETSI EN 319 142-2 V1.2.1 搂4.2.6): de beperking /SubFilter moet adbe.pkcs7.detached of ETSI.CAdES.detached zijn, en de beperking /DigestMethod mag niet MD5, SHA1 of SHA-1 zijn. De producent werpt een heldere diagnose in plaats van stilzwijgend een profielschendend /SV-woordenboek uit te schrijven

Version 2.142.0

Added

  • De nieuwe methode AddXFASignaturePacket sluit een door de aanroeper gegenereerde XAdES-/XML-DSig-handtekening in als het XFA-signature-pakket binnen de AcroForm-/XFA-array (ISO 32000-1 搂12.7.8), voor ondertekende XFA-formulieren. HotPDF genereert of parseert de handtekening niet: de aanroeper maakt deze met een XML-cryptobibliotheek over de XFA-datasets, en HotPDF sluit deze in als FlateDecode-pakket. Dezelfde PDF/A- en PDF/X-weigeringen, de exclusiviteit van 茅茅n stream en de bescherming tegen dubbele pakketten als bij AddXFAPacket gelden

Version 2.141.2

Added

  • Nieuwe openbare API RegisterDefaultColorSpace(Which, ColorSpaceCS) registreert een ICCBased-kleurruimte (gemaakt met RegisterICCProfile) als de document-brede /DefaultGray-, /DefaultRGB- of /DefaultCMYK-mapping volgens ISO 32000-1 搂8.6.5.6 en PDF/A Competence Center TechNote 0002 搂1.3. Bij EndDoc loopt de helper door elke pagina en voegt een [/ICCBased <profile-stream>]-vermelding toe onder de overeenkomstige /DefaultX-sleutel in het Resources/ColorSpace-woordenboek van de pagina. Het aantal componenten wordt gevalideerd tegen de familie (DefaultGray 鈫?N=1, DefaultRGB 鈫?N=3, DefaultCMYK 鈫?N=4); een aanroep met een lege CSName wist de mapping; reeds bestaande paginaniveau /DefaultX-vermeldingen blijven behouden (overschrijvingen door de aanroeper winnen). Daarmee kan een document dat DeviceRGB- en DeviceCMYK-inhoud combineert, PDF/A-1 搂6.2.3.3 voldoen met elk afzonderlijk GTS_PDFA1 OutputIntent-profiel, omdat de 搂6.2.3.3 consistentiecontrole die in v2.141.1 is ge茂ntroduceerd het DeviceX-gebruik als geabsorbeerd beschouwt zodra de overeenkomstige Default-kleurruimte is geregistreerd

Version 2.141.1

Changed

  • PDF/A consistentiecontrole apparaat-kleurruimte 鈫?OutputIntent (ISO 19005-1 搂6.2.3.3 + PDF/A Competence Center TechNote 0002 搂4.1). EndDoc werpt nu een uitzondering wanneer een document DeviceRGB- en DeviceCMYK-inhoud combineert (茅茅n GTS_PDFA1 OutputIntent ICC-profiel kan niet aan beide kleurmodellen tegelijk voldoen) of wanneer DeviceCMYK-inhoud wordt gekoppeld aan een RGB OutputIntent-profiel en omgekeerd. Volgens TN0002 搂4.1 is DeviceGray-inhoud compatibel met OutputIntent-profielen van Gray, RGB of CMYK. Image XObjects worden gevolgd op basis van de kleurruimte die de producer daadwerkelijk uitgeeft (DeviceRGB voor JPEG en 24-bits Flate, DeviceGray voor CCITTFax); volgens TN0002 搂4.3 tellen de /C- en /IC-arrays van markup-annotaties als DeviceRGB. ICCBased / CalGray / CalRGB / Lab-kleurruimten zijn vrijgesteld van de controle

Added

  • Alleen-lezen eigenschappen UsedDeviceGray, UsedDeviceRGB en UsedDeviceCMYK op THotPDF tonen de lopende vlaggen voor apparaat-kleurruimtegebruik, zodat aanroepers de status van de consistentiecontrole v贸贸r EndDoc kunnen inspecteren

Version 2.141.0

Added

  • XFA-formulieren kunnen nu als 茅茅n enkele /XFA-stream worden uitgevoerd via de nieuwe methode SetXFADocument, die een volledig XFA/XDP-document in 茅茅n stream plaatst (ISO 32000-1 搂12.7.8), als alternatief voor de pakketsgewijze array-vorm van AddXFAPacket. De twee vormen sluiten elkaar uit
  • De nieuwe eigenschap XFANeedsRendering stelt de Catalog-vlag /NeedsRendering in (ISO 32000-1 搂7.7.2) zodat een viewer een dynamisch XFA-formulier opnieuw genereert wanneer het document voor het eerst wordt geopend. Ze staat standaard uit, waardoor niet-XFA-documenten byte-identiek blijven

Changed

  • De XFA-documentatie toont nu de vereiste xdp:xdp begin- en eind-wrapperpakketten voor de array-vorm van /XFA, zodat de pakketstreams samenvloeien tot een welgevormd XDP-document (ISO 32000-1 搂12.7.8)

Fixed

  • MIME-typen in de /Subtype van ingesloten bestanden worden nu als correcte PDF-namen geschreven, waarbij / wordt ge-escaped als #2f (bijvoorbeeld /application#2fxml) conform ISO 32000-1 搂7.3.5, zodat strikte lezers het mediatype correct parseren. Geldt voor AddPDFA3AssociatedFile en AddXAdESAssociatedFile
  • AddXAdESAssociatedFile weigert nu een lege XML-payload, omdat een XAdES-handtekeningstream niet leeg mag zijn

Version 2.140.5

Changed

  • Het PAdES-documenttijdstempelwoordenboek geeft nu het door de specificatie vereiste /Type /DocTimeStamp in plaats van /Type /Sig en laat de invoeren /M, /Reason, /Location en /ContactInfo weg die de norm aanduidt als 鈥瀖ogen niet aanwezig zijn", waardoor de conformiteit met ETSI EN 319 142-1 V1.2.1 搂5.4.3 verbetert
  • Het Signature VRI-subwoordenboek van de DSS verwijst nu naar dezelfde indirecte streams als de DSS-toplevelarrays Certs, CRLs en OCSPs, in plaats van dubbele streamobjecten te schrijven. Dit voldoet aan het invariant uit ETSI EN 319 142-1 V1.2.1 搂5.4.2.3 en aan de aanbeveling in 搂6.3 noot s) om duplicatie van certificaatwaarden te vermijden
  • De waarde /Extensions /ESIC /ExtensionLevel die in de Catalog wordt gedeclareerd, wordt nu automatisch verhoogd naar 2 wanneer een PAdES-baseline-handtekening met /SubFilter /ETSI.CAdES.detached wordt toegevoegd, aangezien vereiste l) van 搂6.3 in de norm wordt ge茂dentificeerd door Level 2; documenten die alleen DSS- of documenttijdstempelgegevens dragen, blijven Level 1 gebruiken

Added

  • Een PAdES-handtekening kan nu tussenliggende CA-certificaten samen met het ondertekenaarscertificaat meeleveren binnen CMS SignedData.certificates via de nieuwe optie AdditionalCertsDER, zodat een verifier een pad naar het vertrouwensanker kan opbouwen zonder externe lookup (ETSI EN 319 142-1 V1.2.1 搂6.3 noot b)

Fixed

  • PDF/A-conformiteit: de Unicode-TTF-subsetter geeft nu de /CIDSet-bitstroom op de fontbeschrijving van de afgeleide CIDFont uit wanneer PDFACompliance actief is. ISO 19005-1 搂6.3.5 / ISO 19005-2 搂6.2.11 / ISO 19005-3 搂6.2.11 vereisen dat gesubsetelde CIDFonts aangeven welke CIDs aanwezig zijn; zonder de stroom mislukt een strikte veraPDF-controle ook al zijn alle benodigde glyphs ingebed. De bitstroom is MSB-first volgens ISO 32000-1 搂9.7.4.2 (CID 0 in byte 0 bit 7) en wordt alleen in PDF/A-modus uitgevoerd, zodat niet-PDF/A-uitvoer byte-stabiel blijft

Version 2.140.4

Fixed

  • Bij het incrementeel opslaan van een geladen PDF wordt een verweesd versleutelingswoordenboek dat in de bron is achtergebleven (en waarnaar de trailer niet meer verwijst) nu in de toegevoegde kruisverwijzingssectie als vrij gemarkeerd, zodat lezers die de nieuwste revisie volgen het verdwaalde woordenboek niet meer zien. De oorspronkelijke bytes blijven intact en documenten zonder zo'n restant worden precies als voorheen geschreven; dit vult de opschoning bij volledig opslaan uit 2.140.3 aan

Version 2.140.3

Fixed

  • Bij het opslaan van een geladen PDF met AES-256 wordt een achtergebleven versleutelingswoordenboek niet meer uit het bronbestand meegekopieerd. Wanneer een brondocument een verweesd versleutelingswoordenboek behield waarnaar de trailer niet meer verwees, bevatte de uitvoer voorheen dat verdwaalde woordenboek naast het actieve; nu wordt alleen het versleutelingswoordenboek geschreven dat daadwerkelijk in gebruik is

Version 2.140.2

Added

  • Het ondertekende Adobe-attribuut voor intrekkingsinformatie binnen een PAdES-handtekening accepteert nu naast de gebruikelijke CRL- en OCSP-vermeldingen ook intrekkingsbewijs buiten X.509, zodat een sectorspecifiek intrekkingstoken dat door een eigen OID wordt ge茂dentificeerd, met de handtekening kan meereizen
  • Een PAdES-handtekening kan nu een CAdES content-hints-attribuut declareren dat beschrijft wat er is ondertekend; handig in workflows met meerdere handtekeningen waar een latere ondertekenaar het oorspronkelijke inhoudstype moet weten zonder het opnieuw te hoeven afleiden

Version 2.140.1

Fixed

  • Het versleutelen van een geladen document met AES-256 loopt niet meer vast wanneer de tekstreeksen ervan zijn genest in arrays of andere niet-indirecte containers; dergelijke reeksen worden nu correct versleuteld in plaats van eindeloos door te lussen
  • Het openen of ontsleutelen van een AES-256-document mislukt niet meer met een opvulfout wanneer het bestand een achtergebleven versleutelingswoordenboek uit de bron bevat; de ontsleutelaar slaat nu elk versleutelingswoordenboek over, zodat alle reeksinhoud correct wordt ontsleuteld

Version 2.140.0

Changed

  • AES-256-versleuteling en -ontsleuteling gebruiken nu de AES-NI-hardwareversnelling van de CPU indien beschikbaar, met anders een draagbare software-implementatie. Op een typische desktop-CPU stijgt de AES-256-CBC-doorvoer bij versleutelen van ongeveer 148 MB/s naar 442 MB/s (ongeveer 3× sneller) en bij ontsleutelen van ongeveer 147 MB/s naar 832 MB/s (ongeveer 5,7× sneller)
  • Het openen van een grote met een wachtwoord beveiligde PDF gebruikt nu aanzienlijk minder geheugen. De loader bewaart het volledige bronbestand niet langer in het geheugen tijdens het herstellen van de versleutelingssleutel en het ontsleutelen: AES-256-documenten halen wat ze nodig hebben uit het geparseerde objectmodel, en het oudere sleutelherstel leest nu alleen het einde van het bestand in plaats van het hele bestand. Voor een versleuteld document van meerdere gigabytes verdwijnt hiermee een tijdelijke geheugenpiek van ongeveer twee keer de bestandsgrootte

Version 2.139.3

Fixed

  • Herschrijven en opslaan via de Direct File API is nu drastisch sneller bij zeer grote documenten. Het opnieuw opslaan van een bestand van 60.000 pagina's / 883 MB na een wijziging van metadata of objecten daalde van ongeveer 189 seconden naar ongeveer 21 seconden, doordat de kopieerbuffer per object nu wordt hergebruikt in plaats van voor elk object opnieuw te worden gereserveerd. Hetzelfde bestand openen of kopi毛ren via de Direct File API blijft rond de 2-3 seconden

Version 2.139.2

Fixed

  • Bij het opnieuw opslaan van geladen PDF 1.5+-documenten met objectstreams en PDF 2.0-trailerdocumenten na BeginDoc-bewerkingen blijft de paginastructuur nu geldig. Eerder kon een paginadictionary die uit een objectstream was hersteld opnieuw worden gekoppeld zonder /Type /Page, waardoor lezers na EndDoc een niet-paginaobject in de paginastructuur meldden

Version 2.139.1

Fixed

  • Versleutelde documenten die AES-256 combineren met een cross-reference stream (optioneel naast gecomprimeerde objectstreams) heropenen en opslaan nu betrouwbaar opnieuw. Voorheen kon de loader, wanneer de data van een versleutelde stream toevallig begon met een newline-byte, die stream 茅茅n byte uit lijning lezen en het decryptieresultaat sporadisch beschadigen, waardoor een met wachtwoord beveiligd bestand soms niet kon worden geopend. De streamlezer volgt nu exact de datagrens en dergelijke documenten openen consistent

Version 2.139.0

Fixed

  • Documenten die een cross-reference stream samen met gecomprimeerde objectstreams gebruiken (PDF 1.5 en later) worden nu gelezen door een standaardconforme loader. Het heropenen en opnieuw opslaan van zo'n document houdt de paginastructuur intact en behoudt de oorspronkelijke objectnummers; de vorige loader kon de paginastructuur laten vallen of objecten hernummeren en pagina's verliezen in de opgeslagen kopie
  • Een stream waarvan de /Length is opgeslagen als indirecte referentie wordt nu correct opgelost terwijl een cross-reference-stream-document wordt geladen, zodat de inhoud niet langer verloren gaat

Version 2.138.0

Fixed

  • Documenten die een oudere PDF-headerversie verklaren, zoals %PDF-1.3 of %PDF-1.4, maar feitelijk een cross-reference stream gebruiken, worden nu correct geladen in plaats van te openen als een leeg document zonder pagina's. De routering wordt bepaald door de werkelijke cross-reference-structuur en niet door de gedeclareerde headerversie, zodat ook zeer grote bestanden van deze soort openen zoals verwacht

Version 2.137.9

Added

  • CSV-uitvoer voor preflight-rapporten is toegevoegd via pfCSV in CreatePreflightReport, SavePreflightReport en CreatePreflightReportWithProfile, met stabiele kolommen category,name,status,value,spec voor werkbladen en batchwerkstromen
  • De PreflightReport GUI en HotPDFPreflight CLI kunnen nu CSV-uitvoer selecteren; de CLI accepteert -f csv voor enkele-bestands- en map-runs

Version 2.137.8

Fixed

  • Het native AES-256 buffer decrypt-pad is versterkt zodat aanroepers het decryptieresultaat kunnen toewijzen aan dezelfde AnsiString die de cijfertekstbuffer leverde zonder de invoerpointer ongeldig te maken

Version 2.137.7

Added

  • One-based page-range string-ondersteuning is toegevoegd voor paginabewerkingen van loaded-document, inclusief HPDFParsePageRange, range-overloads voor InsertPagesFromDocument en ExtractPagesToFile, en AppendPagesFromDocument
  • OnPageOperationProgress is toegevoegd zodat append-, insert- en extract-werkstromen deterministische voortgang op paginaniveau kunnen rapporteren

Version 2.137.6

Added

  • THotPDF.DACopyFile is toegevoegd voor werkstromen met grote bestanden die alleen een paginaaantal en een originele byte-voor-byte opgeslagen kopie nodig hebben zonder de volledige normale objectgrafiek op te bouwen
  • De HugeFileBenchmark-demo bevat nu een direct-copy-rij, terwijl de standaard operatie-set nog steeds het volledige LoadFromFile + SaveLoadedDocument-pad dekt

Changed

  • Het geheugen kopi毛ren bij AES-256 stream-decryptie is verminderd door waar mogelijk vanuit bestaande buffers te decrypteren, inclusief geladen streamgeheugen voor grote versleutelde afbeeldingsstreams

Fixed

  • Het bestandsgebaseerde laden van versleutelde PDFs is verbeterd zodat wachtwoordopeningen de hele bron-PDF niet langer in de cache plaatsen alleen om ruwe waarden van het encryptiewoordenboek terug te halen

Version 2.137.5

Added

  • Direct File API object-source bewerking is toegevoegd voor werkstromen met grote bestanden: toepassingen kunnen een PDF openen met DAOpenFileReadOnly, het aantal objecten en de bronlichamen inspecteren, objectlichamen vervangen of toevoegen, de documentinformatie bijwerken en een volledig herschreven kopie opslaan
  • De HugeFileBenchmark-demo bevat nu een direct-rewrite-bewerking en documenteert HTML/CSV-benchmarkruns voor alleen-afbeelding en gemengde tekst/afbeelding enorme PDF's

Changed

  • Expanded Direct File API indexing to cover traditional xref tables and xref streams, including compressed object entries, so image-heavy PDFs and object-heavy PDFs can use the lightweight path
  • Optimized Direct File API full rewrites by copying unchanged direct objects in source-offset order and merging contiguous ranges, greatly reducing random I/O on PDFs with hundreds of thousands of objects

Version 2.137.4

Added

  • De GUI ondersteunt nu standaard text-, JSON- en HTML-rapporten, optionele wachtwoorden, profile INI files, ingebouwde presets, single-file PDF/VT validation, embedded-report PDF output, report preview, status logging, automatic output naming en snelle toegang tot gegenereerde bestanden

Changed

  • De Delphi-demo PreflightReport is uitgebreid van een console sample naar een interactieve VCL GUI tool voor single-file preflight workflows

Removed

  • Het oude startgedrag is verwijderd: zonder command-line arguments worden geen sample PDF en report meer automatisch aangemaakt

Version 2.137.3

Added

  • PDF/VT-validatie herkent nu XMP-eigenschappen die zijn geschreven als RDF-attributen evenals elementtekst, met dekking voor gangbare pdfvtid:GTS_PDFVTVersion-, pdfvtid:GTS_PDFVTModDate- en xmp:ModifyDate-pakketstijlen

Fixed

  • Delphi-regressiedekking is toegevoegd die detectie van PDF/VT-metadata in attribuutstijl gescheiden houdt van de overige structurele PDF/VT-controles

Version 2.137.2

Changed

  • Validatie van ingebedde preflight-rapporten is verbeterd zodat bron-PDFs die legitiem eindigen met een afsluitend regelteken na %%EOF blijven overeenkomen met hun opgeslagen vingerafdruk

Fixed

  • Preflight-profielen die als UTF-8 met BOM zijn opgeslagen, worden nu correct geladen wanneer de eerste regel een sectie-koptekst is
  • De decodering van PDF literal string escapes is versterkt, wat de wachtwoordvalidatie en niet-versleutelde kopie-uitvoer voor versleutelde PDFs met ge毛scapete owner- of user-vermeldingen verbetert

Version 2.137.1

Changed

  • De CFF-parser-veiligheid is uitgebreid naar directe byte-array-controles, waarbij de lezerpositie wordt hersteld na ongeldige invoer en verouderde layout-status wordt gewist bij mislukte controles

Fixed

  • De C++Builder-wrapper-compatibele CFF-streamloader is versterkt zodat nil-stream-invoer False retourneert en de wrapper-status reset in plaats van de stream te dereferenti毛ren

Version 2.137.0

Added

  • THotPDF.ValidatePDFVT is toegevoegd met wachtwoord-bewuste overloads voor gerichte PDF/VT-validatie. Het tekstrapport controleert de PDF/VT-claim in XMP, de metadata-namespace, het overeenkomen van de PDF/VT-wijzigingsdatum, de PDF/X-basismarkering, output intent, DPartRoot-structuur van de catalogus, laadbare pagina's en DPart-dekking op paginaniveau
  • De zelfstandige HotPDFPreflight-CLI accepteert nu --pdfvt om .pdfvt.txt-validatierapporten te schrijven voor een enkele PDF of een recursieve directoryscan

Version 2.136.8

Added

  • Extra smoke-dekking voor Type 1/CFF toegevoegd voor beschadigde CFF- en Type 1-stromen, inclusief behoud van de stroompositie en opruimen van achtergebleven metadata na mislukte parseraanroepen

Changed

  • De foutafhandeling van de Type 1 PFB- en CFF-parser is verbeterd zodat controles op beschadigde stromen de invoerpositie behouden en oude metadata wissen in plaats van een eerdere fontnaam zichtbaar te laten na een mislukte controle

Version 2.136.7

Changed

  • De smoke-test voor Type 1/CFF is uitgebreid met CFF-gegevens in geheugen, ASCII Type 1 fontgegevens, het laden van PFB-bestanden op wrapperniveau en het laden van CFF-stromen op wrapperniveau, om zowel de integratiepunten voor Delphi als C++Builder te beschermen

Fixed

  • De instappunten van de Type 1 PFB- en CFF-parser zijn aangescherpt zodat controles op basis van stromen de streampositie van de aanroeper behouden, beschadigde gegevens veilig weigeren en basisfontmetadata via de Delphi- en C++Builder-wrapperpaden beschikbaar maken

Version 2.136.6

Added

  • Toegevoegd: Delphi-demos voor Unicode CJK-tekstuitvoer, het genereren van grote meerpagina-documenten, PFX-ondertekening en uitgebreidere dekking voor beeldcompressie met CCITT Group 3 1D- en 2D-uitvoer

Version 2.136.5

Changed

  • Preflightrapporten gaan nu door wanneer een geladen paginainvoer geen MediaBox kan teruggeven. Het rapport markeert die pagina als niet beschikbaar in plaats van af te breken, zodat grote of inconsistente paginabomen nog steeds diagnostische uitvoer opleveren
  • Meerdere byte-niveau preflightscanners zijn geoptimaliseerd om herhaalde volledige kopieën van de staarttekenreeks en lineaire zoekacties naar dubbele objecten te vermijden. De voorbeeldcase met 10.000 pagina's binnen de implementatielimiet blijft nu binnen het stress-testbudget van 120 seconden
  • De preflight-stresstester gebruikt nu standaard een timeout van 120 seconden per bestand, en de PreflightReport-demo bouwt weer schoon na het profielbewuste uitvoerpad

Version 2.136.4

Added

  • Een preflight-cookbook, een gegenereerde preflight-API-kaart en een stress-testworkflow voor grote mappen zijn toegevoegd voor de opdrachtregeltool HotPDFPreflight. De stresstester isoleert elke PDF achter een timeout per bestand en legt JSON-, Markdown-, CSV-, rapport- en logbewijzen vast

Changed

  • Er is een basislijn met 1000 bestanden vastgelegd voor D:\PDFdoc\PDF-Samples: 997 geslaagd, 1 mislukt, 2 time-outs, 111.422 seconden verstreken, 8.975 bestanden per seconde

Fixed

  • Een probleem met volledige herbouw in de preflight-fingerprinthelper is opgelost door de helper te declareren vóórdat CreatePreflightReport hem gebruikt, zodat consolehulpmiddelen die HPDFDoc.pas uit broncode herbouwen netjes compileren

Version 2.136.3

Added

  • De zelfstandige CLI-tool HotPDFPreflight krijgt een optie --aggregate <file> die na afloop van de per-bestandsrapporten een batchesamenvatting schrijft die wordt geproduceerd door THotPDF.AggregatePreflightReports. De aggregatie vermeldt elke verwerkte PDF met status / grootte / waarschuwingsaantallen en totalen

Changed

  • Werkt met losse bestanden en recursieve mapdoorlopen, met of zonder --profile / --preset. De aggregatie wordt berekend op basis van de tekstinhoud van elk rapport, zodat filtering op profiel zichtbaar is in de samenvatting
  • Example: HotPDFPreflight C:\Archive -r --preset silent-actions -f json -o C:\Archive\reports --aggregate C:\Archive\Aggregate.txt schrijft JSON-rapporten voor elke PDF plus één batchesamenvatting

Version 2.136.2

Added

  • De zelfstandige CLI-tool HotPDFPreflight krijgt de opties --profile <file> en --preset <name> om elk rapport via een preflightprofiel te filteren vóór het wegschrijven ervan. Werkt samen met -f text|json|html, -p <password> en recursieve mapdoorlopen met -r

Changed

  • De twee nieuwe opties sluiten elkaar uit (als beide worden doorgegeven, wint de laatst opgegeven). De presetwaarden komen overeen met wat THotPDF.GetBuiltInPreflightProfile herkent, zodat CI-pijplijnen een canonieke configuratie kunnen ophalen zonder een INI-bestand klaar te zetten
  • Example: HotPDFPreflight C:\Archive -r --preset silent-actions -f json -o C:\Archive\reports schrijft JSON-rapporten voor elke PDF in de mappenboom met het preset silent-actions toegepast

Version 2.136.1

Added

  • De Delphi-demo PreflightReport accepteert nu profile=<file> of preset=<name> als extra CLI-argument om het rapport via een profiel te filteren vóór het wegschrijven ervan. Werkt naast de bestaande uitvoerformaatvlag json / html / embed

Changed

  • Examples: PreflightReport.exe Input.pdf Report.txt "" text profile=tuned.ini of preset=compact / preset=silent-actions
  • De presetwaarden volgen de namen die THotPDF.GetBuiltInPreflightProfile herkent, zodat de demo ook als testomgeving voor profielen fungeert zonder dat er een INI-bestand hoeft te worden gemaakt

Version 2.136.0

Added

  • Voegt THotPDF.MergePreflightProfiles toe voor het stapelen van profielen. Het resultaat is de gededupliceerde unie van beide invoeren (DisableChecks en DisableWarnings worden samengevoegd, DisableHints is een logische OR), nuttig om een preset zoals compact te combineren met projectspecifieke aanpassingen
  • Voegt THotPDF.DiffPreflightProfiles toe voor structurele vergelijking. Geeft True terug wanneer twee profielen gelijkwaardig zijn, anders vermelden de OnlyInA- en OnlyInB-uitparameters de uitsluitend aan elke kant aanwezige items als newline-gescheiden tokens check:<name> / warn:<name> / option:hints=false

Changed

  • De twee helpers maken de levenscyclus van profielen compleet: Load / GetBuiltIn / Save / Apply / Validate / Merge / Diff

Version 2.135.0

Added

  • Voegt THotPDF.CreatePreflightReportWithProfile toe, een alles-in-één gebruiksvriendelijke wrapper die CreatePreflightReport, LoadPreflightProfile, ApplyPreflightProfile en de formaatconverters in één aanroep samenbrengt
  • De nieuwe overload accepteert een bron-PDF, optioneel wachtwoord, optioneel profielbestand en doelopmaak (pfText, pfJSON of pfHTML) en geeft de uiteindelijke rapporttekst terug. Een leeg ProfileFile slaat de profielstap helemaal over, zodat aanroepers één aanroep kunnen blijven gebruiken, ongeacht of er een profiel is geconfigureerd

Changed

  • De vier onderliggende API's blijven beschikbaar, zodat bestaande aanroepketens ongewijzigd blijven werken; de nieuwe wrapper is puur aanvullend

Version 2.134.0

Added

  • Voegt THotPDF.SavePreflightProfile toe voor het wegschrijven van een THPDFPreflightProfile-record naar een INI-bestand. Het uitvoerformaat komt overeen met wat LoadPreflightProfile inleest, zodat de twee functies exact elkaars inverse zijn voor goed gevormde profielen

Changed

  • Maakt een workflow 'preset laden, aanpassen, opslaan' mogelijk: haal een ingebouwd preset op met GetBuiltInPreflightProfile (v2.133.0), wijzig de lijsten of vlaggen, en sla daarna het resultaat op met SavePreflightProfile voor later hergebruik of delen tussen projecten
  • Secties zonder inhoud worden weggelaten uit de uitvoer, zodat een leeg profiel één enkele commentaarregel oplevert in plaats van drie lege sectiekoppen