HotPDF 2.974.0 for Delphi and C++Builder

JSON jobs and the C ABI export loaded pages as semantic HTML, XHTML, XML, or JSON and typed tables as CSV, JSON, or XLSX, with selected-page processing, bounded output, cancellation, and source preservation

Demo selection guide · Delphi examples · C++Builder examples

Versioned invoice rule registries support explicit CII XML and hybrid-invoice validation with separate profile and country layers, including official XRechnung and French CTC resources through a host-configured Saxon engine

Native PDF generation, editing, signing, standards-aware output, font optimisation, and imaging for RAD Studio applications

HotPDF lets VCL applications create, modify, secure, sign, optimise, import, compress, and save PDF documents directly from Delphi or C++Builder code, without deploying an external PDF runtime

Project Overview

HotPDF is a source-level PDF component library for Delphi and C++Builder. It is built for desktop software that needs deterministic PDF output, direct page drawing, strong RAD Studio integration, and compact deployment

The component covers everyday PDF generation, advanced document assembly, PDF editing, image-heavy output, forms with duplicate field-name guards, annotations, creation-time AcroForm field wrappers, reusable action-builder chains for open actions, document lifecycle actions, page additional actions, annotation actions, annotation additional actions, AcroForm additional actions, encryption, signing workflows, font optimisation, and stream-based workflows from a single native API surface

The loaded-document toolkit adds page-range deletion, outline-aware and AcroForm-aware merging, multi-widget form constraint, geometry, visibility, rotation, border, and colour editing, complete annotation editing, automatic activation of bare web and email addresses, stateless next-match search, complete typed outline snapshots, Windows certificate-store signing, deterministic collated printing with paper capability discovery, full-page, bounded-region, and pixel-bounded Viewer snapshots, cache-aware adjacent-page prefetch, persistent page highlights, rotation-aware marquee selection, current-view printing, keyboard and wheel navigation, and VCL viewer components

Recent library releases expanded HotPDF from a classic PDF writer into a broader native PDF toolkit covering version-specific PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7 feature gating, native PDF 2.0 output, PDF/A-1 / -2 / -3 / -4 + PDF/X-1a / -3 / -4 + PDF/UA-1 / -2 standards conformance, PAdES baseline / extended / long-term-validation digital signatures, an in-process PFX / PKCS#12 signing pipeline with native RSA and ECDSA plus optional OpenSSL 3 Ed25519 and Ed448, credential-preserving Standard and public-key encrypted incremental updates with stable permanent IDs, rotating modification IDs, byte-exact source prefixes, and byte-exact no-op saves, CFF / OpenType / CID-keyed CFF font subsetting, and PDF export adapters for FastReport, QuickReport, ReportBuilder, and DevExpress ExpressPrinting that route their existing reports through HotPDF as a single PDF backend. A Direct File API processes multi-gigabyte, million-object PDFs file-to-file - page counts, copies, document-information rewrites, and AES-256 encryption or decryption - in seconds, while the bounded recovery loader can relocate a valid xref section or rebuild direct-object offsets after damaged startxref and xref data without trusting nested object-like text or binary data, and publishes byte-ranged recovery events with explicit confidence levels

The opt-in LinearizeOutput writer adds fast web view output with a first-page dependency section, shared-object grouping, primary page and shared-object hint tables, and an early compatibility cross-reference table while retaining direct file and stream destinations

Loaded stream filters run through a reusable pipeline whose final stage writes directly to caller-owned streams and whose intermediate stages spill through independently compressed blocks and a bounded asynchronous batch queue, with strict ASCII85 and ASCIIHex end markers, independent per-chain and document-wide decoded-byte ceilings, filter-count and pipeline-depth limits, indirect-reference cycle detection, same-stream recursion rejection, and structured diagnostics for every success or failure

Predictor encoding now exposes strict reusable TIFF and fixed or adaptive PNG paths for packed, 8-bit, and 16-bit rasters; loaded images can copy native or generically decoded payloads directly to caller streams, while selective optimisation uses memory-to-disk spill buffers, a deterministic four-strategy zlib baseline followed by budgeted Zopfli block splitting, and bounded parallel image jobs that commit only smaller payloads in source order

Loaded JPEG and JPEG 2000 recompression can run bounded quality trials and select a deterministic output by jointly scoring sampled perceptual error and relative encoded byte cost, subject to explicit visual-error and minimum-savings limits

Large local documents use bounded windowed memory mapping with a shared LRU cache for parser reads and immutable lazy stream ranges, while mapping thresholds and window geometry remain configurable and failures fall back automatically; raw compressed ranges, decoded images, compiled display lists, and rendered raster pages have independent entry-count, total-byte, and per-entry admission limits, combine recency with aging fixed-memory frequency admission to resist scan pollution, and expose occupancy, traffic, and frequency statistics; a fair process-wide peak-memory scheduler delays competing document loads, renders, stream optimisation, and parallel image optimisation before their main working sets overlap, while preserving cancellation and reporting admission pressure; unencrypted stream serialisation and caller-directed transfers write memory, mapped-file, lazy-file, adaptive-cache, and range-cache bytes without an intermediate full-stream copy; short-lived parser tokens and buffers use a retained block arena across loads, simple dictionaries and arrays scan immutable spans with direct numeric conversion and single-pass nesting, configurable byte, aggregate-token, container-entry, and malformed-token budgets stop hostile input with typed telemetry, dictionary keys no longer require temporary name objects, and repeated names, content operators, and immutable short strings share a bounded document-scoped pool; modified loaded streams use LoadedStreamMemoryThreshold to select memory or an owned compressed temporary stream whose raw and compressed blocks share a bounded asynchronous write queue; object-stream members are indexed by object number and parsed only when referenced, while LoadFromRandomAccessSource connects HTTP range readers and custom storage, coalesces adjacent reads through a bounded cache, adaptively grows asynchronous read-ahead during sustained forward parsing, suppresses speculative transport after random jumps, cooperatively cancels in-flight work for foreground seeks, recovers password keys from bounded trailer, xref, document-ID, and encryption-dictionary ranges without requesting the complete source, captures exact binary security-handler entries from the authoritative object offset so delayed decryption needs no source reread, exposes the first linearised page from its self-contained prefix, and plans bounded minimal bootstrap, hint, page, shared-object, and cross-reference ranges for any later page while accepting legal short reads and both interoperable and Annex F hint layouts under strict memory and structure limits

Mapped local files now adapt within the configured byte cap: sustained forward reads use larger views to reduce remapping, sustained distant or backward reads retain up to 16 smaller MRU views, mode changes require repeated evidence, and THPDFMappedFileStatistics reports active geometry, peak mapped bytes, access-pattern counts, and transitions

HotPDFABI.dll exposes a versioned flat C ABI with layout-checked Win32 and Win64 callback structures, validated opaque handles, fixed status codes, 64-bit random-access reads directly into parser buffers, retryable streamed writes, explicit byte lengths, cancellation, progress, and diagnostics; build-HotPDF-ABI.cmd produces the DLL and import library for each platform

JSON and C ABI document operations share capability discovery, rendering, Unicode text and forms, OCR layers, redaction, PFX signing, and bounded PDF/A-4 raster archival conversion through a versioned schema, resource budgets, callback rollback, and atomic file output; archival requests explicitly accept information loss and preserve their loaded source

Windows and Linux typed JSON rich-text runs accept explicit normal, numeric, point, percentage and em line heights with bounded computed metrics, supplied parent font admission and transactional saved appearances; Linux rejects rich runs on non-text fields and preserves exact source bytes for unchanged rich-only fills

Native rich text and imported inline CSS preserve explicit line height, inherited factors, computed lengths and parent font metrics across wrapped lines, saved appearances and read-only fields; native records, Windows file jobs and callbacks, and Linux FDF/XFDF JSON imports share bounded font admission and cancellation-safe planning

Legacy XFA text, numeric, date and password fields create real Unicode font appearances with effective instance styles, editable font resources and cancellation-safe adoption; password appearances count supplementary characters as single Unicode scalars

Native sampled colour functions support bounded multidimensional cubic interpolation with the existing four-knot convention, short-dimension linear fallback, packed samples and cancellation across tint and shading evaluation

Native Cairo JPEG 2000 rendering accepts signed and unsigned source precision through 26 bits, mixed component depths, subsampling and opacity, and honours JPX image declaration semantics through Windows and Linux native APIs

Free Pascal builds need FPC 3.3.1 or later on every platform; current acceptance records the actual compiler build, and existing results from older compilers remain historical evidence

FPC native backends provide TIFF, JPEG/JPX, ICC, JBIG2, and Zopfli through a validated Windows codec bridge, together with actual parallel page, ordered-page, tile, band, and JPEG 2000 tile rendering

Deterministic differential regression probes compare named engines across parse, render, text, and save domains, repeat each result to detect instability, isolate exceptions, enforce input and output bounds, provide built-in SHA-256 HotPDF fingerprints, and emit the ordered hotpdf.differential.v1 JSON schema

The native statistical performance regression harness isolates Win32 and Win64 load, save, render, and extraction workloads, records warmups plus 30 raw samples with p50, p95, sample variance, RSS, process I/O, deterministic fixture identity, and environment metadata, and fails against versioned JSON thresholds

Continuous malformed-PDF corpus storage revalidates and re-minimises every failure case under configurable bounds, keeps the smallest signature-equivalent input across runs, serialises competing writers with a process-safe lock, and atomically publishes SHA-256-addressed PDF and hotpdf.corpus.case.v1 metadata files

Unified operation telemetry separates scheduler reservation and queue delay, wall time from current-thread CPU time, portable component-retained memory from sampled process working set, and encoded input from final decoded output, while also reporting peak additional live allocations, process I/O byte deltas, cache activity, aggregate filter work, and decode expansion

Bounded deterministic replay logs capture cancellation checkpoints, random-access range availability, and boolean or integer callback outcomes in an ordered JSON schema; strict replay validates every event signature and substitutes recorded decisions so intermittent external timing and callback behaviour can be reproduced without changing document operations

Revision-aware loading now validates xref free lists and generation transitions while retaining bounded details for duplicate and shadowed object definitions; destructive incremental edits merge existing and newly freed objects into a complete deterministic free chain, advance generations with saturation, preserve dirty-object generations, and expose rebuild statistics; explicit clean, dirty, released, and must-write object states support low-memory post-save object-stream cache release, while deterministic dictionary order, streaming versioned object graph JSON snapshots and incremental updates, editable QDF diagnostic output with bounded stream-length and xref repair, bounded dependency edges, and dominator-based retained-memory attribution make structural inspection reproducible

Searchable OCR text layers connect an application-selected recogniser to bounded page rendering, validate confidence, Unicode and pixel geometry, invert page rotation for aligned invisible text, optionally bind output to one OCG, and commit every selected page through one graph transaction; marked HotPDF OCR layers can be replaced safely after saving and reloading, adjacent Latin and Cyrillic words gain explicit Unicode spaces, and the SearchableOCR console example generates scan samples and converts selected pages with built-in OCR, RapidOCR, or Tesseract DLL/CLI engines, configurable limits, and conversion statistics

Scan preprocessing and structured OCR adds evidence-based page orientation, continuous-angle deskew, border/shadow cleanup, explicit perspective rectification, reversible raster/page geometry, and semantic text/DOM output through an application-selected OCR engine

The built-in OCR engine recognises regular, bold, italic, and bold italic ASCII text, including faded lettering and light text on a predominantly dark page; words with uncertain retained glyphs are omitted as a whole to prevent silently dropping characters, blank or unrecognised pages complete successfully, and Windows FPC preserves 24-bit and 32-bit input pixels

The optional native Tesseract DLL adapter provides configurable page segmentation and engine modes, multilingual Unicode recognition, confidence, word bounds, and baselines through HPDFCreateTesseractDLLOCREngine in Delphi, C++Builder, and Windows FPC/Lazarus builds

The local Tesseract CLI adapter also accepts THPDFTesseractOptions for single-line, single-word, sparse-text, and vertical-block layouts, with explicit engine mode, timeout, and input pixel limits; the native DLL adapter uses baseline direction to keep vertical word lengths from inflating the searchable text size

The RapidOCR local model adapter adds explicit ONNX model paths, optional angle classification, local dictionaries and fonts, CPU thread controls, offline preflight, exact recognised line spacing, and bounded Unicode recognition through THPDFRapidOCROptions in Delphi, C++Builder, and Windows FPC/Lazarus builds

The native RapidOCR DLL adapter keeps CPU ONNX models in process and recognises memory snapshots through HPDFCreateRapidOCRDLLOCREngine, with THPDFRapidOCRDLLOptions.ForLanguage presets for Simplified and Traditional Chinese, English, Japanese, Korean, Russian, common Latin languages, Arabic, and Hindi, verified local model packages, horizontal reading order, optional angle classification, Unicode text, bounded output, and cooperative cancellation in Delphi, C++Builder, and Windows FPC/Lazarus builds

Optional local Tesseract and RapidOCR adapters provide cancellable Chinese OCR with explicit executable and model paths; JSON and C ABI OCR jobs expose the CLI and DLL adapters through explicit engine settings and bounded searchable-PDF output; the built-in engine remains the default, and external engines, Python packages, models, and RapidOCR's local Arial prerequisite must be provisioned separately

OCR validates local TSV encoding and native detection tensor contracts before using results, counts discarded words against cross-page recognition limits, and stops atomically when the remaining budget cannot cover another eligible page

SetLoadedFreeTextPlainText explicitly replaces a supported loaded FreeText annotation's appearance with left-aligned ASCII Helvetica text for rewrite or incremental saving, whilst SetLoadedAnnotationContents changes only its stored contents

