PDFium Delphi Component Docs

Optionales natives Rendering

Unit: PDFium
Bietet fähigkeitsgesteuertes Skia-Rendering und eine versionierte optionale ABI für exakte Schmuckfarbenplatten- und Overprint-Ausgabe

Fähigkeitsabfragen

function GetSkiaRenderCapabilities: TPdfSkiaRenderCapabilities;
function GetPrintOutputCapabilities: TPdfPrintOutputCapabilities;

Beide Abfragen laden bei Bedarf das ausgewählte PDFium-Modul und melden nur Exporte, die in genau diesem Modul vorhanden sind

Fehlende optionale Exporte verhindern niemals das normale Laden von PDFium, das Bitmap-Rendering, die Bearbeitung oder das Speichern

TPdfSkiaRenderCapabilities.PageSceneCache zeigt an, dass RenderPageSkiaByIndex den begrenzten Cache für geparste Seiten wiederverwenden kann, der TPdf gehört

TPdfSkiaRenderCapabilities.FormOverlay zeigt an, dass der separate optionale Formular-Export das Formular-Overlay nach dem Seiteninhalt zeichnen kann

TPdfPrintOutputCapabilities.VersionCompatible ist nur True, wenn die Erweiterung genau den Wert PdfPrintOutputAbiVersion zurückgibt

TPdfPrintOutputCapabilities.ExtensionPresent ist True, sobald die Druckausgabe-Erweiterung geladen ist und AbiVersion die rohe ABI-Nummer trägt, die sie meldet

SpotPlateRendering, OverprintDetection und OverprintPreview schalten RenderSpotPlate, PageUsesOverprint und RenderOverprintPreview frei

Skia-Seiten- und Formularrendering

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);

Der Aufrufer besitzt das native SkCanvas und übergibt es als FPDF_SKIA_CANVAS

RenderPageSkia zeichnet die aktive Seite, während RenderPageSkiaByIndex eine beliebige 1-basierte Seite zeichnet, ohne PageNumber zu ändern

Wenn angefordert und eine Form-Fill-Umgebung vorhanden ist, wird das Formular-Overlay nach dem Seiteninhalt über den separaten optionalen Formular-Export gezeichnet

Die native Skia-API akzeptiert eine Pixelgröße, legt aber die Rotations- und Flag-Parameter des Bitmap-Renderers nicht offen

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;

Diese Methoden rufen die optionale Druckausgabe-Erweiterung nur auf, wenn ihre Version, das Fähigkeits-Bit und der zugehörige Funktionsexport übereinstimmen

Zurückgegebene Bitmaps gehören dem Aufrufer und verwenden denselben begrenzten PDFium-Bitmap-Pfad wie das normale Rendering

Wenn die Erweiterung fehlt, löst jede Operation EPdfError aus, statt Platten aus RGB-Ausgabe zu simulieren oder ein ungenaues Overprint-Verhalten vorzutäuschen

Druckausgabe-ABI Version 1

ExportKontrakt
PDFiumPas_GetPrintOutputAbiVersionGibt PdfPrintOutputAbiVersion als vorzeichenlosen 32-Bit-Wert zurück
PDFiumPas_GetPrintOutputCapabilitiesGibt die deklarierten Fähigkeits-Bits für Schmuckfarben-Aufzählung, Schmuckfarben-Rendering, Overprint-Erkennung und Overprint-Vorschau zurück
PDFiumPas_PageCountSpotPlatesGibt eine begrenzte, nicht negative Plattenanzahl für ein FPDF_PAGE zurück
PDFiumPas_PageGetSpotPlateNameGibt die UTF-8-Byteanzahl einschließlich des abschließenden Nullbytes zurück und schreibt ausschließlich innerhalb des bereitgestellten Puffers
PDFiumPas_PageUsesOverprintGibt einen 32-Bit-FPDF_BOOL für eine Seite zurück
PDFiumPas_RenderSpotPlateRendert eine 0-basierte Platte in ein vom Aufrufer verwaltetes FPDF_BITMAP
PDFiumPas_RenderOverprintPreviewRendert eine farbverwaltete Overprint-Vorschau in ein vom Aufrufer verwaltetes FPDF_BITMAP

Alle ABI-Funktionen verwenden cdecl, 32-Bit-Integer- und FPDF_BOOL-Werte, zeigergroße Handles und eine Seitensemantik im Besitz von PDFium

Renderfunktionen müssen synchron abschließen und dürfen den bereitgestellten Bitmap- oder Seiten-Handle nicht zurückhalten

Unbekannte Fähigkeits-Bits werden in RawCapabilityBits bewahrt, aber nicht als unterstütztes Verhalten behandelt

Beispiel

SkiaCaps := GetSkiaRenderCapabilities;
if SkiaCaps.PageRender then
  Pdf.RenderPageSkiaByIndex(SkCanvas, 1, 1200, 1600);

PrintCaps := GetPrintOutputCapabilities;
if PrintCaps.SpotPlateEnumeration then
  Plates := Pdf.SpotPlates;

Siehe auch

TPdf.RenderPageByIndex, TPdf.ClearPageSceneCache