PDFium Delphi Component Docs

SaveAsFlateRecompressed Метод

Компонент: TPdf  ·  Модуль: PDFium
Перезаписывает документ и перекодирует подходящие потоки FlateDecode с максимальным сжатием, заменяя поток только тогда, когда измеренная экономия байтов превышает порог вызывающего кода

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 сначала записывает неинкрементальную копию текущего документа в памяти, затем обёртка выполняет обход достижимости по всему документу в точности как SaveAsReachable

Каждый достижимый поток FlateDecode декодируется с помощью PdfInflate и перекодируется с помощью DeflateCompress с максимальным сжатием; заменяются только потоки, измеренная экономия которых превышает одновременно MinSavingBytes и MinSavingRatio

Номера объектов и поколения остаются стабильными, поэтому меняются только перекодированные данные потоков и их прямые значения /Length; каждая выжившая перекрёстная ссылка остаётся действительной без перенумерации

Результат - одна классическая ревизия, в которой перестроенный трейлер переносит /Root, /Info и /ID

Policies and limits

Example

Options.MinSavingBytes:= 64;
Options.MinSavingRatio:= 0.1;
Pdf.SaveAsFlateRecompressed('recompressed.pdf', Options, Report);
WriteLn('recompressed ', Report.RecompressedCount, ' streams');

See Also

SaveAsReachable, SaveAsDeduplicated, SaveAs