SetLoadedFreeTextText rebuilds loaded Unicode and rich FreeText appearances with embedded fonts, wrapping, alignment, opacity, rotation, and atomic overflow handling; SetLoadedFreeTextRichText now updates both visible appearance and stored content

Loaded-page barcode decoding renders a complete page or media-box-contained region in progressive bounded slices, lends each original or quarter-turn raster to an application-selected decoder, validates Unicode, raw bytes, confidence and bounds, reverses raster and page rotations into PDF user space, and deduplicates overlapping payloads

Review-first redaction detection combines checksum-aware built-in PII patterns with application-selected entity and face detectors, maps every accepted span or raster rectangle into PDF page space, starts every finding as pending, and atomically stages only findings carrying both explicit approval and reviewer identity without burning in content

Loaded-page colour rewrite converts selected paint to DeviceGray, DeviceRGB, or DeviceCMYK, retains ordinary device-colour text and paths as searchable vectors, renders images, Forms, patterns, shadings, transparency, ICC, and Type 3 colour through one lossless process image when required, preserves spot-bearing pages by default, and commits the complete bounded batch atomically

Structured loaded-page export writes selected pages as UTF-8 HTML, XHTML, XML, or JSON from one accessible reading model, preferring tagged order and retaining document language and title, headings, lists, tables, figures, alternatives, outlines, page labels, safe links, annotations, and non-sensitive form controls under atomic cancellation and byte budgets

Typed table extraction converts detected table geometry into a public canonical grid, joins compatible fragments and adjacent pages, marks repeated headers and merged column spans, infers locale-controlled integer, number, boolean, date, date-time, currency, and percentage values with confidence, and writes bounded CSV or metadata-rich JSON atomically

Optional document handlers recognise XPS, EPUB, and CBZ from inspected content, preserve fixed-page, spine, or natural image order, convert XPS abbreviated paths and property-element solid, multi-stop linear, or elliptical radial gradient brushes to native PDF vectors and shading patterns, fill paths from cached package JPEG, PNG, TIFF, or JPEG XR ImageBrush resources with bounded viewbox and viewport mapping, brush-local transforms, native repeated or reflected image patterns, and PNG soft-mask alpha, apply solid, gradient, or image Path.OpacityMask values through folded alpha or shared DeviceGray transparency groups, composite overlapping Canvas descendants once through isolated DeviceRGB groups for Opacity and Canvas.OpacityMask, compile inline or resource-backed XPS VisualBrush trees into reusable Form XObjects and bounded tiling patterns, map bounded transformed and structured Canvas.Clip geometry to nested native PDF clipping paths, preserve bounded XPS Glyphs clusters, exact package font programs and glyph IDs, explicit advances, offsets, RTL origins, opacity, resource reuse, Unicode extraction, transformed HTTP, HTTPS, mail, package-page, and LinkTarget navigation through clipped native PDF annotations, inherit Canvas-scoped navigation through descendant visuals with nested overrides, emit positioned TJ runs, enforce shared archive, resource, reflow, page, link, URI, geometry, group-content, pixel, output, and cancellation budgets, and reuse one immutable PDF cache for atomic export and rendering

CSC remote signing connects the existing CMS provider pipeline to CSC API v2 services through an application-owned HTTP transport, with OAuth refresh, credential-chain discovery, exact hash-pinned SAD handling, bounded ordered multisign batches, synchronous or asynchronous signing, bounded polling, RFC 3161 timestamps, cancellation, SHA-256 content-addressed idempotency keys, and a finite completed-operation cache

Nested copy-on-write object graph transactions snapshot each touched indirect root once per savepoint, preserve root addresses during rollback, restore object-number allocation, remove appended roots, spill large stream history beyond a configurable threshold, and expose resident and file-backed snapshot statistics

Reusable layout elements support side-effect-free measurement, verified split heads, and owned overflow continuations for paragraphs, rows, containers, and custom content; declarative page callbacks compose backgrounds, headers, document content, footers, and foregrounds in stable order, while unbounded reports retain file-backed page staging, paragraph constraints, bounded diagnostics, semantic helpers, and bidi direction control

Loaded-page rendering executes coloured and uncoloured tiling patterns plus axial, radial, free-form and lattice Gouraud, Coons patch, and tensor-product patch shadings for fills and strokes, honours pattern matrices in the parent content default coordinate system, supports all three tiling types and signed steps, isolates each cell path, applies uncoloured base tints to fill and stroke operations, and bounds recursive pattern depth, tile execution, mesh decoding, and adaptive tessellation for hostile resources

Production bitmap, direct-DC, Form and display-list replay now share one content-token interpreter with per-operator cancellation; compiled display lists cache operator indexes for operand-scan-free replay and expose the command count through THPDFPageDisplayList.OperatorCount and THPDFDisplayListInfo.OperatorCount, while the renderer retains its complete graphics and resource state machine

Isolated and knockout transparency groups render through bounded 768-pixel tiles with absolute device-coordinate continuity, tile-local alpha and soft-mask storage, single-pass Form decoding and tokenisation, deterministic nested-group state restoration, and peak working-set statistics available through GetLastTransparencyGroupTileStats

Opt-in overprint proofing preserves process plates that a paint does not name, applies /OPM 1 zero-component protection for DeviceCMYK, treats DeviceGray as the black process plate, and combines Separation and DeviceN spot tints through their alternate colour transforms

Repeated Type 3 glyphs reuse bounded CharProc display lists keyed by font, glyph, linear matrix, and colour state, avoiding repeated stream decoding and tokenisation while preserving translation, clipping, nested resources, d0/d1 colour rules, and recursion limits

Progressive loaded-page sessions decode eligible progressive DCTDecode images one scan per bounded continuation for earlier visible previews, expose scan and image counters through THPDFLoadedPageRenderSession, and provide cancellable THPDFProgressiveJPEGScanEvent notifications while retaining the complete-image fallback for unsupported paint state or decoding failures

Progressive region sessions allocate only the requested user-space window, retain graphics and text state across bounded continuations, use conservative display-list bounds to cull unrelated paths, text, images, Forms, and shadings, and expose visible and culled paint counts for telemetry

JPEG 2000 decoding validates individual codestream tiles, combines source-region and resolution-of-interest reconstruction, and concurrently decodes independent visible tiles with private codec state, cancellation, CPU and user worker limits, deterministic composition, and automatic peak-memory budget fallback

Loaded-image cache hits now return immutable reference-counted decoded bitmap handles that survive eviction and document destruction, support thread-safe direct drawing, preserve isolated mutable copies on demand, and eliminate repeated pixel copies from renderer warm paths

Parallel loaded-page rendering now overlaps display-list compilation with playback across dynamically balanced workers, compiles unrelated pages outside the cache lock, begins output before the full input set is compiled, preserves input order, and reports stage concurrency, cache use, completion, and latency telemetry through THPDFParallelRenderPipelineInfo; RenderLoadedPagesParallelOrdered adds calling-thread callbacks with a bounded completed-bitmap queue, ordered-window backpressure, cooperative callback cancellation, and borrowed bitmap lifetimes for jobs whose complete raster output must not remain resident

Both parallel page APIs now use the process-wide peak-memory scheduler to reduce requested workers from conservative page estimates, reserve every claimed page, delay work fairly under pressure, and report memory-derived concurrency, peak reserved bytes, admissions, delays, and wait time; ordered callbacks keep output reservations active until bitmap release so queued rasters and active workers share one budget

RenderLoadedPageTilesParallel and RenderLoadedPageBandsParallel stream one page through isolated workers with row-major tile or top-to-bottom band delivery, borrowed bitmap lifetimes, cooperative cancellation, caller-controlled in-flight memory, and a bounded immutable cache for Type 3 glyph token sequences and halftone threshold screens

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded, and SaveLoadedPagesToTiffStreamBanded feed the same band renderer into streaming PNG or TIFF encoders, emitting compressed rows without a complete framebuffer and reporting band, row, worker, memory, output, timing, and cancellation telemetry

Pluggable loaded-page render backends receive compiled display lists and document resource access, advertise concurrency and colour-management capabilities, participate in synchronous and parallel rendering, invalidate stale raster caches when replaced, and expose deterministic failure, fallback, and execution statistics; the built-in native GDI backend preserves existing output without claiming device acceleration

Loaded-page prefetch now compiles and renders outside the cache lock with cooperative cancellation checkpoints, yields immediately to foreground page rendering, and reports request progress, cache use, failures, preemption counts, and cancellation latency through THPDFLoadedPagePrefetchInfo

Foreground cached renders acquire their normal memory reservation before overlapping an existing bitmap copy with prefetch cancellation, retain strict miss ordering and accurate operation telemetry, and recheck cancellation after waiting for a reservation or cache lock

JBIG2 segment-graph validation now checks both image and global streams before native or external decoding, rejects malformed dependencies and invalid embedded organisation within explicit segment, edge, depth, and symbol budgets, and prevents invalid shared dictionaries from entering the globals cache

JBIG2 batch encoding now trains symbols across the complete page set through the external static backend, shares one global dictionary across every image XObject, collapses exact duplicate pages, falls back to the native accumulator when allowed, and publishes backend, size, symbol, and budget telemetry

ICC-based vector and image rendering applies complete source, proof, output and sRGB colour pipelines with selectable rendering intent and black-point compensation, while a thread-safe bounded LRU cache reuses transforms across document and renderer instances

Loaded-image recompression and effective-DPI downsampling retain calibrated output definitions, while transparency flattening emits calibrated RGB and preserves Separation or DeviceN pages as vector content instead of discarding spot-colour identity

Loaded AcroForm calculation and validation actions can use a bounded typed expression subset with booleans, numbers, strings, null, undefined, arrays, conditional and short-circuit operators, deterministic UTC dates, and allowlisted string, array, conversion, and Math helpers, while unsupported active scripting fails closed without starting a JavaScript engine

The optional QuickJS runtime bindings execute broader application-controlled JavaScript through either static objects or an ABI-neutral bridge DLL on Win32 and Win64, with configurable memory, stack, script, time, and interrupt limits plus explicit status and recovery semantics

XFA form scripting extends bounded FormCalc with conditional logic, repeated numeric arrays, and validated instance callbacks, while an explicitly enabled QuickJS sandbox adds full control flow and native typed arrays without exposing file, process, browser, or network objects; the interactive dynamic XFA runtime adds host-neutral focus, Unicode editing, hit testing, instance-aware validation and calculation, atomic rollback, and bounded reflow without flattening

Native XFA list selection windows use actual embedded-font line metrics to keep selected options visible, save the top index with complete option and value arrays, and preserve repeated-instance font changes and event rollback with bounded visible glyph preparation

SanitiseLoadedDocument applies JavaScript-only, active-content, or strict untrusted-document policies to loaded PDFs, removes unreachable payload objects, compacts live object numbers, and safely rewrites in place through atomic file replacement

Preflight JSON, HTML, and veraPDF-style findings expose stable namespaced rule identifiers and structured PDF locations with logical scope, path, key, and exact object, page, or byte coordinates when available, while text and CSV compatibility remains unchanged

Reusable validation policies now combine structural preflight with strict or WTPDF intake requirements, extract canonical declaration and claim metadata, run ordered file batches through bounded worker and queue limits, preserve source-aware errors, and offer inspect, add-missing, and synchronise modes for XMP repair independently of structural PDF repair

Factur-X and ZUGFeRD intake now cross-checks the primary invoice attachment MIME type and FileSpec names against the EmbeddedFiles and Catalogue AF registrations, exposes the decoded MIME type and XMP namespace URI, and rejects mismatched XMP document types or extension namespaces

Built-in e-invoice business-rule validation executes all profile-specific Schematron checks with reviewed XPath 2 compatibility, external code databases, stable rule identifiers, explicit evaluation errors, secure XML parsing, and fail-closed combined verdicts

Incremental signing jobs retain previous signatures and fill existing fields through PFX credentials, while two-document comparison jobs expose six comparison modes and two-sided contract JSON, HTML and annotated-PDF artefacts through versioned JSON and the unchanged ABI v1 layouts

Native Unicode AcroForm appearances fill supported single-line fields with genuine embedded TrueType, exact glyph widths, CID-to-glyph mapping and supplementary ToUnicode, update every widget transactionally, preserve AES security, and render consistently before and after atomic saving

The versioned native Linux C ABI delivers actual text, form, PNG and encrypted signing operations through bounded callbacks; real C and Python clients run on Ubuntu 24.04, Ubuntu 26.04 and Debian 12, including concurrent handle use, cancellation and failure rollback

Native Linux PDF-to-PNG rendering uses Cairo/FreeType CPU surfaces and shared bounded content interpretation for paths, text, images, Forms and existing annotation appearances, with canonical standard-font advances, cooperative cancellation, source protection and atomic PNG publication

Native headless PDF signing fills an existing unsigned signature field, preserves the original revision and AES-256 security, verifies the resulting CMS/CAdES against the exact file bytes, and atomically publishes a genuine incrementally signed PDF from explicit PEM credentials

Native headless CMS streams shared ByteRange segments through OpenSSL 3, verifies existing PDF signature revisions, generates detached CMS/CAdES from explicit PEM credentials, and distinguishes integrity from explicit CA trust

Native headless AES-256 security opens R5/R6 documents with user or owner passwords, authenticates encrypted permissions, decrypts compressed objects and content, and publishes encrypted incremental form values while preserving the original source prefix on Linux and Windows

