Алгоритмы сжатия в PDF
PDF-файлы значительно меньше, чем эквивалентные PostScript-файлы. Это обусловлено лучшей структурированностью данных и эффективными алгоритмами компрессии, которые поддерживаются в PDF.
Все тексты и операторы PostScript, из которых состоит PDF-файл могут быть сжаты по алгоритму LZW. Этот основной алгоритм компрессии может уменьшить размер PDF-файла вдвое относительно исходного PostScript-файла.
Если компрессия включена в Acrobat Distiller, то сначала производится декомпрессия всех изображений в PostScript-файле, а затем их сжатие при создании PDF-файла.
Для изображений поддерживаются различные алгоритмы компрессии:
- JPEG сжатие
- ZIP сжатие
- CCITT сжатие
- RLE (Run Length Encoding)
- Flate сжатие
Большинство этих алгоритмов компрессии рассмотрены подробно здесь.
Проверка использования компрессии в PDF
Откройте PDF в любом редакторе, позволяющем открывать двоичные файлы (TextPad, UltraEdit,...) и сделайте поиск по ключевому слову "/Filter".
JPEG сжатие
JPEG сжатие используются для цветных и серых изображений. Это компрессионный алгоритм для сжатия как с потерями, так и без потерь. В Acrobat используется только алгоритм сжатия с потерями. Это означает, что некоторые детали изображения будут утрачены при сжатии. Чем выше коэффициент сжатия, тем больше деталей вы потеряете.
Дополнительная информация о JPEG сжатии находится на этой странице.
Distiller 3.x позволяет выбирать из 5 различных уровней сжатия:
- Low, с потерями качества, допустимыми для большинства работ. Средний коэффициент сжатия: 1/2
- Low medium
- Medium, допустимый для работ среднего качества. Средний коэффициент сжатия: 1/5
- High medium
- High, не допустимый для использования в препрессе. Средний коэффициент сжатия: 1/10
Distiller 4 имеет подобные установки, но не соответствующие в точности установкам в Acrobat 3. В Distiller 4.0 был баг в алгоритме JPEG. Этот баг был исправлен в версии 4.05. Эти установки:
- Minimum
- Low
- Medium
- High
- Maximum
Не сжимайте изображения, которые уже были сжаты в JPEG, это приведет к дополнительным потерям информации. При обработке файла с JPEG-сжатыми изображениями, они сначала будут декомпрессированы, а затем сжаты снова, в соответствии с вашими установками. Это даст дополнительную потерю качества изображения.
Quite-a-box-of-tricks от Quite software содержит более мощный алгоритм JPEG компрессии, чем поддерживаемый Acrobat. Этот плагин также позволяет рекомпрессировать PDF-файлы.
ZIP сжатие
Алгоритм ZIP используется в популярных PC приложениях, таких как PKzip, WinZIP или StuffIt. Выбор ZIP компрессии не означает, что Acrobat создаст архивированный файл, он просто будет использовать этот алгоритм для сжатия изображений.
ZIP - улучшенная версия алгоритма LZW. Он сканирует файл или изображение в поисках повторяющихся участков и заменяет их ссылками на образец.
ZIP - алгоритм сжатия без потерь. Это означает, что содержимое изображения не меняется при его сжатии. В Acrobat 4 это достаточно эффективный метод. Но Acrobat 3 содержал опции, которые назывались 4-bit и 8-bit ZIP сжатие. 4-bit ZIP-сжатие означает, что Acrobat сначала изменял число цветов в изображении с 256 на канал на 16 на канал, а затем выполнял ZIP-сжатие без потерь. Это давало большой выигрыш в дисковом пространстве, но изображения серьезно страдали. Избегайте 4-bit ZIP-сжатия, за исключением тех случаев, когда вы твердо уверены, что это возможно. 8-bit ZIP-сжатие никогда не приводит к потерям в изображениях.
CCITT сжатие
CCITT-сжатие используется для черно-белых изображений. Это алгоритм, применяемый в факсовых аппаратах. Это алгоритм без потерь, не приводящий к искажению изображений.
Acrobat поддерживает сжатие CCITT group 3 или group 4.
RLE сжатие
RLE означает Run Length Encoding. Это алгоритм сжатия без потерь и не приводит к искажению изображений. RLE - простейший алгоритм сжатия. Вместо записи файла в виде: белый пиксел, белый, белый,...,черный, черный,... в RLE-сжатом файле информация хранится как: 129 белых, 14 черных, 200 белых...
Acrobat RLE-сжатие может быть использовано для черно-белых изображений. Большинство предпочитает использовать CCITT-сжатие, по причине его большей эффективности.
Flate
Flate (или deflate, как его иногда называют) это сложный комплексный алгоритм сжатия. Здесь он описан более подробно.