PDFium Delphi Component Docs

Renderizado nativo opcional

Unidad: PDFium
Proporciona renderizado Skia con capacidades condicionadas y un ABI opcional con versión para salida exacta de placas directas y overprint

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Ambas consultas cargan el módulo de PDFium seleccionado si es necesario y reportan solo las exportaciones presentes en ese módulo exacto

Las exportaciones opcionales ausentes nunca impiden la carga normal de PDFium, el renderizado de mapas de bits, la edición ni el guardado

TPdfSkiaRenderCapabilities.PageSceneCache indica que RenderPageSkiaByIndex puede reutilizar la caché acotada de páginas analizadas propiedad de TPdf

TPdfSkiaRenderCapabilities.FormOverlay indica que la exportación opcional de formularios separada puede pintar la superposición de formularios después del contenido de la página

TPdfPrintOutputCapabilities.VersionCompatible es verdadero solo cuando la extensión devuelve el valor exacto de PdfPrintOutputAbiVersion

TPdfPrintOutputCapabilities.ExtensionPresent es verdadero una vez que la extensión de salida de impresión está cargada y AbiVersion lleva el número ABI sin procesar que reporta

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

Quien llama es dueño del SkCanvas nativo y lo pasa como FPDF_SKIA_CANVAS

RenderPageSkia dibuja la página activa mientras que RenderPageSkiaByIndex dibuja cualquier página basada en uno sin cambiar PageNumber

Cuando se solicita y existe un entorno de llenado de formularios, la superposición de formularios se dibuja después del contenido de la página a través de la exportación opcional de formularios separada

La API nativa de Skia acepta un tamaño en píxeles pero no expone los parámetros de rotación ni de banderas del renderizador de mapas de bits

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;

Estos métodos llaman a la extensión opcional de salida de impresión solo cuando su versión, su bit de capacidad y la exportación de la función correspondiente coinciden todos

Los mapas de bits devueltos son propiedad de quien llama y usan la misma ruta acotada de mapas de bits de PDFium que el renderizado normal

Cuando la extensión está ausente, cada operación genera EPdfError en lugar de simular placas a partir de salida RGB o de afirmar un comportamiento de overprint inexacto

Print-output ABI version 1

ExportaciónContrato
PDFiumPas_GetPrintOutputAbiVersionDevuelve PdfPrintOutputAbiVersion como un valor entero sin signo de 32 bits
PDFiumPas_GetPrintOutputCapabilitiesDevuelve los bits de capacidad declarados de enumeración de placas, renderizado de placas, detección de overprint y vista previa de overprint
PDFiumPas_PageCountSpotPlatesDevuelve un conteo de placas acotado y no negativo para un FPDF_PAGE
PDFiumPas_PageGetSpotPlateNameDevuelve el conteo de bytes UTF-8 incluido el cero final y escribe solo dentro del búfer suministrado
PDFiumPas_PageUsesOverprintDevuelve un FPDF_BOOL de 32 bits para una página
PDFiumPas_RenderSpotPlateRenderiza una placa basada en cero en un FPDF_BITMAP propiedad de quien llama
PDFiumPas_RenderOverprintPreviewRenderiza una vista previa de overprint con gestión de color en un FPDF_BITMAP propiedad de quien llama

Todas las funciones del ABI usan cdecl, valores enteros de 32 bits y FPDF_BOOL, identificadores del tamaño de un puntero y semántica de páginas propiedad de PDFium

Las funciones de renderizado deben completarse de forma síncrona y no deben retener el mapa de bits ni el identificador de página suministrados

Los bits de capacidad desconocidos se conservan en RawCapabilityBits pero no se tratan como comportamiento soportado

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