Dynamic XFA instance presentation supports bounded conditional events, explicit repeated data binding, independent presence and access, stable persisted identities, host canvas painting and accessibility records; this helper interprets its own form packet extension, which external XFA readers do not automatically apply

Bounded paragraph editing reflows selected text across baselines and supported shared Form invocations with explicit font and rectangle controls, conservative collision reports, sealed preview, commit and rollback; repeated saves retain the serialised edited graph

Version 2.825.0: Sign encrypted documents through Windows JSON and C ABI jobs while preserving the original revisions, AES security settings, document IDs and signature permissions

Version 2.826.0: Read and write Unicode array-valued choice selections, maintain sorted option indices and generate matching appearances for visible and scrolled list-box selections

Version 2.827.0: Execute locale-aware XFA date, time, numeric and text pictures with embedded locale sets, bounded transactional locale queries and protected JavaScript IEEE arithmetic

Version 2.828.0: Render four-component CMYK and ICC transparency groups and page groups with all blend modes, nested knockout geometry and shared colour-profile budgets

Version 2.829.0: Import native page resource graphs and transformed annotation appearances into plain or encrypted documents and convert compatible inputs to searchable text and vector PDF/A-4 with genuine validation before atomic publication

Version 2.830.0: Execute advanced XFA numeric, calendar, text and compound picture clauses through real form events, preserving input precision, locale semantics and transactional script replay

Version 2.831.0: Apply signing seed, lock and read-only constraints consistently to encoded PDF names, reject semantic duplicate keys and validate inherited policy dictionaries

Version 2.832.0: Sign through the native Linux callback ABI with PEM or bounded PFX identities, new Unicode appearance fields and certification, and retain the prepared signed document as the current context after successful publication

Version 2.833.0: Render vertical Identity-V and Unicode predefined CMaps with real W2/DW2 origins, matrices, text movement and clipping, and correctly decode embedded Encoding CMap streams

Version 2.834.0: Validate CAdES signing-certificate identifiers against the actual signer independently of optional certificate trust, and resolve embedded Encoding CMap streams through the native font adapter

Version 2.835.0: Execute transactional XFA host state, page and lifecycle flags, per-instance focus changes, pending-edit validation and reset operations with stable identity and lexical-state replay

Version 2.836.0: Provide synchronous RFC 3161 timestamp transport through a compatible extended native signing operation record, with bounded responses, shared cancellation and explicit TSA trust and revocation validation

Version 2.837.0: Generate embedded Unicode appearances through native Linux JSON form filling for text, choice and multiselect fields, checkbox and radio states, and push-button captions, retaining transactional publication and encryption

Version 2.838.0: Execute runtime-generated FormCalc Eval programs with isolated calculation scopes, nested evaluation, Unicode source, bounded compilation retries and transactional host response replay

Version 2.839.0: Implement FormCalc value copying and stable node references with assignment-through-reference, rebinding and null detachment, numeric identity equality, retained handles and transactional rollback

Version 2.840.0: Render calibrated CalGray, CalRGB and Lab source colours, calibrated group and page blending, Indexed bases, 16-bit image samples and XYZ luminance soft masks with bounded conversion and safe gamma evaluation

Version 2.841.0: Authenticate original CMS and CAdES revisions before native form updates, enforce original DocMDP and FieldMDP permissions and locked fields, preserve signed content and resources, and synchronise push-button caption metadata atomically

Version 2.842.0: Provide native two-document C ABI and Pascal semantic contract comparison through a shared portable core, with source glyph geometry, encrypted and nested-content inputs, prepared JSON or HTML review output and stable concurrent lock ordering

Version 2.843.0: Resolve dynamic XFA SOM paths with inferred and relative occurrences, scoped predicates, class and descendant selectors, wildcard collections and transactional script-object property assignments

Version 2.844.0: Render Separation and DeviceN alternate tints with bounded vector functions, packed images and CMYK group blending, preserve None knockout geometry and map All registration colours consistently

Version 2.845.0: Emit authenticated FieldMDP references from existing or inherited signature field locks, preserve encrypted Unicode field names and certification references, and apply lock permission levels without weakening original signed policies

Version 2.846.0: Expose native XFA datasets and data nodes with bidirectional form bindings, dynamic instance data mirroring, stable retained references, independent unbound form values and transactional script replay

Version 2.847.0: Enforce inherited native signature seed and certificate constraints with real issuer chains, subject and key usage policies, selectable CMS digests, encrypted Unicode signature metadata and locked-document transforms

Version 2.848.0: Resolve complete XFA descendant path suffixes within each wildcard context, preserve local occurrence boundaries and execute predicates in the current event scope with exact transactional rollback

Version 2.849.0: Render embedded simple Type1 and Type1C fonts with exact declared or built-in Adobe glyph encodings, keep ToUnicode extraction separate from displayed outlines, and accept validated neutral stroke-adjustment and relative colorimetric graphics state

Version 2.850.0: Convert compatible missing-font documents to searchable text and vector PDF/A-4 with explicit bounded Ghostscript font embedding, genuine veraPDF validation and atomic publication, and select native Unicode TrueType fonts consistently across distributions

Version 2.851.0: Render physical Lab ICC source colours and bounded XYZ compatibility inputs in paths, text, packed images and Indexed palettes, preserve calibrated and ICC alternate tints through RGB or CMYK groups, and apply embedded JPX profiles with separate or associated alpha

Version 2.852.0: Write authenticated Unicode legal attestations in certification signatures, honour certification-only Legal seed requirements, preserve existing legal statistics and catalogue permissions, and retain encrypted string policies

Version 2.853.0: Embed genuine Adobe revocation evidence as authenticated CMS signed attributes, validate complete certificate and timestamp chains against explicit trust and current CRL or OCSP evidence before publication, and enforce required signature seed revocation embedding

Version 2.854.0: Expose native XFA property and attribute objects with persistent per-instance form bindings, synchronised value/data writes and actual font, border, paragraph and UI layout effects, preserving transactional rollback and scriptless focus budgets

Version 2.855.0: Apply native XFA property schema defaults and preserve explicit empty values, per-instance styles and fractional point font, border and draw measurements through actual AcroForm and flattened PDF output

Version 2.856.0: Select actual native signature appearance presets by registered profile name, generate distinct approval, certification and compact layouts, preserve authenticated profile metadata and encrypted policies, and reject unknown profiles before publication

Version 2.857.0: Compare native documents by page and object counts, Unicode text, normalised structural graphs and actual rendered RGB or luminance pixels, with semantic stream equivalence, authenticated encrypted inputs and bounded preparation before callback publication

Version 2.858.0: Decode escaped PDF font, encoding, glyph, colour and resource names exactly once in native rendering and shared text extraction, preserve literal hash resource keys and keep equivalent names aligned with actual outlines and glyph metrics

Version 2.859.0: Apply live per-instance XFA font, paragraph and scalar body overrides to actual rich text drawing and measurement, preserve inline CSS precedence and explicit empty content through native XDP persistence, and retain exact transactional rollback

Version 2.860.0: Bind native Linux signing and verification options to actual digest selection, Unicode signature metadata, named appearance profiles, explicit trust bytes, timestamp transport identity and authenticated revocation evidence, with bounded private preparation before publication

Version 2.861.0: Export actual native annotated contract review PDFs and explicit Unicode highlights with visible normal appearances, preserving source content and incremental signature revisions, enforcing authenticated P3 annotation permissions and encrypted user rights, and preparing bounded outputs before callback publication

Version 2.862.0: Render actual native function, axial and radial PDF shadings with bounded geometry and function evaluation, inherited clipping, Domain, Matrix, Extend and BBox semantics, calibrated and special colours, transparency, soft masks, blending and knockout groups

Version 2.863.0: Honour valid inherited Windows signature seed and certificate constraints with actual digest and CAdES selection, Unicode signature information, normalised indirect field locks, authenticated historical lock permissions, permitted second signatures and encrypted form policies

Version 2.864.0: Preserve the original barcode scan deadline by prioritising complete linear rasters and quiet-zone candidate groups, and reject invalid DataMatrix projective finder borders before sampling interior modules without changing finder tolerances

Version 2.865.0: Request and authenticate RFC 3161 timestamps for explicit SHA256, SHA384 and SHA512 message imprints without hashing the imprint again, preserving strict digest lengths, fresh nonces, bounded transport, trust chains and revocation validation

Version 2.866.0: Align mixed-size XFA rich text runs to a common saved-PDF baseline, preserve the caller text-position mode, and apply the larger adjacent paragraph margin including empty paragraph transitions

Version 2.866.1: Authenticate raw-signature RFC 3161 tokens using their actual supported SHA256, SHA384 or SHA512 message imprint algorithm while retaining the existing SHA256 request default and full token trust and revocation checks

Version 2.867.0: Wrap XFA rich text across inline styles with measured word boundaries, explicit line breaks, shared line baselines and alignment, actual justified word gaps and fragment link geometry, preserving native repeated-instance XDP persistence

Version 2.868.0: Generate masked password and literal file-select field appearances with preserved Unicode values and AES-256 policies, carry escaped supplementary Unicode through the native JSON ABI, retain subnormal PDF decimal source tokens, and create RGB prefetch buffers without a screen DC

Version 2.869.0: Sign Windows documents with real synchronous C ABI RFC 3161 transport callbacks and SHA256, SHA384 or SHA512 imprints, authenticated TSA trust and CRL checks, required timestamp seed constraints and bounded transactional publication

Version 2.870.0: Render actual native Windows Cairo output with explicit GDI standard-font outlines and correct Win32 OpenJPEG calling conventions, using reproducible pinned native dependencies and independent output acceptance

Version 2.871.0: Create missing XFA font, paragraph, fill, colour, border, edge and corner properties through actual native event scripts, persist stable per-instance form bindings with exact rollback, and regenerate optional widget appearances after effective style changes

Version 2.871.1: Execute XFA event bodies in their own lexical and strict scope while preserving field aliases in the outer scope, the event this value, explicit returns and exact failure rollback

Version 2.872.0: Create actual Windows DocMDP certification signatures with P1, P2 or P3 permissions and authenticated Unicode legal attestations, honour required seed policies and FieldMDP locks, and permit subsequent signatures only where the signed policy allows them

Version 2.873.0: Create persistent per-instance XFA UI choices through native scripts and consume actual text, password and choice widgets with multiline and measured long-word appearances

Version 2.874.0: Edit native rich-text fields with typed Unicode style runs, actual embedded regular, bold, italic and bold-italic fonts, measured mixed-size appearance baselines, decorations and synchronised V/RV values across widgets and encrypted output

Version 2.875.0: Resolve actual XFA field defaults without manufacturing data while reading, preserve explicit empty instance values and ensure edits write independent instance data without modifying shared templates

Version 2.876.0: Embed authenticated CRL and OCSP evidence in signed Windows Adobe RevocationInfoArchival attributes, enforce actual seed policies and validate trusted status, response authorisation and freshness before publishing signatures

Version 2.876.1: Preserve complete XFA SOM binding and actual emitted-instance data selection while applying missing-instance form and template defaults, without borrowing values from another repeated occurrence

Version 2.877.0: Render actual coloured and uncoloured PDF tiling and shading patterns with inherited pattern origins, nested cells, overlap, stroke and stencil paints, transparency and bounded cancellation across native Linux and Windows targets

Version 2.878.0: Generate actual Windows signature appearance profiles with embedded Unicode fonts for merged and separate widgets, rotation, encryption and certification workflows, and enforce required AppearanceFilter against the profile actually generated

Version 2.879.0: Create persistent native XFA scalar value children with immediate field, data and shared-alias synchronisation, typed form persistence, widget commits, repeated-instance isolation and exact transactional rollback

Version 2.880.0: Render actual native XFA scalar draw and caption values after script creation, preserve explicitly empty values and repeated-instance isolation, and retain exact rollback when later native drawing exhausts its budget

Version 2.880.1: Observe cancellation before page renderer allocation and context installation and during initialisation, preserve an active caller colour context when construction is initially rejected, and release borrowed display lists without publishing partial bitmaps

Version 2.880.2: Retain rich paragraph alignment across empty initial runs, inline style changes and explicit line breaks, and paint requested rectangle or circle borders and measured highlighted rows instead of silently omitting them

Version 2.881.0: Automatically authenticate standard detached CAdES signatures with required signing-certificate binding and read genuine hexadecimal or escaped literal Contents strings consistently for verification, permitted form updates and long-term validation evidence

Version 2.882.0: Inherit actual child-stream font resources and PDF text parameters in Form, Type3 and Pattern rendering, preserve graphics-state text saves, honour invisible Type3 text and reset independent annotation appearance defaults

Version 2.883.0: Create persistent native XFA image and geometric value children and render real PNG alpha, image DPI and aspect geometry, preserving repeated-instance isolation and transactional rollback; correct FPC image pixels that previously rendered black

Version 2.884.0: Expose portable Unicode 17 default extended grapheme boundaries and wrap overwide rich words at complete clusters, retaining actual Unicode appearance content and correcting joining-form width changes after substring shaping

Version 2.885.0: Expose Unicode 17 default line-break opportunities and consume them in actual native rich fields, preserving nonbreaking-space, hyphen and punctuation groups and Unicode explicit separators with exact original V and RV values

Version 2.886.0: Create and authenticate standalone RFC3161 PDF document timestamps with bounded streaming, SHA256, SHA384 or SHA512 imprints, trusted TSA identity and nonce binding, required ESIC extension declarations and authenticated certification or field-lock exceptions

Version 2.887.0: Import and serialise persistent native XFA exData XML with immediate script reads, namespace and mixed-content preservation, retained repeated-instance identities, transactional rollback and genuine saved XHTML rendering

