Metóda THotPDF.OptimizeLoadedStreams

Prepíše vybrané rodiny načítaných streamov ako Flate iba vtedy, keď je náhrada menšia o požadovaný prah

Deklarácia

function OptimizeLoadedStreams(
  FilterFamilies: THPDFLoadedStreamFilterFamilies;
  MinimumSavingsBytes: Int64;
  out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;

function OptimizeLoadedStreams(
  FilterFamilies: THPDFLoadedStreamFilterFamilies;
  MinimumSavingsBytes: Int64;
  RecompressionMode: THPDFFlateRecompressionMode;
  out AInfo: THPDFLoadedStreamOptimizationInfo): Integer; overload;

Unit

HPDFDoc

Parametre

NázovÚčel
FilterFamiliesVyberá nefiltrovaných, Flate, LZW, ASCII85, ASCIIHex a RunLength kandidátov
MinimumSavingsBytesPozitívna minimálna redukcia bajtov požadovaná predtým, ako kandidát nahradí svoj zdrojový stream
RecompressionModeVyberá štandardnú cestu jedného prechodu alebo deterministický výber Flate so štyrmi stratégiami s vysokým pomerom
AInfoPrijíma súčty naskenovaných, kandidátskych, prepísaných, nepodporovaných, zlyhaných, pred, po a ušetrených bajtov

Návratová hodnota

Vracia počet payloadov streamov nahradených v grafe načítaných objektov

Poznámky k používaniu

Typy a diagnostika

THPDFLoadedStreamFilterFamily = (lsffUnfiltered, lsffFlate, lsffLZW,
  lsffASCII85, lsffASCIIHex, lsffRunLength);
THPDFLoadedStreamFilterFamilies = set of THPDFLoadedStreamFilterFamily;

THPDFLoadedStreamOptimizationInfo = record
  ScannedStreamCount: Integer;
  CandidateStreamCount: Integer;
  RewrittenStreamCount: Integer;
  UnsupportedStreamCount: Integer;
  DecodeFailureCount: Integer;
  BytesBefore: Int64;
  BytesAfter: Int64;
  BytesSaved: Int64;
  FilterStatistics: THPDFLoadedStreamFilterStatistics;
  RecompressionMode: THPDFFlateRecompressionMode;
  CompressionTrialCount: Integer;
end;

FilterStatistics zaznamenáva počet streamov pred optimalizáciou, kódované bajty a prideľovanie fázy na rodinu bez vynútenia ďalšieho prechodu dekódovania

Príklad

Families := [lsffUnfiltered, lsffFlate, lsffLZW];
Count := PDF.OptimizeLoadedStreams(Families, 16, frmHighRatio, Info);
if Count > 0 then
  PDF.SaveLoadedDocument('optimized.pdf');

Súvisiace API