Reading PDF Font Properties with PDFium Component in Delphi
Inspect the fonts inside a PDF from Delphi with PDFium Component: read a glyph's family name, base name, weight, italic angle, and whether the face is embedded
Software Development Blog
PDFium Component tutorials for rendering, viewing, and processing PDFs in Delphi
Inspect the fonts inside a PDF from Delphi with PDFium Component: read a glyph's family name, base name, weight, italic angle, and whether the face is embedded
Before you trust a PDF, enumerate its risk surface. See how PDFium reads document JavaScript, launch actions and signature permissions for an audit in Delphi
Assemble a PDF viewer in Delphi with PDFium Component: connect TPdf to TPdfView, load and render a document, then add paging, zoom, and fit navigation
Merge a folder of scanned images into one PDF with PDFium Component in Delphi: create the document, add one page per image, scale each image, and save
Render PDF pages as JPEG images in Delphi with PDFium Component: convert DPI to pixel dimensions, draw each page to a bitmap, and encode it with TJPEGImage
Create a PDF from scratch in Delphi with PDFium Component using CreateDocument, AddPage, AddText, and CreatePath while handling coordinates and embedded fonts
Delphi highlight annotations need QuadPoints in Z order, and FPDFAnnot_SetAttachmentPoints returns false on a new PDFium annotation until Append adds a slot
Diagnose pdfium.dll load failures in Delphi: fix the 32/64-bit ERROR_BAD_EXE_FORMAT 193, spot a stale DLL, and load the PDFium Component safely across threads
Detect XFA forms in Delphi and extract the template, datasets and config packets as raw XML with PDFium Component — static packet reading needs no V8 runtime
A German locale turns 70.5 into 70,5 and breaks hand-built XFDF. PDFium Component ExportXFDF and ImportXFDF keep the period for Delphi fields and annotations
Extract embedded PDF images in Delphi with PDFium Component: read BitmapCount, fetch each Bitmap[], handle silent open failures, and save JPEG or BMP output
Extract PDF text in Delphi with PDFium Component using raw Character[] glyph access, structured ReadablePageContent, and a guard for silent Active failures
Harden a Pascal binding over PDFium in Delphi: cdecl callbacks, size_t width on FPC Win64, exceptions at the C boundary, handle ownership and managed records
Read PDF signatures with the PDFium Component in Delphi and Lazarus: inspect SubFilter, ByteRange and CMS, then detect PAdES B-B to B-LTA baseline levels
Add long-term PAdES signatures in Delphi with the PDFium Component: RFC 3161 timestamps, DSS validation stores and DocTimeStamps for B-T, B-LT and B-LTA
Merged PDF in reverse order or missing pages? PDFium Component ImportPages positions, range strings, MergeFiles error reports and fillable form fields in Delphi
Lay several PDF pages onto one sheet, reorder pages in place, or pull a subset. See PDFium's imposition and page-move APIs in Delphi and the handle they return
Why substring key lookups corrupt PDF dictionary parsing in Delphi: whole name token matching per ISO 32000-1 and resource caps against hostile PDFs
Make a Delphi PDF viewer work with screen readers: tagged reading order extraction, word-level TTS highlighting, and honest fallbacks for untagged PDFs
How PDFiumPas grafts AcroForm fields between PDF documents in Delphi: GraftPdfAcroForm, widget page remapping, graft map transactions and fail closed limits
PDFiumPas picks box, bilinear, bicubic or Lanczos kernels when downsampling PDF images in Delphi, with alpha-aware math and a strict working-memory budget
Why an off-by-one in the AES-256 R6 hash round counter makes some encrypted PDFs reject the right password, and how to catch it with a cross-implementation test
Round-trip PDF annotations in Delphi with PDFium Component without adding empty rollover or down appearances, and keep the /AP dictionary PDF/A safe on write
Build a PDF annotation review panel in Delphi: index markup by page, survive appearance-stream vetoes, and recolor or delete annotations without ghosts
A Delphi import writing PDF form fields one by one can stop halfway. PDFium Component commits typed field values across pages as one all-or-nothing batch
Axial and radial PDF gradients in Delphi with PDFium Component: integer ShadingType, multi-stop stitching, TargetRect clips and why a bare sh paints nothing
Move long PDF renders off the UI thread with cancellable futures in Delphi, while managing worker lifetime, cancellation, completion, and safe UI updates
How the PDFium Delphi component renders huge pages in horizontal bands, why a negative Y offset preserves full-page geometry, and how PNG and TIFF stream out
A slow page render should not freeze the UI or run to the end. See how PDFium's progressive rendering becomes cancellable via IFSDK_PAUSE in Delphi
Checkboxes flatten unchecked when /V is read from the widget annotation, because /V belongs to the parent field dictionary per ISO 32000-1. Fix it in Delphi
PDFium Component writes glyph-level text with a CID Type 2 font in Delphi, generating CID-to-GID and ToUnicode maps so shaped text stays extractable
PDFium Component sorts CMS signedAttrs as a DER SET OF per X.690 11.6, since a same-origin sign-and-verify test cannot catch what re-encoding validators reject
Word exports end tables at the margin, so a page-edge test never links them. PDFium Component checks body text and caption rows to chain PDF tables in Delphi
PDFium exposes no call to put page content on a layer. PDFium Component adds new OCGs, OCMD visibility rules and /OC-gated Form XObjects to a PDF from Delphi
The ordered search chain the PDFium component uses to find its native library, and why one capital letter in an FPC target macro can break the lookup on Linux
Four hidden gaps between Delphi and FPC/Lazarus hit the same PDFium code: record temporary lifetime, range checks, E2010 TBytes casts, and AnsiString byte loss
PDFium Component locates a nested CMS TLV from its content length, because DER length octets cannot be walked backwards once a length leaves the short form
Why a PDF form field write in Delphi succeeds yet reads back the old value: direct AcroForm dictionaries, duplicate widgets and one indirect owner per field
Why a signature widget /P back-link must not count as ownership in DocMDP P=3 checks, how PDFium Component models ownership, and how to fail closed in Delphi
How dynamic XFA repagination affects page counts, input hit areas and text selection in a Delphi PDF viewer, and how PDFium Component keeps them in step
PDFium Component adds document-level undo, redo and crash recovery to PDF editing in Delphi using verified snapshots and compact bidirectional deltas
How PDFium Component loads an embedded PDF straight from a TBytes byte range in Delphi, with overflow safe bounds checks and borrowed buffer lifetime rules
FPDFText_GetUnicode returns a full 32-bit code point but WideChar holds 16 bits. How to extract emoji and rare CJK ideographs correctly with PDFium in Delphi
The PDFium Component in Delphi refuses to patch an encrypted PDF with plaintext markers or PAdES signatures, per ISO 32000-1 7.5.6 on incremental updates
How the PDFium component authenticates a European trusted list before parsing it, and records qualified status separately from ordinary chain trust
A %PDF-1.4 header can hide PDF 1.7 content. PDFium Component SaveAs aligns catalog /Version, walks the xref chain and checks Adobe extension levels in Delphi
How WaitForIdle and padSynchronize replies deadlock the Delphi main thread in PDFium Component, plus queue capacity, shutdown order and TPdf ownership limits
A linearized PDF lets a viewer show page one early. How PDFium Component TPdf.SaveAsLinearized groups objects and writes Annex F hint tables in Delphi
FillChar on a Delphi or FPC function result zeroes a managed record without releasing its strings, leaking memory each time the routine runs in a loop
PDFium Component turns thin filled rectangles from Word and browser exports into table rulings, snaps coordinates within 4pt and reads form XObjects in Delphi
Why filled PDF forms look blank in Acrobat and how to fix it: FormFill setup, keyboard field traversal, and GenerateFormAppearances in Delphi viewers
PDFium Component for Delphi follows the page /Tabs policy in form navigation: row, column and structure order, page rotation, reading direction and fallbacks
XFA-enabled pdfium.v8.dll rejects FPDF_FORMFILLINFO version 1 even for plain AcroForm PDFs, so PDFium Component always passes version 2 and gates XFA hooks
A three-layer print loop in a Delphi and FPC PDF viewer keeps rendering after Cancel is clicked because Free Pascal locks the for loop bound at entry
Why RTL Random without Randomize repeats PDF encryption keys, salts and GCM nonces across FPC processes, how PDFiumPas uses /dev/urandom, and how to test it
A non-ASCII PDF title can become invalid UTF-8 inside the XMP packet on Free Pascal. Here is the string codepage rule behind it and the SetCodePage technique
A flipped bit in AES-CBC PDF ciphertext still decrypts; ISO/TS 32003 AESV4-GCM rejects it. PDFium Component R7 encryption and PDF MAC checks in Delphi
A P-256 key signing SHA-512 verifies yet breaks ISO/TS 32002. How the PDFium Component checks ECDSA curves, digest pairing and Ed25519/Ed448 encoding in Delphi
Port a Delphi PDF viewer to Lazarus and Free Pascal: string encoding traps, runtime form construction, PDFium binary loading, and TTS beyond Windows
PDFium VCL posts RFC 3161 timestamp queries through libcurl on non-Windows targets, with eight bound symbols and two settings that decide whether it hangs
Why Brotli or per-document isolates in FPDF_LIBRARY_CONFIG can swap Skia for AGG, why absent backends abort the process, and how PDFium Component checks first
Add dark mode and low-vision reading modes to a Delphi PDF viewer: post-render inversion, two kinds of grayscale, and overlay colors that stay visible
PDFium VCL binds Security framework symbols at runtime so a macOS Keychain signing backend compiles everywhere and names every symbol it could not resolve
Marked content is the BDC and EMC pair behind tagged PDF. How PDFium Component reads, writes and shares marks, typed property lists and MCIDs in Delphi
How the PDF row-vector convention makes Multiply append and PreMultiply prepend in Delphi, why PreTranslate needs the linear part, and how pivot helpers compose
PDFium is unsafe across the whole module, not per document. See how PDFium Component for Delphi serializes batch validation and renders pages in parallel safely
How PDFium Component rebuilds ISO 32000 name trees and number trees in Delphi: balanced nodes, correct /Limits, stable root identity and verified saves
Learn why FlateDecode alone leaves PDF object streams differenced instead of raw, and how PDFiumPas applies PNG and TIFF Predictor reconstruction in Delphi
PDFium Component adds an invisible OCR text layer to scanned PDFs from Delphi, mapping word quads through device-to-page transforms without touching images
PDFium VCL fetches missing intermediate certificates via AIA and CRLs via distribution points on its OpenSSL backend, under hard budgets that never grant trust
PDFium VCL plugs an OpenSSL CMS verifier into PAdES validation, and three OpenSSL behaviors will silently produce a wrong verdict if you do not handle them
How PDFiumPas SaveAsRedacted splits partially covered text, rectangular paths and axis-aligned images at operator level, then prunes unreferenced resources
A layer moved into /OFF still renders when its Usage dictionary says ON. PDFium Component reads Usage, Intent and /AS rules in Delphi and saves verified layers
When pdfium.dll is older than the binding, one missing export can kill the load. How PDFium Component gates optional exports in Delphi and degrades safely
Deleted pages and repeated logos survive FPDF_SaveAsCopy. PDFium Component for Delphi drops orphans, merges duplicate resources and recompresses Flate streams
How PDFiumPas rewrites PDF outline items in Delphi after pages move or disappear: signed Count, sibling chains, ApplyPageMap and verified incremental saves
Why PDFium page object handles read old coordinates after FPDFPage_TransFormWithClip in Delphi, plus the reload order and getter sentinels that fix it
A few hundred bytes of PDF can demand an 80 MB xref table. PDFium Component caps recursion, tokens, objects, decoded bytes, ratio and time in one Delphi budget
Triage incoming PDFs in Delphi with PDFium Component: check Info dictionary and XMP metadata, spot encryption, JavaScript, and XFA, and route risky files early
Produce veraPDF-valid PDF/A archives in Delphi with PDFium Component: SaveAsPdfA, XMP and ICC OutputIntent injection, a/b/u conformance, and the pitfalls
Why a PDF/A file fails on container size limits or a symbolic TrueType /Encoding entry, and how PDFium Component reports both from Delphi without the DLL
PDF/A rejects Info and XMP metadata that differ in value or RDF shape. PDFium Component compares all eight mapped fields in Delphi and rewrites the XMP side
Build a PDF/A preflight checker in Delphi with PDFium Component: token-scan 29 validation issues, part-aware gating, object streams, no full content parse
Attach XML or CSV sources to PDF/A-3 output in Delphi with PDFium Component: AFRelationship values, the /AF chain, MIME name escaping and strict page targeting
PDFDocEncoding puts its special block at $80, not $7F; a table shifted one row decodes every FDF symbol as its neighbor. How to pin the table with anchor tests
PDF/R keeps a scan to one strip image per page with no text and no fonts. How PDFium Component validates ISO 23504-1 in Delphi and what each rejection means
Walk the live PDF tag tree with PDFium VCL to catch PDF/UA content errors a byte-level scan misses: Figure Alt, Formula text, and unique Note IDs
Produce and validate PDF/VT-1 variable-data print files in Delphi with PDFium VCL: DPart trees, the mandatory PDF/X-4 pairing, and ISO 16612-2 pitfalls
CK_ULONG is 4 bytes on Windows and 8 on Linux, and #pragma pack shifts the PKCS#11 function table; how PDFium Component signs PAdES through a token in Delphi
How the PDFium component routes every shaping call through one installable backend, with Uniscribe on Windows and a run-time bound HarfBuzz for FPC
Find what changed after a PDF was signed: the PDFium Component for Delphi rebuilds incremental revisions, grades DocMDP and FieldMDP, and flags shadow updates
Automate PDF/A and PDF/UA preflight in Delphi with PDFium Component: batch loops, exit codes, JSON and HTML reports, and why empty findings are not a pass
A linearized PDF can show page 1 while the rest still downloads. PDFium Component in Delphi drives FPDFAvail range hints, retries and a clean cancel path
Untagged PDFs reflow to plain paragraphs while tagged ones keep headings and lists; PDFium Component builds the model in Delphi and exports self-contained HTML
An HSM or cloud key signs hours later on another machine: PDFium Component prepares the PAdES slot in Delphi, saves the session and checks the returned CMS
Keep zoom and scrolling smooth in Delphi PDF viewers with PDFium: correct cache keys, bitmap ownership, progressive rendering, and high-DPI memory budgets
PDFium is not thread-safe, so PDFium Component locks rendering, six bitmap and thumbnail accessors and page unloads per TPdf; raw C API calls need that lock too
Two saves of one PDF hash differently because of /Info dates and the trailer /ID. PDFium Component SaveAsReproducible in Delphi writes byte-identical files
RFC 4055 gives every RSASSA-PSS-params field an explicit tag; a bare saltLength INTEGER gets PSS signatures rejected. The correct DER from PDFium Component
Harden a Delphi PDF preview pane with PDFium Component: disable JavaScript at load, intercept link clicks, filter attachments, and read encryption permissions
TPdf.Active := True hides PDFium load errors in Delphi. Use LoadDocument with TPdfLoadOptions to get the real exception, a TPdfLoadReport and xref recovery data
How PDFiumPas reads a single PDF object without loading the file: sparse xref section descriptors, lazy object streams, hybrid XRefStm and 1 MiB read windows
Static XFA forms show an upgrade notice in browser viewers. PDFium Component rebuilds them as AcroForm fields in Delphi with flags, radio groups and styling
A page whose MCIDs lack a /ParentTree entry fails PDF/UA reverse lookups. PDFium Component EditPdfDocumentStructure writes /StructParents and slots from Delphi
Two-column PDF text can run across the gutter. PDFium Component GetStructuredText in Delphi returns blocks, lines and spans in content or physical order
A CIDFont /W array may skip glyphs at the default width. PDFium Component subsets fonts already embedded in a PDF from Delphi once font metadata proves them
PDFium Component lets a Delphi application supply its own font bytes for non-embedded PDF fonts, replacing host font mapping with a deterministic provider
PDFium Component detects ruled and whitespace-aligned tables in PDF pages from Delphi, resolves merged cells and spans, and exports rows as CSV or JSON
Laying out PDF text needs string widths before you draw. See how a PDFium binding measures text without touching the page, for word wrap in Delphi
PDFium keeps a cached FPDF_TEXTPAGE handle in Delphi; after AddText, SetText, or AddPath edits it turns stale unless reloaded before the next text query
A /Rotate 90 page turns upside down when its own rotation is passed back to the renderer. How PDFium Component stacks rotation and sizes fit zoom in Delphi
Why PDF text extraction returns U+00A0 and U+00AD for plain spaces and hyphens, and how PDFium Component keys system fonts by code point to avoid it in Delphi
Why porting PDF text layout off Windows means implementing UAX #9 yourself, and the two mistakes that corrupt astral characters or skip reordering entirely
A PDF text page has no line objects. See how PDFium Component builds visual lines from FPDFText_GetCharBox geometry and shares one helper across selection paths
PDFium Component rejects justified PDF paragraphs as tables with a text-free corridor test at each column boundary and orders cell words by vertical overlap
How PDFium Component separates form field index from annotation index in Delphi: filter Widget subtypes, map at the native edge, fix headless form focus
PDFium VCL keeps Windows PDF signature revocation checks truly offline with the cache-only revocation flag and reports revoked and unknown evidence separately
Sync text-to-speech with on-page word highlights in Delphi using PDFium word boxes: TrackReadingWordAt, render ordering, auto-scroll, and Unicode pitfalls
AcroForm edits commit to /V on focus loss; XFA edits reach datasets only when PDFium saves with the XFA runtime loaded. When XFA values survive in Delphi
XFA fields that gain line feeds or lose emoji after save and reopen in Delphi: how PDFium Component saves values, single-stream XFA, and restoreState on reopen
A sentence split across PDF pages needs more than joined text. Keep page and character mappings accurate for selection and speech with PDFium Component
Two-column PDF pages can read across rows instead of down columns. Use PDFium Component to order text and preserve selection in Delphi applications
A PDF Form can be reused and share MCID numbers with its page. Trace tagged content and select the right occurrence with PDFium Component in Delphi
Print PDFs from Delphi with PDFium Component: render with RenderPage and rePrinting, send bitmaps through StretchDIBits, fit pages, and handle rotation
Draw a watermark or logo once, place it on every page. See how PDFium's Form XObjects make reusable page stamps in Delphi, and the handle lifetime rule
Run AcroForm JavaScript in Delphi with PDFium Component: why field calculations stay silent, V8 DLL requirements, and host events that veto risky PDF actions
PDFium reads PAdES signatures but cannot create one. How PDFium Component signs a PDF at PAdES B-B in Delphi: ByteRange slot, CAdES CMS and CNG or OpenSSL keys
Splitting a PDF by page, range or bookmark in Delphi is one PDFium Component loop: CreateDocument, ImportPages, a checked SaveAs and an Active reset per file
Stream multi-gigabyte PDFs on demand in Delphi with a TStream adapter for PDFium's FPDF_FILEACCESS callback, while enforcing its 4 GiB file-size limit
Build a side-by-side PDF viewer in Delphi with PDFium Component using independent panels, per-view TPdfView.Zoom, and synchronized page navigation
Modern PDFs hide structure in compressed object and xref streams. See how a Delphi validator expands ObjStm and reads xref-stream trailers with PDFium
Print shops bounce PDF/X files for a missing TrimBox, an unset Trapped key or one unembedded font. PDFium Component ValidatePdfX finds them in Delphi first
How the PDFium Delphi Component verifies PDF signatures on macOS through CMSDecoder and SecTrust: joined byte ranges, status mapping and CFRelease rules
Why PDF validators reject PAdES signatures: zero ByteRange fields, missing D: date prefix, and lost /Encrypt after incremental updates, with PDFium Component
Manage PDF attachments in Delphi with PDFium Component using AttachmentCount, Attachment, CreateAttachment, DeleteAttachment, safe paths, and in-place saves