Version 2.888.0: Apply complete Unicode 17 properties and contextual line breaking through existing document APIs, expose raw or LB1-resolved portable property queries, preserve established enum ordinals and tailoring contracts, and honour soft-hyphen prohibitions

Version 2.889.0: Synchronise materialised hidden and invisible XFA scalar aliases after visible field commits while preserving native repeated data scopes, explicit empty values and exact transactional rollback

Version 2.890.0: Preserve legal Unicode word, nonbreaking-space, punctuation and numeric groups across typed rich style runs, fit whole groups with real styled font advances, retain mixed-size baselines and coalesce CRLF across style seams

Version 2.890.1: Recover transient Windows atomic publication locks with at most eight cancellable replacement attempts while preserving exact targets, prepared bytes, permanent operating-system errors and owned staging cleanup

Version 2.891.0: Preserve ordered native XFA XML comments and processing instructions through event import, serialisation, cloning and transactional rollback, while excluding them from scalar text, rich text and SOM element selection

Version 2.892.0: Render bounded free-form and lattice triangle mesh shadings with genuine coordinate, flag, function, colour and transparency semantics, and decode hexadecimal Indexed palette streams exactly once

Version 2.893.0: Read and write bounded native FDF and XFDF scalar field data and transactionally import real Unicode, choice and button appearances into independently published PDFs, preserving authenticated signature policies and AES encryption

Version 2.893.1: Authenticate required Adobe signed CRL and OCSP evidence inside genuine RFC3161 document timestamps before accepting signature policy protected form updates, preserving transactional refusal for missing, revoked, expired or untrusted evidence

Version 2.894.0: Wrap overwide typed rich text at complete Unicode grapheme boundaries across font and colour styles, measure actual styled ranges before line assignment and preserve indivisible oversized clusters, mixed point sizes and explicit character spacing

Version 2.895.0: Import and export actual FDF and XFDF bytes through existing versioned native Linux JSON callbacks, preserve Unicode field values, AES security and authenticated signature policies, and roll back the current document after failed output or result publication

Version 2.895.1: Compile static native XFA event support once per owned JavaScript engine and replay complete compact dynamic event arguments, preserving closures, recorded host responses, instance isolation, original journal budgets and transaction deadlines during rollback

Version 2.896.0: Resolve native XFA binding SOM through repeated data scopes with bounded descendant traversal, escaped names, Unicode matching, per-instance missing-leaf fallbacks and transactional runtime value synchronisation

Version 2.897.0: Shape selected Unicode style spans with genuine surrounding HarfBuzz context, expose native paragraph order and direction APIs and place typed rich items within actual wrapped physical lines while preserving logical styles and object ownership

Version 2.898.0: Read and write bounded FDF and XFDF rich text, decode native XHTML style spans into four genuine embedded font styles and transactionally import real appearances into signed or encrypted PDFs, including canonical comparison of existing read-only rich values

Version 2.899.0: Attach styled combining marks to actual GPOS base, ligature and mark anchors with independent font scales, preserve negative-origin glyph outlines inside rich widget clips and reserve fitting line extents for visible stacked marks

Version 2.900.0: Load and save namespace-aware native XFA Data DOM XML transactionally, preserve ordered mixed content and data binding identities, quote host values in linear time and retain an exact per-session JavaScript module lease through bounded engine replay

Version 2.901.0: Render Coons and tensor patch mesh shadings with bounded cubic geometry, source-space colour interpolation, continuation edges, fold handling and transactional resource and cancellation limits

Version 2.902.0: Import and export styled FDF and XFDF through real Linux JSON C ABI callbacks, embed configured genuine font faces, preserve signature policies and exact private source bytes for no-op imports, and publish current document state only after both callback outputs succeed

Version 2.903.0: Preserve directional embeddings, overrides, isolates and paired-bracket paragraph context across wrapped rich style lines, expose bounded paragraph-derived and cached physical-line ordering APIs and shape actual line items with resolved levels and scripts

Version 2.903.1: Keep Unicode directional-only shaping clusters at zero character-spacing advance while retaining logical controls, glyph identities and normal visible-cluster and word spacing

Version 2.904.0: Execute the native XFA JavaScript, event journal, Data DOM, XML, FormCalc and ICU locale runtime on Linux with owned shared-module leases and real monotonic clocks while preserving existing Windows Unicode initialisation

Version 2.904.1: Preserve complete paragraph direction controls and paired brackets through automatic standalone shaping and plain multiline field wrapping, with physical-line joining contexts, immutable paragraph caching and bounded total glyph output

Version 2.904.2: Read actual outer cross-reference stream dictionaries without confusing nested encryption settings, resolve escaped entry names and preserve direct encryption dictionaries in ordinary Windows incremental revisions

Version 2.905.0: Create native PDF page trees, repeated editable fields, push buttons and Unicode static text directly from XDP and saved runtime values on Linux and Windows, with genuine embedded appearances and bounded candidate preparation before caller output

Version 2.905.1: Resolve escaped predictor parameters within the actual DecodeParms dictionary and locate the real stream token after balanced outer dictionary syntax, preserving whitespace-valued binary xref payloads in ordinary Windows loading

Version 2.906.0: Position cross-style combining marks using actual selected glyph bounds and canonical combining classes when attachment anchors are absent, with independent font scales, same-side stacking and actual resolved item directions for double marks

Version 2.907.0: Render real CID-keyed CFF glyph identities and bounded notdef substitutions through actual font CID-to-GID mappings, preserving independent text extraction and cancellation checks throughout escaped CMap parsing

Built-in legacy CMaps decode one-to-four-byte PDF character codes for native rendering and Unicode extraction, preserve parent and child writing modes, recover malformed code sequences deterministically and bound cancellable inheritance; redistribution packages include the complete CMap data notice

Windows FDF and XFDF imports select actual supplied named families and font styles from nested file paths or unchanged V1 callbacks, preserving signed or AES-encrypted revisions and two-phase publication; synchronised random input reads use an independent source cursor so background reads cannot corrupt sequential output copies

Version 2.907.1: Decode actual PDF hexadecimal escapes and UTF-8 bytes in name-valued and inherited form fields, preserving spaced, punctuated and Unicode button export states through native saved-document reload

Version 2.908.0: Create genuine native XFA combo boxes, list boxes, multi-selection fields, checkboxes and structurally scoped radio groups directly from saved runtime data, with paired display/export labels, per-instance items, access flags and independent native appearance states

Version 2.908.1: Apply valid inline rich-text declarations with independent important priority, enclosing computed font-size bases and explicit inherited properties, preserving CSS comment and quoted/function declaration boundaries

Supplied rich-text font fallback selects complete styled Unicode graphemes from actual candidate family programs while preserving authored values and precise appearance styles; native Linux JSON fallback exposes the same opt-in behaviour through unchanged V1 records and retains the aggregate font allowance across actual provider allocations

Version 2.909.0: Select actual supplied named TrueType families per rich run and bounded XHTML font-family declaration, preserve per-family style metrics and mark caches, and import real FDF or XFDF rich values with family-aware canonical comparison

Version 2.910.0: Fit NoZoom and NoRotate annotation appearances around the transformed upper-left rectangle anchor, preserving UserUnit, fitted form geometry, opacity and the actual page clip across scale and rotation

Version 2.911.0: Create native XFA rectangle, line and arc draws and inline PNG or JPEG images with actual sample decoding, alpha masks, fitted aspect and rotated placement, bounded preparation and transactional ownership under cancellation

Version 2.912.0: Import and export real FDF or XFDF through Windows file jobs and V1 callbacks with immutable owned input, current unsaved graph preparation, actual four-font rich appearances, authenticated signed AES policies and context commit only after both output callbacks succeed

Version 2.913.0: Select configured native rich font families through unchanged Linux V1 JSON callbacks for typed fills and FDF or XFDF imports, load actual required family and style programs with aggregate budgets, and advertise both implemented rich profiles

Version 2.913.1: Resolve existing implicit XFA values through bounded live data contexts without repeating selector parsing charged to the script operation allowance, preserving original transaction deadlines and explicit binding behaviour

Version 2.913.2: Decode complete rotated matrix barcodes before disconnected fragments and reject exact QR finder mismatches before full-grid sampling, retaining tighter grouping, original linear-bar behaviour, atomic scan budgets and the unchanged two-second deadline

Version 2.914.0: Create native XFA Boolean appearances with six custom marks, round or square borders, mark colours and sizes, five caption placements and shared embedded caption fonts; preserve reversible Unicode export aliases and distinct legal neutral states through event execution and saved PDF reload

Version 2.914.1: Overlap foreground memory-cache hits with cooperative prefetch cancellation after acquiring the real memory reservation, preserve operation cache telemetry and recheck cancellation after cache-lock or reservation waits while retaining strict miss ordering and thread joins

Version 2.915.0: Keep selected native XFA list options visible through font-metric selection windows and persisted top indices, preserve complete option and value arrays, and retain repeated-instance font changes and event rollback with bounded visible glyph preparation

Version 2.916.0: Decode and render 182 built-in legacy CMaps with bounded one-to-four-byte codes, exact parent and child writing modes, Unicode mappings, deterministic malformed-code recovery, cancellable inheritance and bundled redistribution notices

Version 2.917.0: Select genuine named family and style programs for Windows FDF and XFDF imports through nested file paths or existing versioned font callbacks, and isolate synchronised random source reads from sequential transaction publication

Version 2.918.0: Render native XFA Boolean captions from effective XHTML and supplied named style fonts, preserve repeated-instance overlays and saved runtime XML, and measure automatic caption reserves with final logical text-line extents

Version 2.919.0: Resolve complete styled Unicode graphemes through explicitly supplied candidate font families, preserve authored values and precise appearance styles, expose opt-in native Linux JSON fallback through unchanged V1 callbacks, and retain the actual aggregate font allowance while loading configured programs

Version 2.920.0: Save mixed scalar fields and original typed rich-text runs in one independent atomic document transaction, retain precise appearance values and supplied font programs, preserve authenticated policies and current graph edits, and recognise genuine read-only appearance no-ops

Version 2.920.1: Keep successful native Linux C ABI PDF mutations aligned with their committed source snapshot, so following same-value FDF or XFDF imports preserve the exact published form values, typed appearances, drawn text and imported pages instead of restoring stale input bytes

Version 2.921.0: Render native XFA push-button scalar and XHTML captions with genuine supplied family and style programs, preserved inline separators and authored padding, actual normal/down/rollover appearances, caption visibility and persistent repeated-instance overrides

Version 2.922.0: Select native annotation view or print visibility with PDF 2.0 Invisible rules, recognise RichMedia and Projection static appearances and implicit Text transforms, and retain bounded cancellable Windows PNG atomic replacement with actual OS error diagnostics

Version 2.923.0: Preserve ordered rich-text font candidate lists through native appearances and Linux V1 JSON, and bind mixed scalar and original typed runs to Windows file jobs and unchanged V1 callbacks with precise paint, supplied style programs and two-phase publication

Version 2.924.0: Render default document optional-content groups and membership expressions across marked page content, form XObjects and annotations, preserve hidden graphics and text state, and expose explicit view or print usage through the native Linux V1 JSON interface

Version 2.925.0: Select ordered caller-supplied font families for complete styled rich-text graphemes through Windows file jobs and V1 callbacks, preserving CSS and typed candidates, genuine empty-value transactions and aggregate font budgets

Version 2.926.0: Expand bounded inline CSS font shorthand into independently cascaded size, weight, italic and supplied-family candidates, preserving inherited relative sizing, omitted-style resets, important component priorities and actual saved font appearances

Version 2.927.0: Paint original Windows ApplyXFAAsAcroForm push-button scalar and rich captions with actual installed family/style programs, persistent per-instance overrides and native normal/down/rollover appearance bundles, registering genuine AcroForm font resources

Version 2.928.0: Render ExtGState dash arrays and phases with bounded typed PDF array scanning, preserving comments, strict operand validation, inherited stroke geometry, cancellation and ordinary text arrays

Version 2.929.0: Build scalar text, comb cells, choice labels and button marks from ordered supplied regular font families across native setters, Windows jobs and versioned Windows/Linux callbacks; preserve ordinary scalar metadata and distinguish an empty choice selection from a selected empty export

Version 2.930.0: Evaluate automatic optional-content usage applications with explicit zoom, language and user context, persistent native manual selections and bounded Linux JSON operation state; invalidate borrowed rendering contexts after document changes

Version 2.931.0: Preserve legacy XFA checkbox on, off and neutral export states, styled Unicode captions and native appearance bundles, encode special PDF names consistently, and restore direct page resources after cancelled widget adoption

Version 2.932.0: Decode signed and unsigned JPEG 2000 components through26 bits with mixed precision, subsampling and opacity, normalise bounded samples and ignore JPX image BitsPerComponent declarations before rendering

Version 2.933.0: Evaluate multidimensional sampled cubic colour functions with the existing four-knot scalar convention, short-dimension linear fallback, bounded tensor work, cancellation and unchanged scalar interpolation

Version 2.934.0: Create real Unicode legacy XFA text, numeric, date and password appearances with effective per-instance font family and style, editable embedded font resources, scalar password masking and transactional resource adoption

Version 2.935.0: Preserve rich-text line height, computed CSS lengths, inherited factors and parent font metrics across native layout, saved appearances, Windows file jobs and callbacks, and Linux FDF/XFDF JSON imports with bounded metric-font planning

