PDFium Delphi Component Docs

Renderização nativa opcional

Unidade: PDFium
Fornece renderização Skia condicionada a capacidades e um ABI opcional com versão para saída exata de chapas de cor direta e overprint

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

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

As exportações opcionais em falta nunca impedem o carregamento normal do PDFium, a renderização de bitmaps, a edição ou a gravação

TPdfSkiaRenderCapabilities.PageSceneCache indica que RenderPageSkiaByIndex pode reutilizar a cache limitada de páginas analisadas pertencente ao TPdf

TPdfSkiaRenderCapabilities.FormOverlay indica que a exportação opcional separada de formulários consegue pintar a sobreposição de formulários depois do conteúdo da página

TPdfPrintOutputCapabilities.VersionCompatible é true apenas quando a extensão devolve o valor exato PdfPrintOutputAbiVersion

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

SpotPlateRendering, OverprintDetection e OverprintPreview condicionam 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);

O chamador é dono do SkCanvas nativo e passa-o como FPDF_SKIA_CANVAS

RenderPageSkia desenha a página ativa, enquanto RenderPageSkiaByIndex desenha qualquer página, com numeração a partir de 1, sem alterar PageNumber

Quando pedido e existindo um ambiente de preenchimento de formulários, a sobreposição de formulários é desenhada depois do conteúdo da página através da exportação opcional separada de formulários

A API Skia nativa aceita um tamanho em píxeis, mas não expõe os parâmetros de rotação nem 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;

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

Os bitmaps devolvidos pertencem ao chamador e usam o mesmo caminho limitado de bitmaps do PDFium da renderização normal

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

Print-output ABI version 1

ExportaçãoContrato
PDFiumPas_GetPrintOutputAbiVersionDevolve PdfPrintOutputAbiVersion como um valor unsigned de 32 bits
PDFiumPas_GetPrintOutputCapabilitiesDevolve os bits de capacidade declarados de enumeração de chapas, renderização de chapas, deteção de overprint e pré-visualização de overprint
PDFiumPas_PageCountSpotPlatesDevolve uma contagem de chapas limitada e não negativa para um FPDF_PAGE
PDFiumPas_PageGetSpotPlateNameDevolve a contagem de bytes UTF-8 incluindo o zero final e escreve apenas dentro do buffer fornecido
PDFiumPas_PageUsesOverprintDevolve um FPDF_BOOL de 32 bits para uma página
PDFiumPas_RenderSpotPlateRenderiza uma chapa, com numeração a partir de zero, num FPDF_BITMAP pertencente ao chamador
PDFiumPas_RenderOverprintPreviewRenderiza a pré-visualização de overprint com gestão de cor num FPDF_BITMAP pertencente ao chamador

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

As funções de renderização têm de completar sincronamente e não podem reter o bitmap nem o handle de página fornecidos

Os 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