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
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
| Export | Contract |
|---|---|
PDFiumPas_GetPrintOutputAbiVersion | Zwraca PdfPrintOutputAbiVersion jako 32-bitową wartość bez znaku |
PDFiumPas_GetPrintOutputCapabilities | Zwraca zadeklarowane bity możliwości: wyliczanie płyt spot, renderowanie płyt spot, detekcję nadrukowania i podgląd nadrukowania |
PDFiumPas_PageCountSpotPlates | Zwraca ograniczoną, nieujemną liczbę płyt dla jednego FPDF_PAGE |
PDFiumPas_PageGetSpotPlateName | Zwraca liczbę bajtów UTF-8 wraz z zerem kończącym i zapisuje wyłącznie w obrębie dostarczonego bufora |
PDFiumPas_PageUsesOverprint | Zwraca 32-bitowy FPDF_BOOL dla jednej strony |
PDFiumPas_RenderSpotPlate | Renderuje jedną płytę o numerze od zera do FPDF_BITMAP należącego do wywołującego |
PDFiumPas_RenderOverprintPreview | Renderuje 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
SkiaCaps := GetSkiaRenderCapabilities;
if SkiaCaps.PageRender then
Pdf.RenderPageSkiaByIndex(SkCanvas, 1, 1200, 1600);
PrintCaps := GetPrintOutputCapabilities;
if PrintCaps.SpotPlateEnumeration then
Plates := Pdf.SpotPlates;