Version 2.935.1: Count supplementary Unicode characters once in portable XFA password appearances, retain original values and enforce aggregate glyph budgets before allocating masks with scalar-granular cancellation

Version 2.936.0: Bind explicit typed JSON rich-text line heights to Windows and Linux saved appearances, preserving authored runs, supplied parent metrics, bounded aggregate planning and transactional mixed-field updates

Legacy XFA radio groups preserve repeated instance scopes, exact exports and styled Unicode captions, with whole-group rollback and a supplied-font native member appearance factory

Version 2.936.1: Parse valid PDF dictionaries and trailers with arithmetic overflow checking enabled by explicitly retaining the low32 bits of the FNV hash multiplication

Native rendering intents preserve graphics-state, image and transparency-group colour intent through bounded ICC transformations

Version 2.937.0: Create independent legacy XFA radio groups from actual repeated instance scopes, preserving exact exports, selected states and styled Unicode captions with whole-group adoption rollback and a detached supplied-font native member appearance API

Legacy XFA choice fields preserve repeated instance values, display labels, list selection windows and styled Unicode appearances, with per-field rollback and a supplied-font detached factory

Version 2.938.0: Render the four standard colour intents across graphics states, forms, images, shadings, patterns and transparency groups with image overrides, relative fallback for unknown names and bounded cancellable ICC transform caching

Binary annotation FDF exchange preserves supplied annotation dictionaries, appearance states, shared font and image resources, and explicit local GoTo targets through bounded native APIs, modern Windows loaded-document interchange, file jobs and versioned Windows/Linux callbacks

Matching annotation names on the same page select replacements; unnamed or unmatched annotations are appended, whilst authenticated policy, atomic publication and exact committed no-op bytes remain enforced

Native annotation XFDF exchange appends eighteen mapped annotation types with bounded binary data, Unicode rich contents, popup and reply objects, authenticated permissions and transactional native/Linux callback publication

Version 2.939.0: Create legacy XFA combo and list fields with exact repeated-instance exports, display labels, selected indices, scroll positions and styled Unicode appearances, preserving high field flags and per-field rollback with a supplied-font detached choice factory and metadata-only mode

Version 2.940.0: Exchange eighteen mapped annotation types through bounded native XFDF and Linux V1 JSON operations, preserving Unicode rich contents, callouts, transparent colours, binary attachments, popup and forward-reply links, authenticated permissions and transactional append publication

Version 2.941.0: Apply independently cascaded native CSS and original typed letter and word spacing to shaped runs, physical lines, fitting and saved appearances, with computed point serialisation, exact decimal rounding and transactional Windows/Linux JSON publication

Native annotation fallback paints supported annotations without normal appearances using bounded temporary geometry, text and font resources

FreeText default appearances apply a bounded DA operator profile, transformed automatic fitting, word-boundary wrapping and root-scoped text and decoration state whilst preserving annotation geometry and source resources; the four finite Tr4 to Tr7 paint-and-clip controls passed independent MuPDF 1.28.5 and Poppler readers, and the original 90 reader images passed a full-cell independent model within their pinned corpus

Version 2.941.1: Validate native XFA choice selection uniqueness with bounded cancellable sorting while preserving exact case-sensitive export values, original selection order and transactional failure behaviour

Windows annotation XFDF exchange exports mapped annotations and appends authenticated XFDF through bounded file jobs and original V1 callbacks with atomic publication and exact no-op bytes

Version 2.942.0: Render supported annotations without normal appearances through bounded temporary geometry, line endings, icons and Unicode FreeText, retaining source resources, rich text, view/print flags and cancellation

Native typed form no-op publication retains exact loaded PDF bytes for unchanged mixed updates and empty batches whilst preserving pending graph edits, authenticated policies and atomic publication

Version 2.943.0: Exchange mapped annotation XFDF through Windows file jobs and original V1 callbacks with authenticated append transactions, bounded binary and Unicode data, exact no-op bytes and atomic publication

Dynamic XFA choice items update live display and export lists, preserve surviving node aliases and exact selections, and save native and legacy PDF choice appearances with bounded transactional script operations

Version 2.943.1: Preserve exact loaded PDF bytes when native mixed scalar and typed rich-text transactions or empty batches make no changes, retaining pending graph edits, authenticated signature and encryption policies, resource limits and atomic publication

Local annotation destinations preserve eight page-target modes, Unicode names and authored decimal precision through native and legacy XFDF exchange, with qualified Adobe XML and transactional Windows/Linux callbacks

Version 2.944.0: Manage live XFA choice display and export items through JavaScript and FormCalc, preserving surviving aliases, exact duplicate or empty selections, native per-instance lists and saved native or legacy PDF appearances under bounded mutation limits

Read-only rich annotation fonts support Preview/Print embedding and complete no-subsetting fonts under explicit per-call permissions; Screen annotations preserve existing appearances and paint no implicit media placeholder

Version 2.945.0: Preserve local annotation page and named destinations through native and legacy XFDF exchange, with exact bounded decimal tokens, qualified Adobe XML, duplicate-attribute validation and transactional Windows/Linux callback publication

Version 2.946.0: Render temporary rich annotation text with explicit read-only Preview/Print font permissions and unchanged full-font bytes, preserving editable embedding policies and existing Screen appearances without implicit media placeholders

Version 2.946.1: Preserve present-empty XFA attributes and UTF-8 names, values, namespaces and indexed queries through native XML serialisation, persistent property defaults, repeated script events and transactional rollback

Version 2.946.2: Fix SHA-1, SHA-256, SHA-384 and SHA-512 word arithmetic with compiler range and overflow checks enabled, preserving valid digests and AES-256 password authentication without changing public interfaces

Version 2.946.3: Apply xfa.host.resetData through native events without misreading it as a Data XML import, preserving template defaults, bound values, repeated scopes, pending edits and transactional rollback

Version 2.947.0: Render bevelled and inset rectangular annotation borders and measured Unicode or rich line captions, preserving opacity, endpoint offsets, existing appearances, bounded font resources and annotation clipping

Version 2.947.1: Preserve explicit empty default XML namespace declarations during XFA parsing and serialisation, preventing unqualified data subtrees from inheriting an ancestor namespace after save and reload

Version 2.948.0: Render filled glyph masks with captured fractional clip coverage whilst preserving PDF paths, patterns, alpha and blend operators, and check raster working-memory capacity before allocation

Version 2.949.0: Preserve the distinction between no selected choice options and a selected empty export value through native, Windows and Linux XFDF exchange, with exact no-op publication, bounded validation and checked encrypted-document loading

Version 2.950.0: Create, clone, rename, insert and remove native XFA Data DOM nodes with bounded ownership, inherited namespaces, stable imported references, binding refresh and complete event rollback; preserve UTF-8 attributes and retained FormCalc references through saved XML and native PDF consumers

Version 2.951.0: Render bounded cloudy borders for Square, Circle, Polygon and FreeText annotations without normal appearances, preserving width, dash, opacity and source graphs; share immutable generated font bytes across FreeText views without repeated decoded-byte charges whilst retaining parsing budgets and cancellation

Version 2.952.0: Remote annotation destinations retain Unicode file specifications and exact coordinates across native and Windows/Linux callback exchange; ordinary loaded annotation imports preserve authenticated encryption and signature policies, exact signature ranges and shared RC4 field values

Version 2.953.0: XFA query node collections provide independent retained lists, occurrence metadata and bounded transactional edits through native saved values and appearances; retained managers follow the current event graph and ordinary SOM evaluation retains the original stack limits

Version 2.954.0: native rich-text style sheets apply bounded internal selectors, importance, specificity and source order through actual saved fields and Windows/Linux FDF/XFDF transactions

Version 2.955.0: XFA live child collections track current form and property children, repeated instances and implicit properties across events; independent clones reference actual native values and saved PDF appearances with bounded event rollback

Version 2.955.1: checked crypto arithmetic and key agreement preserve SHA3/SHAKE and full-width curve exchanges with integer checks enabled, and reject canonical all-zero X25519/X448 shared secrets

Version 2.956.0: OpenType CFF field and annotation appearances preserve actual charset identities, complete font bytes, shaped metrics, Unicode text and bounded font resources

Version 2.956.1: FormCalc child collections resolve nodes paths through the actual compiler and retain bounded event replay, saved values and native PDF appearances

Version 2.957.0: extended native rich-text selectors apply attributes, siblings, structural positions, language and negation to saved values and transactional field appearances

Version 2.958.0: live Data DOM numeric child indices preserve current native order and enforce read-only access inside retained script objects, with bounded event rollback and saved PDF appearances

Version 2.959.0: logical and relational rich-text selectors apply complex not/is/where lists, anchored has relations and filtered nth-child positions to actual saved values and transactional field appearances

Version 2.960.0: standard XFDF Stamp appearance transport preserves actual Form streams, bounded font and image resources, authenticated permissions and atomic native or callback publication

Version 2.961.0: raw default-font annotation appearances use original Type1C, CIDFontType0C and bare Type1 programmes for bounded temporary text and rich-caption appearances

Version 2.962.0: raw-font annotation word wrapping preserves complete encoded cells and style runs, with bounded reflow and measured cancellation

Version 2.963.0: native rich-text CSS namespaces apply scoped declarations and qualified selectors to actual saved appearances and Windows/Linux form transactions, with bounded inherited namespace lookup and checked-build compatibility

Version 2.964.0: OpenType CFF2 default-instance appearances preserve original glyph identity, Unicode mapping and font permissions whilst converting complete default outlines into static CID-keyed CFF 1 programmes for saved PDF fields

Version 2.965.0: transactional native XFA form trees support creation, cloning and child ownership edits with stable surviving aliases, rollback, empty-merge occurrences and saved form-packet persistence

Version 2.966.0: native rich-text media queries evaluate explicit print/screen host profiles, style media attributes, nested Boolean conditions and feature ranges before saving computed rich values and appearances

Version 2.967.0: caller-supplied external rich-text style sheets resolve linked sheets and imports, shared preferred or alternate title sets and document bases before transactional native, Windows and Linux form-data publication

Version 2.968.0: explicit rich-text preferences add colour scheme, reduced motion/transparency/data, contrast, forced and inverted colours and scripting availability, retaining unknown values when omitted

Version 2.969.0: finite rich-text CSS numeric math adds calc, min, max and clamp, root-relative and explicit viewport lengths, and computed line and spacing metrics in actual saved appearances

Version 2.970.0: native CSS support queries admit conditional rich-text groups and imports using the supported declaration and selector grammar, shared budgets and transactional saved appearances

Version 2.971.0: root scope and static user-action selectors preserve logical selector matching, conditional stylesheet admission and computed saved appearances

Version 2.971.1: shaped-run cache hashing preserves modular arithmetic with range and overflow checks enabled in FPC 3.3.1 Windows builds

Version 2.974.0: page-and-name annotation removal prepares bounded popup and reply cascades through native APIs, Windows transactions, JSON jobs and versioned callbacks, preserving permissions, signed revisions and failed-publication rollback

Version 2.973.0: binary annotation FDF exchange preserves appearance resources, shared object graphs and local action destinations through bounded native APIs, Windows interchange and versioned callbacks

Version 2.972.0: native annotation default appearances preserve text state, automatic fitting, rich text and clipping in headless rendering

Native Linux document workflows create HTML documents with embedded Unicode fonts and AcroForm controls, insert visible or searchable page text, perform actual Tesseract OCR with bounded cancellable child processes, and author independently validated raster PDF/A-4 output

Headless DSS/VRI evidence validates certificate chains and supplied OCSP/CRL authorisation, signatures, status and freshness before incremental evidence publication, including encrypted documents

XFA host transport supplies explicit typed callbacks for host actions and FormCalc Get/Post/Put, records responses for safe request retries and module-state replay, and reports transaction completion for application compensation

Headless RFC 3161 timestamps validate message imprints, nonces, TSA authorisation, certificate trust and supplied revocation evidence, then embed the actual timestamp token in detached CMS signatures; required timestamp failures preserve the destination

Persistent XFA JavaScript sessions retain script-object lexical state, nested closures and independent repeated-instance modules with bounded, deterministic transactional rollback

Loaded PDF/A-4 preservation retains original text operators, vectors, images, embedded font programs, and existing OCR layers; it composes visible annotation/widget appearances, optionally adds searchable OCR, reports explicit interaction and metadata losses, validates the reloaded result, and publishes files atomically within its documented font and colour profile

Loaded PDF/A-4 raster archival conversion rebuilds visible page content as bounded sRGB images in a newly validated PDF/A-4 document, normalising fonts, transparency, and painted colours through the strict native renderer; the file API stages and atomically publishes the result, whilst the report identifies removed annotations, forms, and attachments. This opt-in visual archival path discards original vector text, searchable text, signatures, and interactive content

PDF 2.0 output now supports PDF/A-4, PDF/A-4e, PDF/A-4f, PDF/UA-2, PDF/X-6, PDF/X-6p, and PDF/X-6n identification and validation, including revision-aware XMP resolved by namespace URI, transactional PDF/A-4 repair for safe header, trailer, metadata, Catalogue, and presentation normalisation with byte-exact rollback and preserved page content, selectable ISO 15930-9:2020 and resolved-errata PDF/X-6 rule sets, actual ICC header and channel checks, document and page output intents, actual painted colour and overprint through content arrays, nested forms, tiling and shading patterns, images, image masks, shadings, Type 3 glyphs, soft masks and annotation appearances, inherited graphics and transparency state, combined fill-and-stroke compositing, CIDFont and CMap relationships, bounded decoded-byte and content-token work, namespace-aware structure elements, document metadata and string checks, optional content, physical annotation ownership, form semantics, structure destinations, outlines, nested page labels, associated-file authoring, inherited production page boxes, clause-aware diagnostics with rule-set provenance, automatic fail-closed generation validation, and transactional PDF/UA-2 repair for namespaces, attributes, lists, tables, Ruby, Warichu, pronunciation, alternate text, language inheritance, heading order, and Artifact tags

