PDFium Delphi Component Docs

Optional native rendering

Unit: PDFium
Provides capability-gated Skia rendering and a versioned optional ABI for exact spot-plate and overprint output

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Both queries load the selected PDFium module if necessary and report only exports that are present in that exact module

Missing optional exports never prevent normal PDFium loading, bitmap rendering, editing or saving

TPdfSkiaRenderCapabilities.PageSceneCache indicates that RenderPageSkiaByIndex can reuse the bounded parsed-page cache owned by TPdf

TPdfSkiaRenderCapabilities.FormOverlay indicates that the separate optional form export can paint the form overlay after page content

TPdfPrintOutputCapabilities.VersionCompatible is true only when the extension returns the exact PdfPrintOutputAbiVersion value

TPdfPrintOutputCapabilities.ExtensionPresent is true once the print-output extension is loaded and AbiVersion carries the raw ABI number it reports

SpotPlateRendering, OverprintDetection and OverprintPreview gate RenderSpotPlate, PageUsesOverprint and RenderOverprintPreview

Skia Page and Form Rendering

procedure TPdf.RenderPageSkia(Canvas: FPDF_SKIA_CANVAS; Width, Height: Integer; DrawFormOverlay: Boolean = True);
procedure TPdf.RenderPageSkiaByIndex(Canvas: FPDF_SKIA_CANVAS; PageNumber, Width, Height: Integer; DrawFormOverlay: Boolean = True);

The caller owns the native SkCanvas and passes it as FPDF_SKIA_CANVAS

RenderPageSkia draws the active page whilst RenderPageSkiaByIndex draws any one-based page without changing PageNumber

When requested and a form-fill environment exists, the form overlay is drawn after page content through the separate optional form export

The native Skia API accepts a pixel size but does not expose the bitmap renderer's rotation or flag parameters

function TPdf.SpotPlates: TPdfSpotPlateInfos;
function TPdf.PageUsesOverprint: Boolean;
function TPdf.RenderSpotPlate(PlateIndex, Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap;
function TPdf.RenderOverprintPreview(Width, Height: Integer; Rotation: TRotation = ro0; Options: TRenderOptions = []; Color: TColor = clWhite): TBitmap;

These methods call the optional print-output extension only when its version, capability bit and corresponding function export all agree

Returned bitmaps are caller-owned and use the same bounded PDFium bitmap path as normal rendering

When the extension is absent, each operation raises EPdfError instead of simulating plates from RGB output or claiming inaccurate overprint behaviour

Print-output ABI version 1

ExportContract
PDFiumPas_GetPrintOutputAbiVersionReturns PdfPrintOutputAbiVersion as a 32-bit unsigned value
PDFiumPas_GetPrintOutputCapabilitiesReturns the declared spot enumeration, spot rendering, overprint detection and overprint preview capability bits
PDFiumPas_PageCountSpotPlatesReturns a bounded non-negative plate count for one FPDF_PAGE
PDFiumPas_PageGetSpotPlateNameReturns the UTF-8 byte count including the trailing zero and writes only within the supplied buffer
PDFiumPas_PageUsesOverprintReturns a 32-bit FPDF_BOOL for one page
PDFiumPas_RenderSpotPlateRenders one zero-based plate into a caller-owned FPDF_BITMAP
PDFiumPas_RenderOverprintPreviewRenders colour-managed overprint preview into a caller-owned FPDF_BITMAP

All ABI functions use cdecl, 32-bit integer and FPDF_BOOL values, pointer-sized handles and PDFium-owned page semantics

Render functions must complete synchronously and must not retain the supplied bitmap or page handle

Unknown capability bits are preserved in RawCapabilityBits but are not treated as supported behaviour

Example

SkiaCaps := GetSkiaRenderCapabilities;
if SkiaCaps.PageRender then
  Pdf.RenderPageSkiaByIndex(SkCanvas, 1, 1200, 1600);

PrintCaps := GetPrintOutputCapabilities;
if PrintCaps.SpotPlateEnumeration then
  Plates := Pdf.SpotPlates;

See Also

TPdf.RenderPageByIndex, TPdf.ClearPageSceneCache