PDFium Delphi Component Docs

Renderização nativa opcional

Unidade: PDFium
Fornece renderização Skia com liberação por capacidades e um ABI opcional versionado para saída exata de spot plates e overprint

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Ambas as consultas carregam o módulo PDFium selecionado se necessário e relatam apenas as exportações presentes naquele módulo exato

Exportações opcionais ausentes nunca impedem o carregamento normal do PDFium, a renderização de bitmap, a edição ou o salvamento

TPdfSkiaRenderCapabilities.PageSceneCache indica que RenderPageSkiaByIndex pode reutilizar o cache limitado de páginas analisadas de propriedade do TPdf

TPdfSkiaRenderCapabilities.FormOverlay indica que a exportação opcional separada de formulários pode pintar a sobreposição do formulário após o conteúdo da página

TPdfPrintOutputCapabilities.VersionCompatible é true apenas quando a extensão retorna exatamente o valor PdfPrintOutputAbiVersion

TPdfPrintOutputCapabilities.ExtensionPresent é true assim que a extensão de saída de impressão é carregada e AbiVersion carrega o número ABI bruto que ela relata

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

Quem chama é dono do SkCanvas nativo e o passa como FPDF_SKIA_CANVAS

RenderPageSkia desenha a página ativa, enquanto RenderPageSkiaByIndex desenha qualquer página com base em um sem alterar PageNumber

Quando solicitado e existindo um ambiente de preenchimento de formulários, a sobreposição do formulário é desenhada após o conteúdo da página por meio da exportação opcional separada de formulários

A API nativa de Skia aceita um tamanho em pixels, mas não expõe os parâmetros de rotação ou de flags do renderizador de bitmap

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;

Esses métodos chamam a extensão opcional de saída de impressão apenas quando sua versão, bit de capacidade e exportação de função correspondente estão todos de acordo

Os bitmaps retornados pertencem a quem chama e usam o mesmo caminho limitado de bitmap do PDFium da renderização normal

Quando a extensão está ausente, cada operação dispara EPdfError em vez de simular plates a partir de saída RGB ou alegar um comportamento de overprint impreciso

Print-output ABI version 1

ExportContract
PDFiumPas_GetPrintOutputAbiVersionRetorna PdfPrintOutputAbiVersion como um valor não assinado de 32 bits
PDFiumPas_GetPrintOutputCapabilitiesRetorna os bits de capacidade declarados de enumeração de spots, renderização de spots, detecção de overprint e pré-visualização de overprint
PDFiumPas_PageCountSpotPlatesRetorna uma contagem de plates limitada e não negativa para um FPDF_PAGE
PDFiumPas_PageGetSpotPlateNameRetorna a contagem de bytes UTF-8, incluindo o zero final, e grava apenas dentro do buffer fornecido
PDFiumPas_PageUsesOverprintRetorna um FPDF_BOOL de 32 bits para uma página
PDFiumPas_RenderSpotPlateRenderiza um plate de base zero em um FPDF_BITMAP de propriedade de quem chama
PDFiumPas_RenderOverprintPreviewRenderiza a pré-visualização de overprint com gerenciamento de cor em um FPDF_BITMAP de propriedade de quem chama

Todas as funções ABI usam cdecl, valores inteiros de 32 bits e FPDF_BOOL, handles do tamanho de um ponteiro e semântica de página de propriedade do PDFium

As funções de renderização devem ser concluídas de forma síncrona e não devem reter o bitmap ou o handle de página fornecidos

Bits de capacidade desconhecidos são preservados em RawCapabilityBits, mas não são tratados como comportamento suportado

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