PDFium Delphi Component Docs

PAdES signing · PDF 2.0 encryption · six ISO standards · Delphi / C++Builder / Lazarus

Everything a rendering engine cannot do, written in Object Pascal

An engine draws pages and reads structures. It cannot sign a document, write encryption, validate a PDF standard, or emit a linearized or incremental revision. PDFium Delphi Component implements all of that on top of PDFium: more than 62,000 lines across 36 units that have no counterpart in the engine API, plus the viewer and accessible-reader architecture — and every line ships as source

Read the full overview Browse the feature catalog

What you get beyond the engine

Every point below is a delivered capability you can verify in the API reference and demos

Digital signatures, not signature reading

The engine can report that a signature dictionary exists. This library creates one: PAdES baseline B-B, B-T, B-LT and B-LTA per ETSI EN 319 142-1, CMS / CAdES SignedData to RFC 5652, RFC 3161 time-stamp requests, Document Security Store injection, archive time-stamps, and certificate-chain trust validation. Remote and HSM signing split the operation so the private key never has to reach the workstation

SignPades / ValidatePadesTrust / PreparePadesRemoteSignature

Encryption you write, not just open

ISO 32000-2 AES-256 with the R6 key derivation of algorithm 2.B, the full stream and string encryption sweep, ISO/TS 32003 AES-GCM and ISO/TS 32004 PDF MAC tokens. The AES, SHA-2, SHA-3, HMAC and ASN.1 primitives are pure Object Pascal, verified against the published FIPS test vectors — no external C library enters your deployment or your security review

SaveAsEncrypted; FPdfAes / FPdfSha512 / FPdfAsn1

A PDF writer the engine does not have

The engine offers one sequential whole-file save. This library writes its own revisions on top of it: linearized Fast Web View with Annex F hint tables, object-stream and xref-stream packing, and dirty-object incremental revisions that preserve the previous output byte for byte. Damaged files get strict, compatible and recovery load policies with structured diagnostics instead of silent repair

SaveAsLinearized / SaveAsObjectStream / BeginIncrementalSave / SaveAsRepaired

Content extraction beyond plain text

GetStructuredText builds a page / block / line / styled-span hierarchy from character geometry and Tagged PDF semantics. ExtractTables detects bordered and whitespace-aligned tables, preserves merged spans and emits CSV or JSON. BuildReflowDocument turns a fixed-layout PDF into semantic HTML. XFDF and FDF exchange form data and 18 annotation subtypes — formats the engine exposes no API for at all

ExtractTables / BuildReflowDocument / ExportXFDF

Broadest IDE coverage in its class

Delphi / C++Builder (RAD Studio XE5 through 13.1 Florence) plus Lazarus / Free Pascal 3.8+, Win32 and Win64. Three IDE families share the same fixture PDFs and regression suites

1257 Pascal + 515 C++ test cases, byte-aligned

Full PDF standards spectrum

PDF/A-1b output (SaveAsPdfA) + validation (ValidatePdfA), plus PDF/UA, PDF/E, PDF/X, PDF/R and PDF/VT validators with clause-level result codes, marker injection and version-compliance gating. PDF/A covers ISO 19005 parts 1 to 4, PDF/X reaches X-6, PDF/VT includes VT-2s stream packaging

Dedicated units FPdfPdfa/Pdfua/Pdfe/Pdfx/Pdfr/Pdfvt.pas

Accessibility read-aloud / low-vision

TPdfReadingSession orchestrates read-aloud for host TTS engines (sentence-level reading units, word-level highlighting, spoken-text mapping); plus InvertPdfBitmap, GrayscalePdfBitmap, DuotonePdfBitmap low-vision transforms and live night-duotone viewing

An accessibility layer most wrappers entirely lack

Zero-copy + cancellable progressive rendering

The render path writes PDFium output directly into the destination TBitmap DIB buffer, skipping a per-frame full-page pixel copy; RenderPageProgressive polls a cancellation token between iterations and can be interrupted mid-render

Saves one width×height×4-byte copy per frame at high DPI

On-demand streaming for multi-gigabyte PDFs

Via LoadCustomDocument's on-demand TStream adapter, PDFium reads by the block — multi-gigabyte, remote or database-backed documents load without an in-memory copy, and a usable first view is reached almost immediately

2.x GB documents: near-instant first view

Three components + 33 shared demos

TPdf (document engine), TPdfView (interactive viewer), TPdfThumbnailView (thumbnail nav); 33 COMMON demos shared across three IDEs, covering viewing, search, form fill, merge/split, batch export, printing, security audit, preflight reports and more

PDFViewer / PreflightReport / SecurityAudit / StandardsLab etc.

Security-first defaults

Link-action allow-list (LinkOptions), launch actions disabled by default, and a SecurityAudit demo for auditing risk surfaces — secure out of the box rather than defaulting to dangerous actions open

Suited to security-sensitive finance / healthcare deployments

Source included · royalty-free · long-term support

Ships Pascal source, no runtime royalties, long-term maintenance. Bundles Win32/Win64 pdfium.dll and pdfium.v8.dll (V8/XFA-enabled), with optional Skia render hooks

No per-deployment fees

The evidence

3IDE families: Delphi / C++Builder / Lazarus
6+PDF standards: A / UA / E / X / R / VT
33three-IDE shared COMMON demos
1770+Pascal + C++ regression test cases

Who should choose PDFium Delphi Component

Document viewers / readers

Embedded PDF viewers needing production-grade rendering quality and interaction (text selection, search highlight, links, zoom, continuous two-page)

Accessibility / assistive tech

Read-aloud orchestration and low-vision transforms for visually impaired users — a layer most PDF wrappers don't have at all

Compliance / preflight toolchains

Needing PDF/A generation and validation, PDF/UA accessibility, version gating, and CI-friendly preflight reports

Huge / remote documents

Multi-gigabyte or database-backed PDFs that must load on demand rather than be held fully in memory

Cross-IDE teams

Teams using Delphi, C++Builder and Lazarus at once — one component set, the same fixtures, the same demos

Security-sensitive deployments

Finance, healthcare and government scenarios with strict control over link / launch actions

Render a page in a few lines

No hand-written C interop — straight native Pascal components:

uses PDFium;

var
  Pdf: TPdf;
  Bmp: TBitmap;
begin
  Pdf := TPdf.Create(nil);
  try
    Pdf.FileName := 'report.pdf';
    Pdf.Active := True;
    Pdf.PageNumber := 0;              // pages are zero-based

    Bmp := Pdf.RenderPage(0, 0,
      Round(PointsToPixels(Pdf.PageWidth, 150)),
      Round(PointsToPixels(Pdf.PageHeight, 150)));
    try
      Bmp.SaveToFile('page1.bmp');
    finally
      Bmp.Free;
    end;
  finally
    Pdf.Free;
  end;
end;

Next steps

Start with the product overview and Quick Start, browse the full feature catalog and Examples, or read the Release Notes for the latest deliveries