PDFium Delphi Component Docs

RenderPageBandedToStream metoda

Komponenta: TPdf  ·  Jednotka: PDFium
Zakóduje aktuální stránku pás po pásu do streamu ve vlastnictví volajícího jako PNG nebo TIFF, aniž by kdykoli alokovala bitmapu celé stránky

Syntaxe

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

StreamTStream. Zapisovatelný výstup ve vlastnictví volajícího, pozicovaný tam, kde obrázek začíná
StreamOptions.FormatpbifPng pro komprimované 8bitové RGB PNG nebo pbifTiff pro nekomprimované klasické TIFF pruhy little-endian
StreamOptions.BandHeightKladná výška pásu a pruhu TIFF; výchozí je 256 řádků
StreamOptions.CompressionLevelÚroveň PNG zlib od 0 do 9; výchozí je 6 a TIFF ji ignoruje
StreamOptions.MaxOutputBytesPevný strop zakódovaných bajtů; nula znamená bez limitu
RotationTRotation. Otočení zobrazení aplikované na stránku
OptionsTRenderOptions. Příznaky vykreslování
ColorTColor. Výplň pozadí nanesená na každý pás před vykreslením
ResultTPdfBandedImageReport. Počty pásů, zakódované řádky, vrcholné bajty pásu, výstupní bajty, příznak dokončení a zvolený formát

Popis

Metoda obalí stream požadovaným vestavěným kodekem, TPdfPngBandedImageEncoder nebo TPdfTiffBandedImageEncoder, a řídí sdílenou pásovou pipeline RenderPageBandedToEncoder. Vrácený přehled nese zvolený Format místo pbifCustom

PNG kodek komprimuje každý scanline přímo do sekvenčních chunků IDAT, zatímco TIFF kodek zapisuje jeden RGB pruh na vykreslený pás a svůj image file directory připojuje za pixelová data. Oba kodeky zapisují jen dopředu a stream volajícího nikdy nepřesunují

Vrcholné úložiště pixelů stránky je jedna bitmapa BGRA Width x BandHeight místo Width x Height. Přehled vystavuje změřené PeakBandBytes, takže exportéři mohou paměťovou politiku auditovat, a OutputBytes odráží, co se do streamu skutečně zapsalo

Před přepsáním jednotlivých limitů použijte TPdfBandedImageStreamOptions.Default(pbifPng) nebo Default(pbifTiff); výchozí hodnoty jsou BandHeight = 256, CompressionLevel = 6 a MaxOutputBytes = 0

Poznámky

Nil stream, nekladná BandHeight nebo záporné MaxOutputBytes vyvolá EPdfError a pbifCustom se odmítne, protože je potřeba vestavěný formát PNG nebo TIFF

Když by zakódovaný obrázek překročil MaxOutputBytes, zápis vyvolá EPdfError se zprávou Encoded image exceeds the output byte budget

Pro jakýkoli jiný kontejnerový formát nebo externí kodeky použijte RenderPageBandedToEncoder s vlastním potomkem TPdfBandedImageEncoder

Příklad

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;

Viz také

RenderPageBandedToEncoder, RenderPageBanded, RenderPage, RenderPageProgressive