function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;
兩個查詢都會在必要時載入選定的 PDFium 模組,且只回報該確切模組中存在的匯出函式
缺少選用匯出函式絕不會妨礙正常的 PDFium 載入、點陣圖渲染、編輯或儲存
TPdfSkiaRenderCapabilities.PageSceneCache 表示 RenderPageSkiaByIndex 可以重用 TPdf 所擁有的有界已剖析頁面快取
TPdfSkiaRenderCapabilities.FormOverlay 表示獨立的選用表單匯出函式可以在頁面內容之後繪製表單覆蓋層
TPdfPrintOutputCapabilities.VersionCompatible 只有在延伸模組傳回完全相同的 PdfPrintOutputAbiVersion 值時才為 true
TPdfPrintOutputCapabilities.ExtensionPresent 在列印輸出延伸模組載入後為 true,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 則繪製任何以 1 為基底的頁面,且不改變 PageNumber
在有要求且存在表單填寫環境時,會透過獨立的選用表單匯出函式,在頁面內容之後繪製表單覆蓋層
原生 Skia API 只接受像素尺寸,不提供點陣圖渲染器的旋轉或旗標參數
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;
只有當版本、能力位元與對應的函式匯出全部一致時,這些方法才會呼叫選用的列印輸出延伸模組
傳回的點陣圖由呼叫端擁有,並使用與一般渲染相同的有界 PDFium 點陣圖路徑
延伸模組不存在時,每個作業都會引發 EPdfError,而不是從 RGB 輸出模擬色版,或宣稱不準確的疊印行為
| Export | Contract |
|---|---|
PDFiumPas_GetPrintOutputAbiVersion | 以 32 位元無號值傳回 PdfPrintOutputAbiVersion |
PDFiumPas_GetPrintOutputCapabilities | 傳回宣告的特別色列舉、特別色渲染、疊印偵測與疊印預視能力位元 |
PDFiumPas_PageCountSpotPlates | 為單一 FPDF_PAGE 傳回有界且非負的色版數 |
PDFiumPas_PageGetSpotPlateName | 傳回含結尾零位元組的 UTF-8 位元組數,且只在提供的緩衝區內寫入 |
PDFiumPas_PageUsesOverprint | 為單一頁面傳回 32 位元 FPDF_BOOL |
PDFiumPas_RenderSpotPlate | 將單一以 0 為基底的色版渲染到呼叫端擁有的 FPDF_BITMAP |
PDFiumPas_RenderOverprintPreview | 將色彩管理的疊印預視渲染到呼叫端擁有的 FPDF_BITMAP |
所有 ABI 函式都使用 cdecl、32 位元整數與 FPDF_BOOL 值、指標大小的控制代碼,以及 PDFium 擁有的頁面語意
渲染函式必須同步完成,且不得保留提供的點陣圖或頁面控制代碼
未知的能力位元會保留在 RawCapabilityBits 中,但不被視為受支援的行為
SkiaCaps := GetSkiaRenderCapabilities;
if SkiaCaps.PageRender then
Pdf.RenderPageSkiaByIndex(SkCanvas, 1, 1200, 1600);
PrintCaps := GetPrintOutputCapabilities;
if PrintCaps.SpotPlateEnumeration then
Plates := Pdf.SpotPlates;