PDFium Delphi Component Docs

RenderPageBandedToStream Methode

Komponente: TPdf  ·  Unit: PDFium
Kodiert die aktuelle Seite Band für Band in einen vom Aufrufer verwalteten Stream als PNG oder TIFF, ohne jemals eine Ganzseiten-Bitmap zu allozieren

Syntax

function RenderPageBandedToStream(Stream: TStream; Width,
  Height: Integer; const StreamOptions: TPdfBandedImageStreamOptions;
  Rotation: TRotation = ro0; Options: TRenderOptions = [];
  Color: TColor = clWhite): TPdfBandedImageReport;

StreamTStream. Vom Aufrufer verwaltete beschreibbare Ausgabe, positioniert an der Stelle, an der das Bild beginnt
StreamOptions.FormatpbifPng für komprimiertes 8-Bit-RGB-PNG oder pbifTiff für unkomprimierte Little-Endian-Klassik-TIFF-Streifen
StreamOptions.BandHeightPositive Band- und TIFF-Streifenhöhe; der Standardwert ist 256 Zeilen
StreamOptions.CompressionLevelPNG-zlib-Stufe von 0 bis 9; der Standardwert ist 6 und TIFF ignoriert sie
StreamOptions.MaxOutputBytesHarte Obergrenze für kodierte Bytes; null bedeutet unbegrenzt
RotationTRotation. Anzeigerotation, die auf die Seite angewendet wird
OptionsTRenderOptions. Rendering-Flags
ColorTColor. Hintergrundfüllung, die vor dem Rendern auf jedes Band angewendet wird
ResultTPdfBandedImageReport. Band-Anzahl, kodierte Zeilen, maximale Band-Bytes, Ausgabe-Bytes, Abschluss-Flag und das gewählte Format

Beschreibung

Die Methode legt den Stream in den angeforderten eingebauten Encoder, TPdfPngBandedImageEncoder oder TPdfTiffBandedImageEncoder, hinein und treibt die gemeinsame bandweise Pipeline von RenderPageBandedToEncoder an. Der zurückgegebene Report trägt das gewählte Format statt pbifCustom

Der PNG-Encoder komprimiert jede Scanline direkt in sequenzielle IDAT-Blöcke, während der TIFF-Encoder pro Render-Band einen RGB-Streifen schreibt und sein Image File Directory hinter den Pixeldaten anhängt. Beide Encoder schreiben ausschließlich vorwärts und positionieren den Aufrufer-Stream nie neu

Der Spitzen-Speicherbedarf für Seitenpixel ist eine Width x BandHeight-BGRA-Bitmap statt Width x Height. Der Report legt den gemessenen PeakBandBytes-Wert offen, damit Exporteure die Speicherstrategie prüfen können, und OutputBytes spiegelt wider, was tatsächlich in den Stream geschrieben wurde

Verwenden Sie TPdfBandedImageStreamOptions.Default(pbifPng) oder Default(pbifTiff), bevor Sie einzelne Grenzen überschreiben; die Standardwerte sind BandHeight = 256, CompressionLevel = 6 und MaxOutputBytes = 0

Hinweise

Ein nil-Stream, eine nicht positive BandHeight oder ein negatives MaxOutputBytes löst EPdfError aus, und pbifCustom wird abgelehnt, weil ein eingebauter PNG- oder TIFF-Format-Modus erforderlich ist

Wenn das kodierte Bild MaxOutputBytes überschreiten würde, löst der Schreibvorgang EPdfError mit der Meldung Encoded image exceeds the output byte budget aus

Verwenden Sie RenderPageBandedToEncoder mit einem eigenen TPdfBandedImageEncoder-Ableitung für jedes andere Containerformat oder für externe Codecs

Beispiel

StreamOptions := TPdfBandedImageStreamOptions.Default(pbifTiff);
StreamOptions.BandHeight := 256;
StreamOptions.MaxOutputBytes := Int64(512) * 1024 * 1024;
Report := Pdf.RenderPageBandedToStream(OutputStream, 4960, 7016,
  StreamOptions);
if not Report.Completed then
  RaiseBandedExportIncomplete;

Siehe auch

RenderPageBandedToEncoder, RenderPageBanded, RenderPage, RenderPageProgressive