function RenderPageProgressive(
Bitmap : TBitmap;
Left, Top, Width, Height: Integer;
const AToken : IPdfCancellationToken;
Rotation : TRotation = ro0;
Options : TRenderOptions = [];
Color : TColor = clWhite): TPdfProgressiveStatus;
Color = clNone oder Color = clDefault wählen transparenten Hintergrund und alphafähiges PDFium-Bitmap; unbedeckte Pixel behalten Alpha null unabhängig von der nativen Transparenzabfrage, auch in Teilergebnissen nach Abbruch; clWhite bleibt opaker Standard
RenderPageProgressive rendert die aktuelle Seite in die
angegebene Bitmap unter Verwendung der
FPDF_RenderPageBitmap_Start- +
FPDF_RenderPage_Continue-Schleife von PDFium. Zwischen
den Iterationen fragt der IFSDK_PAUSE-Callback von
PDFium AToken.IsCancelled ab — wenn die Anwendung
abgebrochen hat, wird die Schleife sauber zurückgerollt und die
Bitmap enthält die bisher geleistete Teilarbeit
PDFium rendert direkt in kompatible Zielpuffer; native LCL-Puffer benötigen passende Bytefolge, Kanalverschiebungen, Zeilenfolge und Stride; andere Layouts werden anhand ihrer tatsächlichen Raw-Image-Beschreibung konvertiert
Der Rückgabewert gibt an, wie das Render beendet wurde:
FPDF_RENDER_FAILED. Der Bitmap-Zustand ist undefiniertÜbergeben Sie AToken = nil, um bis zum Abschluss zu
rendern, ohne jemals zu pausieren. In diesem Fall pumpt die Funktion
weiterhin FPDF_RenderPage_Continue bis DONE, gibt aber
niemals prsCancelled zurück. Dies ist nützlich, wenn der
Aufrufer die Zwischen-Redraw-Punkte der progressiven Schleife (ein
benutzerdefiniertes OnPaint, das die In-Progress-Bitmap spiegelt)
möchte, aber keinen Abbruch benötigt
pf32bit; native LCL-Bitmaps behalten Plattformbeschreibung und rendern nur bei tatsächlich kompatiblem Pufferlayout direktTPdf serialisiert Render-Aufrufe pro Instanz; Aufrufer müssen dennoch vermeiden, das Dokument zu verändern oder zu entladen, während ein Render läuftEPdfError wird ausgelöst, wenn Bitmap nil ist — der Vertrag erfordert eine vom Aufrufer allokierte Bitmap, da der Zero-Copy-Pfad ein bekanntes DIB-Layout benötigt
uses FPdfAsync;
var
Bitmap: TBitmap;
Status: TPdfProgressiveStatus;
begin
Bitmap := TBitmap.Create;
try
Bitmap.PixelFormat := pf32bit;
Bitmap.SetSize(2480, 3508); // A4 @ 300 DPI
Status := Pdf1.RenderPageProgressive(Bitmap,
0, 0, Bitmap.Width, Bitmap.Height,
CancelToken, ro0, [reAnnotations]);
case Status of
prsDone: SaveBitmap(Bitmap);
prsCancelled: Log.Add('Cancelled mid-page');
prsFailed: Log.Add('PDFium FPDF_RENDER_FAILED');
end;
finally
Bitmap.Free;
end;
end;