CompressContent
Свойства документа
Описание
Сжимает каждый поток содержимого страниц в выбранном документе. Используется алгоритм Flate (zlib), поэтому при сохранении документа потоки несут фильтр /FlateDecode. Уже сжатые потоки не трогаются
В Windows встроенный бэкенд zlib-ng работает в режиме совместимости с zlib. Win64-сборки линкуют SIMD-набор объектов zlib-ng для bcc64x, Win32 сохраняет универсальный набор с упором на совместимость. Существующий код Delphi, ActiveX, DLL и C++Builder правок не требует
Синтаксис
Delphi
Function TPDFlib.CompressContent: Integer;
ActiveX
Function PDFlib::CompressContent() As Long
DLL
int DLCompressContent(int InstanceID);
Возвращаемые значения
| 0 | No document is open or compression failed. |
|---|---|
| 1 | Потоки содержимого страниц успешно сжаты |
Примечания
Это операция по всему документу. Используйте CompressPage, если нужно сжать только выбранную страницу. Управлять тем, хранятся ли вновь добавляемые изображения и шрифты сжатыми, можно через CompressImages и CompressFonts соответственно
Прогоните один раз перед SaveToFile при сжатии свежесобранного документа; экономия обычно велика на страницах, насыщенных текстом, и ничтожна на страницах из в основном уже сжатых данных изображений
Пример
// Build a document, compress everything, then save
PDF.NewDocument;
PDF.AddStandardFont('Helvetica');
PDF.AddPage;
PDF.PrintText(50, 750, 'Compressed document');
PDF.CompressContent; // page streams -> /FlateDecode
PDF.CompressImages(1); // also flate-encode any subsequent images
PDF.SaveToFile('compressed.pdf');