Tagged PDF 2.0 tables receive bounded grid expansion, intersection and row-group checks, table-local header association and cycle detection, while lists receive complete numbering and continuation-chain checks; exact Ruby and Warichu sequences are enforced, and applications can write per-element pronunciation hints or ordered embedded PLS lexicons through SetStructurePronunciation and AddPronunciationLexicon

The v2.119.32-51 cycle added producer-side Arabic / Persian / Urdu shaping (LAM-ALEF mandatory ligature, Arabic Presentation Forms-A 9 letters), a feature-complete OpenType GSUB substitution engine covering every LookupType 1-8 with Script / LangSys selection and TTF subsetter closure for substitute glyphs, XFA (XML Forms Architecture) container support (AddXFAPacket / ClearXFAPackets / XFAPacketCount), an AcroForm /AA /K + /F + /V + /C form-field trigger family, multi-Unicode /DR font registration via RegisterAcroFormFont, structure-element accessibility attribute setters (/Lang / /E / /T) with a Table 333 standard structure type enum and AddStructureElement typed overload, and marked-content sequence properties on BeginTaggedContent

The v2.119.52-68 cycle closed the Phase 8 automatic shaping pipeline and broadened script coverage: Arabic Extended-A (including the U+0750-077F Arabic Supplement and U+08A0-08FF Arabic Extended-A) and Persian / Urdu Form-B were extended into the full U+0672-06D5 joining-class table plus 26 new Forms-A mappings, with post-pass folding for LAM-ALEF, YEH-HAMZA + vowel pairs (8 ligatures in U+FBEA-FBFB), the standalone Allah ligature (U+FDF2), and the 22-codepoint Bismillah phrase (U+FDFD). The new opt-in ShapingFeatures property + THPDFShapingFeature enum (sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) makes the producer emit GSUB-driven font-specific rlig / liga / clig / rclt substitutions automatically, with Latin Standard Ligatures (ff / fi / fl / ffi / ffl / ſt / st via U+FB00-FB06) and Devanagari Indic syllable reordering (Repha + pre-base I-matra) joining the same pipeline. New shaping capability methods for Syriac (GetSyriacJoiningClass / GetSyriacPosition), Mongolian (GetMongolianJoiningClass / GetMongolianPosition), and Devanagari (GetDevanagariCategory / ApplyDevanagariReorder) let callers drive non-Arabic complex scripts through the same GSUB engine. GetCodepointAdvance exposes the cached /W em-fraction for wrap calculations, and AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID let producer emit any GSUB substitute GID (Devanagari cluster shapes, stylistic alternates, CJK variation sequences) through Private-Use-Area codepoints with full /CIDToGIDMap + /ToUnicode + /W integration. Cumulative ToUnicode CMap now ships 35 ligature reverse-mapping entries (8 LAM-ALEF + 18 YEH-HAMZA family + 1 Allah + 1 Bismillah + 7 Latin) so consumer-reader copy / paste produces the source codepoints. Documentation skeletons for ChangeLog now ship in 11 languages (EN / CN / AR / DE / ES / FR / IT / JA / KO / PT / RU) with a language-picker UI; ChangeLog retention limit was raised from 250 to 500 version sections

The v2.152-v2.190 cycle built out a complete OpenType GPOS positioning engine and broadened complex-script coverage. Opt-in shaping options now apply the font's own kerning (pair, contextual, and right-to-left), combining-mark placement (mark-to-base, mark-to-mark, and per-component mark-to-ligature), cursive connection anchors, and vertical kerning for vertical text, all written as standard PDF text operators so any reader renders the same result. Producer-side shaping now covers Arabic (including the Supplement, Extended-A, and Extended-B blocks), Syriac, Mongolian, N'Ko, Adlam, Hanifi Rohingya, Tibetan consonant stacking, Devanagari and the other Indic scripts through the font's Indic feature chain, Javanese, Thai and Lao mark ordering, Hebrew vowel-point ordering, Khmer, Myanmar, Tai Viet, and Meetei Mayek. A family of optional OpenType typography features - standard, discretionary, and historical ligatures, small capitals, oldstyle / lining / proportional / tabular figures, superscripts, subscripts, ordinals, fractions, scientific inferiors, numerators, denominators, stylistic and contextual alternates, localised forms, case-sensitive forms, slashed zero, and vertical alternates - can be applied automatically during text output. Copy, paste, and text search recover the original characters across all shaped output, including ligatures and chained feature substitutions. Font output also became smaller: embedded font programs are always Flate-compressed, a font used on several pages is embedded once per document, subset tags are derived deterministically for reproducible output, and an optional compact mode writes plain-ASCII text with standard fonts as unembedded WinAnsi text

PDF Standards Coverage

HotPDF includes version-specific support for the practical PDF 1.3, PDF 1.4, PDF 1.5, PDF 1.6, PDF 1.7, and PDF 2.0 authoring features used by business, imaging, publishing, and document-automation applications. Public APIs are checked against the selected PDF version so generated files avoid newer entries when strict compatibility is required

The current matrix covers filters and predictors, XRef streams, incremental update chains, AES encryption, public-key security, Ed25519, Ed448, extension-gated ML-DSA verification, callback, remote, PKCS#11, and Windows CNG key-storage signing providers, DeviceCMYK and ICCBased colour, tiling patterns, axial, radial, multi-stop, Gouraud, Coons patch, and tensor-product patch shadings, inline images, layers, transparency groups, page transitions, annotations, AcroForm widgets, XMP metadata, tagged PDF structure trees, OutputIntents, production page boxes, ViewerPreferences, UserUnit, Tabs order, and font embedding and subsetting for TrueType, Type 3, CFF, OpenType-CFF, and CID-keyed CFF fonts

This is broad standards-aware coverage for HotPDF's supported authoring surface, not a blanket claim that every edge case in ISO 32000-1 is implemented

Why Choose HotPDF

Custom Stream Filter Pipelines

The IHPDFCustomStreamFilter registry composes application-defined push and pull decoders with built-in filters under one aggregate byte budget, explicit seek contracts, cooperative cancellation, isolated temporary output, typed failure statuses, and execution telemetry

RunLength decoding validates encoded runs before reserving exactly the decoded output size, and direct file read-ahead discards incomplete cache refills after I/O failures

Native RAD Studio Fit

Use familiar Delphi and C++Builder projects, packages, streams, forms, and drawing patterns instead of wrapping a separate PDF engine

Modern PDF Features

Build PDFs with forms, annotations, layers, transparency, page transitions, tagged structure, encryption, signing placeholders, and incremental updates

Compact, Fast Output

Reduce PDF size with zlib-ng compression, libjpeg-turbo imaging, TrueType and OpenType-CFF subsetting, CID-keyed CFF support, and internally instantiated TrueType and CFF2 variable fonts

Competitive Strengths

The capabilities below are hard technical differentiators for HotPDF versus typical Delphi PDF components. Most competing commercial components either lack these features entirely or are materially weaker in production. Each row maps to a verifiable implementation and a public API surface inside the library

Complete OpenType Shaping + Positioning

A full GSUB substitution engine covering every LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual), paired with a GPOS positioning engine covering all 9 LookupTypes (pair / single / contextual kerning, mark-to-base, mark-to-mark, per-ligature-component mark-to-ligature, cursive attachment, distance, vertical vkrn/vpal). All positioning is emitted with standard PDF text operators, so every reader renders identically

Producer-Side Complex Script Shaping

20+ scripts shaped on the producer side, driven by the font's own GSUB feature chain: Arabic (incl. Supplement / Extended-A / Extended-B), Syriac, Mongolian, N'Ko, Adlam, Hanifi Rohingya, Tibetan stacking, Devanagari and the Indic family, Javanese, Thai / Lao mark ordering, Hebrew vowel ordering, Khmer, Myanmar, Tai Viet, Meetei Mayek. Output carries full /ToUnicode reverse mapping so copy / paste recovers the original codepoints

In-Process Signing Stack

ASN.1, RSA, AES, PBES2 PKCS#12 unwrapping with AES-128 / AES-192 / AES-256 CBC and HMAC-SHA-1 / SHA-256 / SHA-384 / SHA-512 PBKDF2 profiles, legacy PBE-SHA1-3DES PFX unwrapping, and CMS SignedData (RFC 5652) are handled inside HotPDF. SignPDFWithPFX signs RSA and ECDSA identities through native code and uses optional OpenSSL 3 libcrypto for Ed25519 or Ed448 PureEdDSA; multi-identity PFX files expose deterministic localKeyId selection and automatically embed the matching available certificate chain with exact DER deduplication, CMS signers can use issuer-and-serial or compact X.509 SubjectKeyIdentifier identities, multi-signer CMS containers preserve independent attributes, algorithms, certificates, providers, and validation results, PAdES signature-policy validation supports explicit policy identifiers, structured qualifiers, policy-document hashing, and caller pinning, and PAdES profile preflight reports every baseline or extended requirement with clause, object, and revision evidence, while loaded-signature verification supports RSA PKCS#1 v1.5, parameter-validated RSA-PSS, NIST and Brainpool ECDSA, Ed25519, Ed448, SHA-2, SHA3, and SHAKE256 digest policies, RFC 3161 timestamp tokens, caller-controlled certificate paths, offline OCSP or CRL validation, and fail-fast machine-readable diagnostics for inconsistent CMS digest algorithms

PAdES Long-Term Validation, End to End

PAdES B-B, B-T, B-LT, and B-LTA workflows are covered end to end with SHA-2 or SHA3 RFC 3161 signature and document timestamp verification, append-only archive timestamp renewal with caller-supplied DSS certificate, OCSP, and CRL evidence, exact evidence deduplication across revisions, DSS / VRI validation, caller-supplied trust anchors, Seed Value constraints, ISO 32001 extension declarations, and XAdES-in-PDF

Three-Axis Compliance + Preflight

Independent profile gating for PDF/A-1/-2/-3, PDF/X-1a/-3/-4, and PDF/UA-1 simultaneously - non-conformant calls raise diagnostic exceptions instead of silently writing non-compliant PDFs. CreatePreflightReport emits text / JSON / HTML / CSV / XML reports with stable rule IDs and locations, while CreatePreflightMRR adds deterministic bounded feature and validation plugins for custom CI policies

Multi-Gigabyte Direct File API

Operates on the PDF on disk without building the in-memory object graph. On a 2 GB document with 1.67 million objects: AES-256 encryption ~14 s, decryption ~16 s, full rewrite ~6 s; reading the page count of a 1.25 GB document takes milliseconds. Classic xref tables, XRef streams, hybrid-reference files, and incrementally updated documents all stay on the direct path

Bounded Damaged-PDF Recovery

Relocates intact xref tables or streams after a broken startxref, then falls back to a token-aware 1 MiB chunk scanner that rebuilds direct-object offsets with configurable byte and object budgets, newest-definition precedence, stream-body false-positive filtering, bounded byte-ranged confidence events, and mandatory full rewrite on save

CFF / OpenType-CFF / CID Subsetting

TrueType, OpenType-CFF, and CID-keyed CFF fonts are all subsettable while preserving glyph IDs for Type0 / Identity-H text. CJK documents that previously embedded 14 MB CID-keyed CFF programs now ship at 500 KB - 2 MB with no rendered glyphs lost; embedded font programs are always Flate-compressed, multi-page fonts embed once per document, and subset tags are deterministic for reproducible output. Optional compact TrueType subsets renumber the kept glyphs, so a few CJK characters need only a few kilobytes of font data, and a single CompressDocument switch combines them with Flate compression and object streams for the smallest output; loaded PDFs get the same lossless treatment through CompressLoadedDocument

Unified Runtime Logging Facade

THPDFLogger + the global HPDFLog give a runtime-toggleable diagnostic facade: Error / Warning / Info / Debug severity filtering, simultaneous file + OutputDebugString + console targets, thread-safe, 10 MB single-backup rollover, zero-overhead disabled fast-path. LoadFromFile, preflight reports, and the object-stream fallback path are already wired with structured diagnostics that can be toggled at runtime without rebuilding - an operational capability most competing components lack entirely

Four Report-Engine Adapters

Drop-in PDF backends for FastReport (TfrxHotPDFExport), QuickReport (TQRHotPDFExportFilter), ReportBuilder (TppHotPDFDevice), and DevExpress ExpressPrinting (covering cxGrid / cxRichEdit / cxScheduler / cxPivotGrid). Existing report layouts keep working - only the PDF emitter is swapped, with FastReport native text / image / shape / line / link / barcode output including picture clipping and frames, FastReport design-time palette registration, one-based page range filtering, ReportBuilder native text / vector / image / link / barcode output, and opt-in PDF/A and PDF/X conformance gates across all four report adapters

These are delivered capabilities, not roadmap promises. Every item above is implemented in the current library, compiles cleanly, and passes DUnitX tests plus end-to-end veraPDF validation. When evaluating competing components, ask for proof of full GSUB/GPOS LookupType coverage, an in-process PAdES B-LTA chain, and measured multi-gigabyte encryption throughput

