function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;
두 질의 모두 필요하면 선택된 PDFium 모듈을 로드하고 그 정확한 모듈에 존재하는 export만 보고합니다
선택적 export가 없다고 해서 평범한 PDFium 로딩, 비트맵 렌더링, 편집, 저장이 막히는 일은 없습니다
TPdfSkiaRenderCapabilities.PageSceneCache는 RenderPageSkiaByIndex가 TPdf가 소유한 유한한 파싱 페이지 캐시를 재사용할 수 있음을 나타냅니다
TPdfSkiaRenderCapabilities.FormOverlay는 별도의 선택적 폼 export가 페이지 콘텐츠 뒤에 폼 오버레이를 그릴 수 있음을 나타냅니다
TPdfPrintOutputCapabilities.VersionCompatible는 확장이 정확한 PdfPrintOutputAbiVersion 값을 반환할 때만 true입니다
TPdfPrintOutputCapabilities.ExtensionPresent는 print-output 확장이 로드되면 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는 PageNumber를 바꾸지 않고 1 기반 임의 페이지를 그립니다
요청했고 폼 작성 환경이 존재하면 폼 오버레이는 별도의 선택적 폼 export를 통해 페이지 콘텐츠 뒤에 그려집니다
네이티브 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;
이 메서드들은 확장의 버전, capability 비트, 해당 함수 export가 모두 일치할 때만 선택적 print-output 확장을 호출합니다
반환된 비트맵은 호출자가 소유하며 평범한 렌더링과 같은 유한한 PDFium 비트맵 경로를 사용합니다
확장이 없으면 각 연산은 RGB 출력으로 plate를 흉내 내거나 부정확한 overprint 동작을 주장하는 대신 EPdfError를 일으킵니다
| Export | Contract |
|---|---|
PDFiumPas_GetPrintOutputAbiVersion | PdfPrintOutputAbiVersion을 32비트 부호 없는 값으로 반환합니다 |
PDFiumPas_GetPrintOutputCapabilities | 선언된 spot 열거, spot 렌더링, overprint 감지, overprint 미리보기 capability 비트를 반환합니다 |
PDFiumPas_PageCountSpotPlates | 하나의 FPDF_PAGE에 대해 유한하고 음수가 아닌 plate 개수를 반환합니다 |
PDFiumPas_PageGetSpotPlateName | 끝의 0을 포함한 UTF-8 바이트 수를 반환하고 공급된 버퍼 안에서만 씁니다 |
PDFiumPas_PageUsesOverprint | 한 페이지에 대해 32비트 FPDF_BOOL을 반환합니다 |
PDFiumPas_RenderSpotPlate | 0 기반 plate 하나를 호출자가 소유하는 FPDF_BITMAP으로 렌더링합니다 |
PDFiumPas_RenderOverprintPreview | 컬러가 관리되는 overprint 미리보기를 호출자가 소유하는 FPDF_BITMAP으로 렌더링합니다 |
모든 ABI 함수는 cdecl, 32비트 정수와 FPDF_BOOL 값, 포인터 크기 핸들, PDFium 소유 페이지 의미론을 사용합니다
렌더 함수는 동기적으로 완료되어야 하며 공급된 비트맵이나 페이지 핸들을 붙잡아 두면 안 됩니다
알 수 없는 capability 비트는 RawCapabilityBits에 보존되지만 지원되는 동작으로 취급되지는 않습니다
SkiaCaps := GetSkiaRenderCapabilities;
if SkiaCaps.PageRender then
Pdf.RenderPageSkiaByIndex(SkCanvas, 1, 1200, 1600);
PrintCaps := GetPrintOutputCapabilities;
if PrintCaps.SpotPlateEnumeration then
Plates := Pdf.SpotPlates;