PDFium Delphi Component Docs

Optional native rendering

Enhed: PDFium
Giver capability-gated Skia-rendering og et versioneret valgfrit ABI til eksakt spot-plate- og overprint-output

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Begge forespørgsler indlæser om nødvendigt det valgte PDFium-modul og rapporterer kun exports, der findes i netop dét modul

Manglende valgfrie exports forhindrer aldrig normal PDFium-indlæsning, bitmap-rendering, redigering eller gemning

TPdfSkiaRenderCapabilities.PageSceneCache angiver, at RenderPageSkiaByIndex kan genbruge den afgrænsede parsed-side-cache, som TPdf ejer

TPdfSkiaRenderCapabilities.FormOverlay angiver, at den separate valgfrie form-export kan tegne formular-overlayet efter sideindholdet

TPdfPrintOutputCapabilities.VersionCompatible er kun true, når extensionen returnerer den eksakte PdfPrintOutputAbiVersion-værdi

TPdfPrintOutputCapabilities.ExtensionPresent er true, så snart print-output-extensionen er indlæst, og AbiVersion bærer det rå ABI-nummer, den rapporterer

SpotPlateRendering, OverprintDetection og OverprintPreview er adgangsbetingelser for RenderSpotPlate, PageUsesOverprint og 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);

Kalderen ejer den native SkCanvas og sender den som FPDF_SKIA_CANVAS

RenderPageSkia tegner den aktive side, mens RenderPageSkiaByIndex tegner enhver en-baseret side uden at ændre PageNumber

Når det ønskes, og et form fill-miljø findes, tegnes formular-overlayet efter sideindholdet gennem den separate valgfrie form-export

Den native Skia-API accepterer en pixelstørrelse men eksponerer ikke bitmap-rendererens rotations- eller flagparametre

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;

Disse metoder kalder kun den valgfrie print-output-extension, når dens version, capability-bit og tilsvarende funktionsexport alle er i overensstemmelse

Returnerede bitmaps ejes af kalderen og bruger samme afgrænsede PDFium bitmap-sti som normal rendering

Når extensionen mangler, udløser hver operation en EPdfError i stedet for at simulere plates ud fra RGB-output eller påstå unøjagtig overprint-adfærd

Print-output ABI version 1

ExportContract
PDFiumPas_GetPrintOutputAbiVersionReturnerer PdfPrintOutputAbiVersion som en 32-bit unsigned værdi
PDFiumPas_GetPrintOutputCapabilitiesReturnerer de deklarerede capability-bits for spot-optælling, spot-rendering, overprint-detektion og overprint preview
PDFiumPas_PageCountSpotPlatesReturnerer et afgrænset ikke-negativt plate-antal for én FPDF_PAGE
PDFiumPas_PageGetSpotPlateNameReturnerer UTF-8-byte-antallet inklusive den afsluttende nul og skriver kun inden for den leverede buffer
PDFiumPas_PageUsesOverprintReturnerer en 32-bit FPDF_BOOL for én side
PDFiumPas_RenderSpotPlateRenderer én nulbaseret plate ind i en kalder-ejet FPDF_BITMAP
PDFiumPas_RenderOverprintPreviewRenderer colour-managed overprint preview ind i en kalder-ejet FPDF_BITMAP

Alle ABI-funktioner bruger cdecl, 32-bit heltals- og FPDF_BOOL-værdier, pointer-store handles og PDFium-ejet side-semantik

Render-funktioner skal fuldføres synkront og må ikke tilbageholde den leverede bitmap eller sidehandle

Ukendte capability-bits bevares i RawCapabilityBits men behandles ikke som understøttet adfærd

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