PDFium Component Docs

Opcjonalne renderowanie natywne

Unit: PDFium
Udostępnia bramkowane możliwościami renderowanie Skia oraz wersjonowane opcjonalne ABI dla dokładnego wyjścia płyt spot i nadrukowania

Capability Queries

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Oba zapytania w razie potrzeby wczytują wybrany moduł PDFium i raportują wyłącznie eksporty faktycznie obecne w tym właśnie module

Brakujące eksporty opcjonalne nigdy nie przeszkadzają w normalnym wczytaniu PDFium, renderowaniu bitmap, edycji ani zapisie

TPdfSkiaRenderCapabilities.PageSceneCache oznacza, że RenderPageSkiaByIndex może ponownie używać ograniczonego cache sparsowanych stron należącego do TPdf

TPdfSkiaRenderCapabilities.FormOverlay oznacza, że osobny opcjonalny eksport formularzy potrafi dorysować nakładkę formularza po zawartości strony

TPdfPrintOutputCapabilities.VersionCompatible jest prawdziwe tylko wtedy, gdy rozszerzenie zwraca dokładnie wartość PdfPrintOutputAbiVersion

TPdfPrintOutputCapabilities.ExtensionPresent jest prawdziwe od momentu wczytania rozszerzenia wyjścia druku, a AbiVersion przenosi surowy numer ABI, jaki ono zgłasza

SpotPlateRendering, OverprintDetection i OverprintPreview bramkują RenderSpotPlate, PageUsesOverprint i 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);

Wywołujący jest właścicielem natywnego SkCanvas i przekazuje go jako FPDF_SKIA_CANVAS

RenderPageSkia rysuje aktywną stronę, a RenderPageSkiaByIndex rysuje dowolną stronę o numerze od 1 bez zmiany PageNumber

Na życzenie i przy istnieniu środowiska wypełniania formularzy nakładka formularza jest rysowana po zawartości strony przez osobny opcjonalny eksport formularzy

Natywne API Skia przyjmuje rozmiar w pikselach, ale nie udostępnia parametrów rotacji ani flag renderer bitmapowego

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;

Te metody wywołują opcjonalne rozszerzenie wyjścia druku tylko wtedy, gdy wersja, bit możliwości i odpowiedni eksport funkcji są zgodne

Zwrócone bitmapy należą do wywołującego i korzystają z tej samej ograniczonej natywnej ścieżki bitmap PDFium co zwykłe renderowanie

Gdy rozszerzenia brakuje, każda operacja podnosi EPdfError zamiast symulować płyty z wyjścia RGB albo podawać nieprecyzyjne zachowanie nadrukowania

Print-output ABI version 1

ExportContract
PDFiumPas_GetPrintOutputAbiVersionZwraca PdfPrintOutputAbiVersion jako 32-bitową wartość bez znaku
PDFiumPas_GetPrintOutputCapabilitiesZwraca zadeklarowane bity możliwości: wyliczanie płyt spot, renderowanie płyt spot, detekcję nadrukowania i podgląd nadrukowania
PDFiumPas_PageCountSpotPlatesZwraca ograniczoną, nieujemną liczbę płyt dla jednego FPDF_PAGE
PDFiumPas_PageGetSpotPlateNameZwraca liczbę bajtów UTF-8 wraz z zerem kończącym i zapisuje wyłącznie w obrębie dostarczonego bufora
PDFiumPas_PageUsesOverprintZwraca 32-bitowy FPDF_BOOL dla jednej strony
PDFiumPas_RenderSpotPlateRenderuje jedną płytę o numerze od zera do FPDF_BITMAP należącego do wywołującego
PDFiumPas_RenderOverprintPreviewRenderuje podgląd nadrukowania zarządzany barwnie do FPDF_BITMAP należącego do wywołującego

Wszystkie funkcje ABI używają cdecl, 32-bitowych wartości całkowitych i FPDF_BOOL, uchwytów o rozmiarze wskaźnika oraz semantyki stron należących do PDFium

Funkcje renderujące muszą kończyć się synchronicznie i nie mogą zatrzymywać dostarczonej bitmapy ani uchwytu strony

Nieznane bity możliwości są zachowywane w RawCapabilityBits, ale nie są traktowane jako obsługiwane zachowanie

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