PDFium Component Docs

Optioneel natief renderen

Unit: PDFium
Biedt capability-gated Skia-rendering en een geversioneerde optionele ABI voor exacte spot-plate- en overprint-uitvoer

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Beide query's laden zo nodig de geselecteerde PDFium-module en rapporteren alleen exports die exact in die module aanwezig zijn

Ontbrekende optionele exports verhinderen nooit het normale laden van PDFium, bitmaprendering, bewerken of opslaan

TPdfSkiaRenderCapabilities.PageSceneCache geeft aan dat RenderPageSkiaByIndex de begrensde parsed-page cache van TPdf kan hergebruiken

TPdfSkiaRenderCapabilities.FormOverlay geeft aan dat de afzonderlijke optionele form-export de formulieroverlay na de pagina-inhoud kan tekenen

TPdfPrintOutputCapabilities.VersionCompatible is alleen waar wanneer de extensie exact de waarde PdfPrintOutputAbiVersion teruggeeft

TPdfPrintOutputCapabilities.ExtensionPresent is waar zodra de print-output-extensie is geladen en AbiVersion het ruwe ABI-nummer bevat dat de extensie rapporteert

SpotPlateRendering, OverprintDetection en OverprintPreview bepalen de toegang tot RenderSpotPlate, PageUsesOverprint en 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);

De aanroeper is eigenaar van de native SkCanvas en geeft die door als FPDF_SKIA_CANVAS

RenderPageSkia tekent de actieve pagina, terwijl RenderPageSkiaByIndex elke willekeurige pagina met 1-gebaseerd nummer tekent zonder PageNumber te wijzigen

Wanneer gevraagd en er een form-fill-omgeving bestaat, wordt de formulieroverlay na de pagina-inhoud getekend via de afzonderlijke optionele form-export

De native Skia-API accepteert een pixelgrootte, maar stelt de rotatie- en vlagparameters van de bitmaprenderer niet beschikbaar

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;

Deze methoden roepen de optionele print-output-extensie alleen aan wanneer diens versie, capability-bit en bijbehorende functie-export allemaal kloppen

Teruggegeven bitmaps zijn eigendom van de aanroeper en gebruiken hetzelfde begrensde PDFium-bitmap-pad als normale rendering

Wanneer de extensie ontbreekt, veroorzaakt elke bewerking EPdfError in plaats van plates te simuleren vanuit RGB-uitvoer of onnauwkeurig overprint-gedrag te claimen

Print-output ABI version 1

ExportContract
PDFiumPas_GetPrintOutputAbiVersionGeeft PdfPrintOutputAbiVersion terug als 32-bits unsigned waarde
PDFiumPas_GetPrintOutputCapabilitiesGeeft de gedeclareerde capability-bits voor spot-enumeratie, spot-rendering, overprint-detectie en overprint-preview terug
PDFiumPas_PageCountSpotPlatesGeeft een begrensd, niet-negatief aantal plates voor één FPDF_PAGE terug
PDFiumPas_PageGetSpotPlateNameGeeft het UTF-8-aantal bytes inclusief de afsluitende nul terug en schrijft uitsluitend binnen de meegegeven buffer
PDFiumPas_PageUsesOverprintGeeft een 32-bits FPDF_BOOL voor één pagina terug
PDFiumPas_RenderSpotPlateRendert één op nul gebaseerde plate naar een FPDF_BITMAP in eigendom van de aanroeper
PDFiumPas_RenderOverprintPreviewRendert kleurbeheerde overprint-preview naar een FPDF_BITMAP in eigendom van de aanroeper

Alle ABI-functies gebruiken cdecl, 32-bits integer- en FPDF_BOOL-waarden, handles op pointergrootte en paginasemantiek in eigendom van PDFium

Renderfuncties moeten synchroon afronden en mogen de meegegeven bitmap of page-handle niet vasthouden

Onbekende capability-bits worden bewaard in RawCapabilityBits maar niet als ondersteund gedrag behandeld

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