PDFium Delphi Component Docs

Valfri nativ rendering

Unit: PDFium
Tillhandahåller kapabilitetsstyrd Skia-rendering och ett versionshanterat valfritt ABI för exakt spot-plåt- och övertrycksutdata

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Båda frågorna laddar den valda PDFium-modulen vid behov och rapporterar endast exporter som finns i just den modulen

Saknade valfria exporter hindrar aldrig normal PDFium-inläsning, bitmap-rendering, redigering eller sparning

TPdfSkiaRenderCapabilities.PageSceneCache anger att RenderPageSkiaByIndex kan återanvända den avgränsade tolkade sidcachen som ägs av TPdf

TPdfSkiaRenderCapabilities.FormOverlay anger att den separata valfria formexporten kan rita formuläroverlayen efter sidinnehållet

TPdfPrintOutputCapabilities.VersionCompatible är true endast när tillägget returnerar det exakta värdet PdfPrintOutputAbiVersion

TPdfPrintOutputCapabilities.ExtensionPresent är true så snart print-output-tillägget är inläst och AbiVersion bär det råa ABI-nummer det rapporterar

SpotPlateRendering, OverprintDetection och OverprintPreview styr RenderSpotPlate, PageUsesOverprint och 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);

Anroparen äger den inbyggda SkCanvas:en och skickar den som FPDF_SKIA_CANVAS

RenderPageSkia ritar den aktiva sidan medan RenderPageSkiaByIndex ritar valfri ett-baserad sida utan att ändra PageNumber

När det begärts och en form-fill-miljö finns ritas formuläroverlayen efter sidinnehållet via den separata valfria formexporten

Det nativa Skia-API:et tar en pixelstorlek men exponerar inte bitmap-renderarens rotations- eller flaggparametrar

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;

Dessa metoder anropar det valfria print-output-tillägget bara när dess version, kapabilitetsbit och motsvarande funktionsexport alla stämmer

Returnerade bitmappar ägs av anroparen och använder samma avgränsade PDFium-bitmap-väg som normal rendering

När tillägget saknar utlöser varje åtgärd EPdfError i stället för att simulera plåtar från RGB-utdata eller påstå felaktigt övertrycksbeteende

Print-output ABI version 1

ExportContract
PDFiumPas_GetPrintOutputAbiVersionReturnerar PdfPrintOutputAbiVersion som ett 32-bitars teckenlöst värde
PDFiumPas_GetPrintOutputCapabilitiesReturnerar de deklarerade kapabilitetsbitarna för spot-uppräkning, spot-rendering, övertrycksdetektering och övertrycksförhandsvisning
PDFiumPas_PageCountSpotPlatesReturnerar ett avgränsat icke-negativt plåtantal för en FPDF_PAGE
PDFiumPas_PageGetSpotPlateNameReturnerar UTF-8-byte-antalet inklusive avslutande nolla och skriver bara inom den tillhandahållna bufferten
PDFiumPas_PageUsesOverprintReturnerar en 32-bitars FPDF_BOOL för en sida
PDFiumPas_RenderSpotPlateRenderar en nollbaserad platta in i en anroparägd FPDF_BITMAP
PDFiumPas_RenderOverprintPreviewRenderar färghanterad övertrycksförhandsvisning in i en anroparägd FPDF_BITMAP

Alla ABI-funktioner använder cdecl, 32-bitars heltals- och FPDF_BOOL-värden, pekarstora handtag och PDFium-ägda sidsemantik

Renderfunktionerna måste slutföras synkront och får inte behålla den tillhandahållna bitmappen eller sidhandtaget

Okända kapabilitetsbitar bevaras i RawCapabilityBits men behandlas inte som stödda funktioner

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