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
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
| Export | Contract |
|---|---|
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, но не считаются поддерживаемым поведением
SkiaCaps := GetSkiaRenderCapabilities;
if SkiaCaps.PageRender then
Pdf.RenderPageSkiaByIndex(SkCanvas, 1, 1200, 1600);
PrintCaps := GetPrintOutputCapabilities;
if PrintCaps.SpotPlateEnumeration then
Plates := Pdf.SpotPlates;