Core Capabilities

  • Build the Linux portable core with native POSIX file mapping, PDF objects and content decoding, shared sfnt font data, compression, cryptography, and classic PDF serialisation; load classic tables, xref streams, hybrid references, and compressed object streams, extract Unicode page and Form text, and save independent AcroForm text values through the native headless document API; security, signatures, and rendering remain under integration
  • Compare contract wording by paragraphs and word or sentence tokens, retain two-sided source positions, detect clause reordering, exclude explicit boilerplate, and create HTML or annotated PDF review output
  • Recognise multiple barcodes in one raster, preserve identical payloads at separate locations, and sample rotated or projective ECC 200 Data Matrix modules with bounded work, four-corner geometry, cancellation, and atomic result publication
  • Create PDF files, add pages, draw text, draw vector graphics, and save to files or caller-owned streams
  • Convert and render XPS, EPUB, and CBZ through optional content-scored handlers with bounded archive and conversion work
  • Import HTML5 paged media with a tolerant DOM, print CSS cascade, tables, nested flex/grid business panels, wrapping rows, column spans, images and optional AcroForm controls in parallel boxes, callback-controlled sfnt font resources, and bounded parser, layout, resource, and decoded-image budgets
  • Import SVG as reusable Form XObjects with native geometry, CSS, gradients, masks, Base 14 text, placement-aware links, and strict parser and resource budgets
  • Paginate RichEdit and RTF content through the Windows formatting engine while preserving vector text, fonts, images, supported OLE presentations, and explicit resource budgets
  • Render native vector charts with line, bar, area, pie, and scatter series, automatic or manual axes, themes, legends, labels, bounded data, and optional PDF/UA Figure alternatives
  • Inspect layout visual diagnostics with bounded overlap detection, element paths, opt-in source mapping, native vector overlays, statistics, and synchronous preview callbacks
  • Control page text Y-coordinate semantics with THPDFPage.TextFromBaseLine, contain expert raw PDF operators with AppendScopedRawContent, and query wrapped text-box output with TextOutBoxEx / WideTextOutBoxEx
  • Handle Unicode text, right-to-left text, Identity-V vertical text, script-aware font fallback, unresolved-glyph diagnostics, embedded fonts, TrueType subsets, CFF/OpenType-CFF subsets, text metrics, and paragraphs
  • Apply the font's OpenType kerning, combining-mark positioning, cursive connection, complex-script shaping, and typography features during text output through opt-in shaping options
  • Add metadata, annotations, popup comments, hyperlinks, attachments, viewer preferences, all six standard page layouts including two-page cover spreads, print behaviour, layers, and page transitions
  • Import and write JPEG, bitmap, TIFF, JPEG2000, JBIG2, WMF, and EMF oriented image workflows, with encoded image XObject reuse, image-mask helpers, soft-mask transparency helpers, per-image JPEG quality overrides, per-call EMF/WMF rendering options, canvas layering control, redraw control, frame clipping, hatch-brush pattern preservation, null-pen and null-brush diagnostics, and opt-in automatic monochrome compression selection
  • Decode JPEG 2000 codestream tiles and resolution-of-interest regions through bounded native and crash-isolated paths, with automatic renderer resolution selection and budget-aware parallel tile reconstruction
  • Encode JBIG2 page batches with cross-page symbol training, one shared global dictionary, duplicate-page reuse, bounded input budgets, native fallback, and explicit compression telemetry; decode refinement and aggregate symbol dictionaries and refined text instances through the native Pascal fallback for both arithmetic and standard-Huffman streams, with retained contexts, bounded long-form reference tables, chained global dictionaries, and visible-tile decoding
  • Decode loaded CCITT Group 3 and Group 4 image streams with one- and two-dimensional rows, T.4/T.6 uncompressed extensions, strict EOFB recognition, complete DecodeParms handling, and bounded damaged-row resynchronisation
  • Load existing PDFs, copy pages, append pages, delete pages, merge documents, update information, edit annotation metadata and appearance, stamp pages, inspect, fill, or flatten forms, and transcode loaded streams with compression-level-aware Flate compression or predictor-safe decompression
  • Process multi-gigabyte PDFs through the Direct File API: read page counts, copy, rewrite document information, and apply or remove AES-256 protection file-to-file in seconds, without loading the document object graph
  • Apply passwords, AES-128, AES-256, PDF 2.0 AES-256 R6, public-key encryption, metadata-encryption control, protection flags, and permission control
  • Create AcroForm fields, automatic form appearance streams, signature fields, external CMS signing placeholders, and multi-signature incremental updates

Developer Advantages

  • Source-oriented integration keeps debugging and deployment under your control
  • Shared Delphi and C++Builder examples make it easier to verify behaviour in both language stacks
  • Static third-party C library integration keeps compression and imaging dependencies reproducible
  • Focused helper APIs cover PDF filters, bounded TIFF and PNG predictor reversal, strict LZW stream decoding, FlateDecode, CCITT, image masks, barcodes, font subsetting, and page content workflows
  • PDF version gates can automatically promote the output version or enforce strict PDF 1.3/1.4/1.5/1.6/1.7 conformance through StrictVersionLock
  • Ready-to-use Delphi and C++Builder package projects cover current RAD Studio generations, including 13.1 Florence

Recent Library Highlights

Lossless Content-Stream Editing

The THPDFContentStreamAST retains every whitespace byte, comment, delimiter, operand spelling, and inline-image payload whilst exposing linked operation and container nodes, bounded parsing, sorted edit overlays, and memory or streamed serialisation; content operator visitors add bounded inspect, measure, replace, delete, stop, and reject callbacks with deterministic state snapshots and validated atomic loaded-page updates; semantic comparison canonicalises numbers, strings, inline images, effective matrices, redundant setters, and graphics-state save/restore before exact event comparison; loaded-page text replacement changes only matched operand spans

Multi-Gigabyte Direct File API

The DAOpenFileReadOnly / DACopyFile / DASetDocumentInfo / DASaveAsFile family and the file-to-file EncryptFile / DecryptFile calls work on the PDF file directly instead of building the in-memory object graph. On a 2 GB benchmark document with 1.67 million objects, AES-256 encryption takes about 14 seconds, decryption about 16 seconds, and a full rewrite about 6 seconds; opening a 1.25 GB document for its page count takes milliseconds. Classic tables, cross-reference streams, hybrid-reference files, and incrementally updated documents all stay on the direct path

Preflight Reports

CreatePreflightReport and CreatePreflightReportWithProfile audit a PDF against the supported PDF/A, PDF/X, and PDF/UA checks and emit text, JSON, HTML, CSV, or XML reports. ValidatePDFWithPluginBundle combines the same built-in policies with bounded trusted feature and rule plugins in one deterministic XML MRR

Loaded-Document Form Toolkit

FDF file and stream exchange and XFDF multi-value exchange preserve separate selected items in multi-select choice fields, including option values containing line breaks, and rebuild selection indices when importing

HasFormFields and FormFieldExists answer form questions about a loaded PDF before touching it, loaded field creation rejects duplicate root names before registering widgets, field values can be read and written by index or name, and FlattenFormFields burns interactive AcroForm fields into page content and reports how many fields it flattened - alongside XFA-to-AcroForm flattening that keeps nested, wrapped, fixed-column, and auto-column table XFA forms usable in any reader

In-Process PFX / PKCS#12 Signing

THotPDF.SignPDFWithPFX(InputPDF, OutputPDF, PFXFile, Password) signs an existing placeholder PDF in a single call. File, stream, external-signer, and provider workflows select SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-384, SHA3-512, or the Ed448-required SHAKE256 512-bit digest, copy with bounded 256 KB buffers, seek-patch fixed-width /ByteRange and /Contents fields, and support same-stream signing without retaining a complete second PDF in memory. The ASN.1, AES, and PBES2 PKCS#12 stack accepts RSA, named-curve ECDSA, Ed25519, and Ed448 private keys plus AES-128 / AES-192 / AES-256 CBC with HMAC-SHA-1 / SHA-256 / SHA-384 / SHA-512 PBKDF2; RSA and ECDSA signing use native paths, whilst Ed25519 and Ed448 signing uses optional OpenSSL 3 libcrypto. HPDFEnumeratePFXIdentities, HPDFParsePFXByLocalKeyID, and THPDFCMSSignOptions.PFXLocalKeyID select multi-identity credentials deterministically and carry their matching available certificate chain into CMS; inconsistent signer, container, key-length, signature-mechanism, or RFC 6211 algorithm identifiers fail before document hashing or provider work

PAdES Long-Term Validation

PAdES B-B, B-T, B-LT, and B-LTA workflows cover SHA-2 or SHA3 RFC 3161 timestamp creation and cryptographic verification, append-only archive timestamp renewal that extends the DSS before sealing the new revision, DSS / VRI long-term validation with offline certificate, OCSP, and CRL evidence, caller-controlled certificate paths, Seed Value constraints, and XAdES-in-PDF

PDF/A, PDF/X, and PDF/UA Conformance

HotPDF gates feature methods against PDF/A-1 / -2 / -3 / -4 / -4e / -4f, PDF/X-1a / -3 / -4, and PDF/UA-1 / -2 profiles, while PDF/A-4 generation runs a bounded object-graph validator before serialisation. Calls that would break the selected profile raise diagnostic exceptions instead of silently producing non-conformant PDFs

Third-Party Report Engine Adapters

Drop-in PDF backends for the four most common Delphi report engines: TfrxHotPDFExport (FastReport 4 / FastReport VCL, including native-object output for text, pictures, shapes, lines, links, and supported barcodes plus page range filtering, font embedding controls, password security, PDF/A or PDF/X gate opt-ins, and the frxHotPDFDesign design-time registration unit), TQRHotPDFExportFilter (QuickReport with PDF/A or PDF/X gate opt-ins), TppHotPDFDevice (ReportBuilder, including opt-in native draw-command output for text, vector primitives, images, links, supported barcodes, and PDF/A or PDF/X gate opt-ins), and dxHotPDFExportReportLinkToFile/Stream (DevExpress ExpressPrinting System covering cxGrid / cxRichEdit / cxScheduler / cxPivotGrid with PDF/A or PDF/X gate opt-ins). Existing reports keep working - only the PDF emitter is swapped

OpenType GPOS Positioning Engine

Opt-in text positioning driven by the font's own GPOS data: pair and contextual kerning for left-to-right and right-to-left text, mark-to-base, mark-to-mark, and per-ligature-component mark placement, cursive entry/exit alignment, distance positioning, and vertical kerning for vertical fonts. Positioning is emitted with standard PDF text operators, so every PDF reader renders the same result

Complex Script Shaping Coverage

Producer-side shaping renders correctly joined and reordered text for Arabic (including the Supplement, Extended-A, and Extended-B blocks), Syriac, Mongolian, N'Ko, Adlam, Hanifi Rohingya, Tibetan, Devanagari and the other Indic scripts, Javanese, Thai, Lao, Hebrew, Khmer, Myanmar, Tai Viet, and Meetei Mayek without relying on a viewer-side shaper. Each script is an opt-in switch, so existing output stays byte-identical until enabled, and copy/paste recovers the original characters

Automatic OpenType Typography Features

Optional shaping switches apply the font's standard, discretionary, and historical ligatures, small capitals, oldstyle / lining / proportional / tabular figures, superscripts, subscripts, ordinals, fractions, scientific inferiors, numerators, denominators, stylistic and contextual alternates, localised forms, case-sensitive forms, slashed zero, and vertical alternates automatically during text output, with text extraction mapped back to the source characters

Compact Font Output

Embedded font programs are always Flate-compressed, a font used on several pages is embedded once for the whole document, and subset tags are derived deterministically from the glyphs actually used so repeated runs produce identical output. An optional mode writes plain-ASCII text with standard fonts as compact unembedded WinAnsi text, shrinking a page of plain text from hundreds of kilobytes to a few kilobytes

Multi-Script Producer Shaping

Producer-side shaping folds Unicode-input runs into their Presentation Forms before PDF text emission. Arabic covers the full U+0672-06D5 joining-class table plus 40+ Forms-A mappings, with automatic ligature post-pass for LAM-ALEF, YEH-HAMZA + vowels (U+FBEA-FBFB), Allah (U+FDF2), and Bismillah (U+FDFD). Capability surfaces for Syriac (GetSyriacJoiningClass), Mongolian (GetMongolianJoiningClass), and Devanagari (GetDevanagariCategory / ApplyDevanagariReorder) let callers drive non-Arabic complex scripts through the same GSUB engine

Automatic Shaping Pipeline (Phase 8)

The opt-in ShapingFeatures property + THPDFShapingFeature enum (sfArabicGSUB / sfCursiveAttachment / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping) elevates the OpenType GSUB and GPOS engines into an automatic producer-side pipeline. Native Arabic init / medi / fina / isol, rlig, calt, rclt, GPOS cursive attachment, Latin liga / clig, and Devanagari Indic reordering happen as text is emitted, with full /ToUnicode reverse-mapping for copy / paste correctness

Latin Standard Ligatures + PUA Synthetic Codepoint

Latin Standard Ligatures (ff / fi / fl / ffi / ffl / ſt / st via U+FB00-FB06) are emitted automatically through ApplyLatinLigatureRefinement when sfStandardLigatures is enabled. For GSUB substitute GIDs without a natural Unicode codepoint - Devanagari cluster shapes, stylistic alternates, CJK ideographic variation sequences - AssignSyntheticCodepointForGID allocates a Private-Use-Area (U+E000-F8FF) codepoint with mirrored /CIDToGIDMap + /W + /ToUnicode integration

OpenType GSUB Substitution Engine

