PDFium Delphi Component Docs

SaveAsFlateRecompressed metoda

Component: TPdf  ·  Unit: PDFium
Přepíše dokument a znovu zakóduje vhodné proudy FlateDecode s maximální kompresí, přičemž proud nahradí pouze tehdy, když změřená úspora bajtů překoná práh zvolený volajícím

Syntax

function SaveAsFlateRecompressed(Stream: TStream; const Options: TPdfFlateRecompressOptions; out Report: TPdfFlateRecompressReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsFlateRecompressed(const FileName: string; const Options: TPdfFlateRecompressOptions; out Report: TPdfFlateRecompressReport; AllowSignedDocument: Boolean = False): Boolean;

Description

PDFium nejprve zapíše nepřírůstkovou kopii aktuálního dokumentu v paměti a poté obálka provede celodokumentovou procházku dosažitelnosti přesně jako SaveAsReachable

Každý dosažitelný proud FlateDecode je dekódován pomocí PdfInflate a znovu zakódován pomocí DeflateCompress s maximální kompresí; nahrazeny jsou pouze proudy, jejichž změřená úspora překoná jak MinSavingBytes, tak MinSavingRatio

Čísla objektů a generace zůstávají stabilní, takže se mění pouze znovu komprimované obsahy proudů a jejich přímé hodnoty /Length; každý přeživší křížový odkaz zůstává platný bez přečíslování

Výstup je jediná klasická revize se znovu sestaveným trailerem přenášejícím /Root, /Info a /ID dále

Policies and limits

Example

Options.MinSavingBytes:= 64;
Options.MinSavingRatio:= 0.1;
Pdf.SaveAsFlateRecompressed('recompressed.pdf', Options, Report);
WriteLn('znovu komprimováno ', Report.RecompressedCount, ' proudů');

See Also

SaveAsReachable, SaveAsDeduplicated, SaveAs