Сжатие PDF-файлов на Mac. Добавляем собственные фильтры сжатия PDF.
Все без исключения пользователи Mac давно оценили удобство работы с PDF файлами в macOS, позволяя создавать эти самые PDF на уровне системы, не важно, предусмотрел разработчик данную функцию в своём приложении или нет.
Но это ещё не всё, если кто не знает, то с помощью стандартной программы «Просмотр» можно запросто объединять и сжимать PDF документы, а так же добавлять в них текст и комментарии.
Собственно, для изменения размера PDF достаточно открыть его программе «Просмотр» и перейти в меню «Файл» > «Экспортировать», где во всплывающем меню, в поле «Фильтр Quartz» выбрать «Reduce File Size» и указать место размещения нового pdf-файла. Всё.
Напрашивается резонный вопрос, раз всё это маки умеют делать прямо "из коробки", какой смысл в данной статье?
Дело в том, что сжатием изображений (отсканированные pdf по сути просто набор картинок) в macOS, как вы уже поняли, занимается фильтр Quartz. Одна беда - со стандартными настройками он жмёт как в последний раз, так что хрен потом разберёшь что было в оригинале. И что самое обидное, разработчики Apple не предоставили нам никакой возможности повлиять на работу фильтра, но не всё потеряно...
Добавляем собственные фильтры сжатия PDF
Получается что инструмент вроде как есть и задачу свою выполняет исправно, но вот результат не радует - из почти 100 Мбайтной PDF сделал мне 980 Кбайтную "какашку". Видя такое безобразие, решил добавить фильтры со своими настройками к системным.
Для начала скопируем файл с именем "Reduce File Size.qfilter" из системной папки /System/Library/Filters/ на рабочий стол:
cp /System/Library/Filters/Reduce\ File\ Size.qfilter ~/Desktop/
Этот файл (в формате XML) и возьмём за основу для создания собственных фильтров с нужными настройками сжатия (себе сделал с разрешениями 72dpi и 150dpi). Открываем файл стандартным текстовым редактором TextEdit (я лично использую Sublime Text), где видим вполне понятные записи в виде ключ (key) -> значение.
Приступим к настройке требуемых значений для сжатия изображений:
- ImageCompression - регулирует общее качество полученного изображения в диапазоне от -1 (наилучшее качество) до 1 (наибольшее сжатие).
- группа параметров ImageScaleSettings отвечает за масштабирование изображений
- ImageScaleFactor задаёт коэффициент масштабирования. Значение 0,5 уменьшит картинку в два раза (например изображение размером 1200x400 пикселей, станет 600x200, что приведёт к уменьшению файла).
- параметры ImageSizeMax и ImageSizeMin соотвественно ограничивают максимальный и минимальный размер изображений при масштабировании.
Предыдущие параметры оперируют относительными величинами, мне же удобнее задавать абсолютные значения, устанавливая все изображения в одно разрешение. Для этого создадим новый параметр в группе ImageScaleSettings и назовём его ImageResolution.
Осталось прописать нужное значение пикселей на дюйм (dpi), например: 72, 150 или 300 и установить коэффициент масштабирования, минимальный и максимальный размер изображения в ноль. Не забудьте прописать отображаемое имя своего фильтра в поле Name (Имя) - например "72 dpi image" и изменить имя файла (я назвал 72dpi.qfilter). Подобным образом можно сделать любые фильтры по вашему желанию.
Для того чтобы они появились в контекстном меню, помещаем наши файлы *.qfilter в каталог /Library/PDF Services/:
sudo cp ~/Desktop/*.qfilter /Library/PDF\ Services/
Архив с готовыми файлами .qfilter на 72 и 150 dpi можете скачать прямо сейчас (2KB).
Комментариев: 2
Спасибо большое за статью. Очень помогла!!!
Спасибо! Очень помогла статья!