Every OpenType GSUB LookupType 1-8 (Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual) is implemented as a capability-only query surface (GetSingleSubstituteGlyph, ApplyLigatureSubstitution, ApplyContextualSubst, ApplyReverseChainedContextualSubst, and the Multiple / Alternate / Script / LangSys / Feature helpers). MarkUnicodeGlyphUsed pulls every substitute glyph into the TTF subsetter so embedded font subsets stay self-contained

Page Actions + XFA Forms + AcroForm Triggers + Unicode /DR

PDF document lifecycle additional actions expose catalogue /AA /WC, /AA /WS, /AA /DS, /AA /WP, and /AA /DP triggers through builder-based set and clear helpers, while page-level additional actions expose /AA /O open and /AA /C close triggers through THPDFPage and page-indexed THotPDF wrappers. PDF 1.7 §12.7.6 / §12.7.8 XFA container packets ride alongside (or instead of) static /Fields via AddXFAPacket. The full AcroForm form-field trigger family (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) is exposed as wrapper methods, widget mouse, focus, and visibility triggers (/E, /X, /D, /U, /Fo, /Bl, /PO, /PC, /PV, /PI) can now be set by field name, and matching clear helpers keep trigger dictionaries easy to replace. THPDFActionBuilder spans document lifecycle, page, form, annotation, layer, multimedia, transition, 3D-view, and GoToE embedded-navigation actions, while the loaded action graph API safely inspects all 18 standard action types and ordered /Next chains

Page Labels + Article Threads

THotPDF.SetPageLabel and its style-specific helpers write catalogue /PageLabels number-tree entries for decimal, roman, and alphabetic page numbering, while RegisterArticleThread plus THPDFPage.AddArticleBead emits article thread dictionaries and bead chains for guided reader navigation

Font Subsetting and CJK PDFs

THotPDF.EnableFontSubsetting subsets TrueType, OpenType-CFF, CID-keyed CFF, and CFF2 fonts while preserving glyph IDs for Type0 / Identity-H text. TrueType gvar outlines and phantom points, CFF2 blends, mapped axes, and horizontal, vertical, and global metrics are baked into a static checksum-correct sfnt before embedding

Certification Signatures and Field Locks

AddCertificationSignatureField, ConfigureCertificationSignature, and AttachSignatureFieldLock create DocMDP and FieldMDP permission structures with Catalogue linkage and field-lock policies, whilst GetLoadedSignaturePermissions inspects every standard transform method including UR/UR3 usage rights and Identity scopes, AnalyzeLoadedSignatureRevisions classifies later validation, form, signature, annotation, embedded-file, and other changes against the policies reconstructed from the signed snapshot, and SaveIncrementalUpdateAuthenticated authenticates each controlling signature before atomically publishing an allowed revision

Advanced PDF Feature Coverage

  • Version-specific PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7 + selected PDF 2.0 API gates for Catalogue, ViewerPreferences, annotations, JavaScript, Type0 fonts, ToUnicode maps, transparency, layers, and encryption
  • PDF/A-1 / -2 / -3 / -4 / -4e / -4f, PDF/X-1a / -3 / -4, and PDF/UA-1 / -2 conformance gates plus bounded PDF/A-4 structural validation that refuse non-conformant feature calls or output instead of silently violating the profile
  • Tagged PDF structure trees with role maps, StructParents, ParentTree output, and structure elements for accessibility-oriented workflows
  • OutputIntents, ICC profiles, page boxes, rotation, UserUnit, Tabs order, tiling patterns, ExtGState alpha, blend modes, colour-managed luminosity soft masks across ICCBased, Lab, Separation and DeviceN content, executable Type 1 / 5 / 6 / 10 / 16 halftones with independent colour-component screens, compact cached threshold arrays, complete transfer-function arrays, cached sampled functions with every standard packed depth and interpolation order, and black-generation / under-colour-removal Function references
  • Inline images, multi-stop axial gradients, radial gradients, free-form and lattice-form Gouraud-shaded triangle meshes, adaptively tessellated Coons and tensor-product patch meshes, soft-mask images for PNG-style per-pixel alpha, and reusable pattern fills
  • Named destinations, page thumbnails, page-level outline styling (colour, bold, italic), document-level named JavaScript registry, and the full Line / PolyLine / Polygon extras family (caption, line endings, intent, border effect)
  • Producer-side Arabic shaping covers the full U+0672-06D5 joining-class table plus 40+ static Arabic Presentation Forms-A mappings, with post-pass ligature folding for LAM-ALEF, YEH-HAMZA + vowel pairs (U+FBEA-FBFB), the Allah ligature (U+FDF2), and the Bismillah phrase (U+FDFD)
  • Multi-script shaping capability surfaces: Syriac (GetSyriacJoiningClass / GetSyriacPosition), Mongolian (GetMongolianJoiningClass / GetMongolianPosition), Devanagari (GetDevanagariCategory / ApplyDevanagariReorder) - drive the same GSUB engine for complex non-Arabic scripts
  • Automatic Phase 8 shaping pipeline driven by the ShapingFeatures opt-in property: sfArabicGSUB applies native Arabic init / medi / fina / isol plus rlig / calt / rclt to emit font-specific contextual glyph IDs, sfCursiveAttachment applies GPOS cursive anchors, sfStandardLigatures / sfContextualLigatures emit Latin liga / clig (FB00-FB06: ff / fi / fl / ffi / ffl / ſt / st), and sfIndicShaping reorders Devanagari clusters (Repha + pre-base I-matra) before emission
  • Feature-complete OpenType GSUB substitution engine (LookupType 1-8) with Script / LangSys selection, TTF subsetter closure (MarkUnicodeGlyphUsed), Cmap format 12 SMP coverage, GDEF parsing, ToUnicode CMap auto-emission with 35 ligature reverse-mapping entries, and a GetUnicodeGlyphForCodepoint lookup for callers driving emission glyph-by-glyph
  • PUA synthetic codepoint emit (AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID) lets producers emit any GSUB substitute GID (Devanagari cluster shapes, stylistic alternates, CJK ideographic variation sequences) through U+E000-F8FF Private Use Area with mirrored /CIDToGIDMap + /W integration. GetCodepointAdvance exposes the cached /W em-fraction for wrap calculations
  • OpenType GPOS positioning engine behind opt-in shaping switches: pair, single, and contextual (Context / Chained Context) kerning for both left-to-right and right-to-left text, mark-to-base / mark-to-mark / mark-to-ligature placement with per-component accuracy on ligatures, cursive entry-exit attachment, distance positioning, and vkrn / vpal vertical kerning applied to vertical text output
  • Producer-side complex-script shaping for Arabic Supplement / Extended-A / Extended-B, Syriac, Mongolian, N'Ko, Adlam, Hanifi Rohingya, Tibetan stacking, the Indic script family through the font's Indic feature chain, Javanese, Thai / Lao mark ordering, Hebrew vowel-point ordering, Khmer, Myanmar, Tai Viet, and Meetei Mayek, each behind its own opt-in switch with ToUnicode reverse mapping for copy / paste
  • Automatic OpenType typography features during text output: liga / clig / dlig / hlig ligatures, smcp / c2sc small capitals, onum / lnum / pnum / tnum figure styles, sups / subs / ordn / frac / sinf / numr / dnom, salt stylistic alternates, calt / rclt contextual alternates, locl localised forms, case forms, zero slashed zero, and vert / vrt2 vertical alternates, with chained substitutions resolved back to the source text in the ToUnicode CMap
  • Font embedding optimisation: always-compressed embedded font programs, one embedded copy per document for fonts used on several pages, deterministic subset tags for reproducible output, and an optional unembedded WinAnsi mode for plain-ASCII text with standard fonts
  • AcroForm text fields, list boxes, combo boxes, check boxes, radio buttons, push-button actions (including extended Named / Hide / Show / ImportData / SubmitForm with user-controlled /Flags and THPDFActionBuilder advanced action chains), signature fields, and generated appearance streams (multi-line + comb + rich-text Tx + CID-font /AP)
  • AcroForm form-field trigger family (/AA /K Keystroke, /F Format, /V Validate, /C Calculate) with one wrapper method per JavaScript trigger, a bounded typed evaluator for conditional, string, date, and array expressions, named THPDFActionBuilder set and clear helpers, field-name wrappers for widget mouse and focus triggers (/E, /X, /D, /U, /Fo, /Bl), multi-Unicode /DR font registration via RegisterAcroFormFont, XFA (XML Forms Architecture) container support (PDF 1.7 §12.7.6 / §12.7.8) with AddXFAPacket / ClearXFAPackets / XFAPacketCount, exact-byte-preserving XDP-stream and packet-array DOM queries and edits with bounded canonical namespace, CDATA, and entity serialisation, and PDF/A + PDF/X compliance gates, plus XFA-to-AcroForm flattening (ApplyXFAAsAcroForm for raw XDP bytes, FlattenLoadedXFA for a loaded PDF's embedded form) that turns static XFA into native AcroForm fields, styling, flow-measured nested layout="tb", wrapped layout="lr-tb", fixed-column and auto-column table-row text fields, and page graphics so the form stays visible and fillable in readers without an XFA engine
  • Generated-document navigation metadata: catalogue /PageLabels ranges through THPDFPageLabelStyle, SetPageLabel, and the decimal / roman / alphabetic helper methods, plus catalogue /Threads and per-page article beads through RegisterArticleThread and THPDFPage.AddArticleBead
  • Catalogue document lifecycle /AA /WC, /AA /WS, /AA /DS, /AA /WP, and /AA /DP additional actions through THotPDF helpers, plus page-level /AA /O and /AA /C additional actions through THPDFPage.SetPageAdditionalAction and THotPDF.SetPageAdditionalAction, including THPDFActionBuilder /Next chains and clear helpers
  • PDF/UA-1 tagged-PDF accessibility surface: §14.8.4 marked-content sequence properties on BeginTaggedContent (/Lang / /Alt / /ActualText / /E), structure-element attribute setters (/Lang / /E / /T), Table 333 standard structure-type enum (THPDFStandardStructureType) plus an AddStructureElement typed overload
  • Annotation support for highlights, free text, links, file attachments, popups, redaction, watermark, rich media, 3D / U3D / PRC, border styles, and linked comment popups
  • Standard password security, AES-128 / AES-256 security handlers, PDF 2.0 R6 hashing, certificate-recipient public-key encryption through caller-supplied PKCS#7 envelopes, explicit clearing of password copies, derived file and object keys, cached AES schedules, PKCS#12 plaintext, and streamed plaintext scratch on every success or failure path, and binary-safe handling of non-ASCII colorant / font names
  • PAdES B-B, B-T, B-LT, and B-LTA digital signatures with SHA-2 or SHA3 RFC 3161 timestamp verification, append-only LTA renewal with caller-supplied DSS certificate and revocation evidence, cross-revision evidence deduplication, DSS / VRI validation, caller-supplied trust anchors, Seed Value constraints, ISO 32001 declarations, and XAdES-in-PDF
  • In-process PFX / PKCS#12 signing: the library-bundled ASN.1, RSA, AES, PBES2 AES-128 / AES-192 / AES-256 CBC and HMAC-SHA-1 / SHA-256 / SHA-384 / SHA-512 PBKDF2 profiles, legacy PBE-SHA1-3DES PFX, deterministic multi-identity localKeyId selection, matching available certificate-chain preservation, and CMS SignedData stack signs RSA and ECDSA natively or Ed25519 and Ed448 through optional OpenSSL 3 libcrypto
  • Drop-in PDF backends for FastReport 4 / FastReport VCL, QuickReport, ReportBuilder, and DevExpress ExpressPrinting System, plus a VCL TDBGrid table exporter with PDF/A and PDF/X gate opt-ins

High-Performance Compression and Imaging Stack

Current HotPDF builds use zlib-ng in zlib-compatible mode for the bundled Flate backend. Page streams, embedded font streams, ToUnicode CMaps, Flate image streams, TIFF-related output, and FlateDecode helpers are routed through the HotPDF zlib layer

The Win64x and diagnostic MSVC Win64 zlib-ng builds include runtime CPU dispatch for SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ, and AVX2 paths with generic fallbacks retained. Win32 remains on the generic zlib-ng OMF object set through bcc32c, while Win32 JPEG and TIFF objects continue to use the classic bcc32 OMF path

Standard JPEG workflows use the bundled libjpeg-turbo 3.1.90 object set through the libjpeg-compatible API exposed by HPDFJpeg.pas. The Win32, Win64, and Win64x native builds now include the relevant NASM SIMD object sets, and the same native JPEG backend is available to the TIFF integration layer for JPEG-compressed TIFF handling

The C runtime bridge in HPDFCLibs.pas now resolves malloc, free, realloc, calloc, memcpy, memmove, and memset through one Pascal-facing layer, with 32-byte aligned allocation for SIMD-friendly native buffers

The repository includes reproducible object build scripts: Lib\thirdparty\build-bcc32.bat, Lib\thirdparty\build-bcc64x.bat, and Lib\thirdparty\build-vc64.bat for the full native C library set, plus zlib-ng-only scripts for focused compression rebuilds

Quick Delphi Example

program HelloHotPDF;

uses
  System.SysUtils,
  HPDFDoc;

var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.AutoLaunch := False;
    PDF.FileName := 'HelloHotPDF.pdf';
    PDF.Compression := cmFlateDecode;
    PDF.EnableFontSubsetting := True;
    PDF.BeginDoc;
    PDF.CurrentPage.SetFont('Arial', [], 18);
    PDF.CurrentPage.TextOut(50, 50, 0, 'Hello HotPDF');
    PDF.EndDoc;
  finally
    PDF.Free;
  end;
end.

Package Contents

Typical Use Cases