PDFium Delphi Component Docs

Необязательный нативный рендеринг

Модуль: PDFium
Предоставляет рендеринг Skia под управлением проверок возможностей и версионируемый необязательный ABI для точного вывода spot-печатных форм и overprint

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Оба запроса при необходимости загружают выбранный модуль PDFium и сообщают только те экспорты, которые присутствуют именно в этом модуле

Отсутствующие необязательные экспорты никогда не мешают нормальной загрузке PDFium, растровому рендерингу, правке или сохранению

TPdfSkiaRenderCapabilities.PageSceneCache указывает, что RenderPageSkiaByIndex может переиспользовать ограниченный кэш разобранных страниц, принадлежащий TPdf

TPdfSkiaRenderCapabilities.FormOverlay указывает, что отдельный необязательный экспорт форм может нарисовать наложение форм после содержимого страницы

TPdfPrintOutputCapabilities.VersionCompatible истинно, только когда расширение возвращает точное значение PdfPrintOutputAbiVersion

TPdfPrintOutputCapabilities.ExtensionPresent истинно, как только расширение вывода печати загружено, а AbiVersion несёт исходный номер ABI, который оно сообщает

SpotPlateRendering, OverprintDetection и OverprintPreview разрешают RenderSpotPlate, PageUsesOverprint и 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);

Вызывающая сторона владеет нативным SkCanvas и передаёт его как FPDF_SKIA_CANVAS

RenderPageSkia рисует активную страницу, а RenderPageSkiaByIndex — любую страницу в нумерации с единицы, не меняя PageNumber

Когда запрошено и существует среда заполнения форм, наложение форм рисуется после содержимого страницы через отдельный необязательный экспорт форм

Нативный API Skia принимает размер в пикселях, но не открывает параметры поворота или флагов растрового рендерера

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;

Эти методы вызывают необязательное расширение вывода печати только когда его версия, бит возможности и соответствующий экспорт функции согласуются

Возвращённые bitmap принадлежат вызывающей стороне и используют тот же ограниченный путь bitmap PDFium, что и обычный рендеринг

Когда расширение отсутствует, каждая операция возбуждает EPdfError вместо симуляции печатных форм из вывода RGB или заявления о неточном поведении overprint

Print-output ABI version 1

ExportContract
PDFiumPas_GetPrintOutputAbiVersionВозвращает PdfPrintOutputAbiVersion как 32-битное беззнаковое значение
PDFiumPas_GetPrintOutputCapabilitiesВозвращает объявленные биты возможностей перечисления печатных форм, их рендеринга, обнаружения overprint и предпросмотра overprint
PDFiumPas_PageCountSpotPlatesВозвращает ограниченное неотрицательное количество печатных форм для одного FPDF_PAGE
PDFiumPas_PageGetSpotPlateNameВозвращает количество байтов UTF-8, включая завершающий ноль, и пишет только внутри предоставленного буфера
PDFiumPas_PageUsesOverprintВозвращает 32-битный FPDF_BOOL для одной страницы
PDFiumPas_RenderSpotPlateРендерит одну печатную форму в нумерации с нуля в FPDF_BITMAP, принадлежащий вызывающей стороне
PDFiumPas_RenderOverprintPreviewРендерит предпросмотр overprint с управлением цветом в FPDF_BITMAP, принадлежащий вызывающей стороне

Все функции ABI используют cdecl, 32-битные целые и значения FPDF_BOOL, дескрипторы размером с указатель и семантику страниц во владении PDFium

Функции рендеринга должны завершаться синхронно и не должны удерживать переданные bitmap или дескриптор страницы

Неизвестные биты возможностей сохраняются в RawCapabilityBits, но не считаются поддерживаемым поведением

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