Pull to refresh
138.23

Альтернативные утилиты для PDF

Reading time4 min
Views13K


Помимо программ от Adobe есть много альтернативных специализированных библиотек и утилит для работы с PDF. Что характерно, зачастую опенсорсные инструменты даже удобнее, чем официальный* софт. Альтернативные ридеры/редакторы по функциональности сильно отличаются от Adobe. В свою очередь, программы Adobe сами отличаются от официальных спецификаций PDF.

*Примечание: программы Adobe не «официальные» в прямом смысле слова, потому что PDF является открытым и бесплатным стандартом ИСО.

Налицо как минимум три класса множеств:

  1. функции из спецификаций PDF разных версий (самые большие множества);
  2. функции «официальных» Adobe Acrobat/Acrobat Pro/Reader (ещё несколько множеств);
  3. функции альтернативных ридеров, утилит и библиотек для обработки PDF.

В 2017–2023 гг должно завершиться принятие пакета стандартов PDF 2.0, который пришёл на смену прежним версиям PDF 1.0–1.7. Он требует реализации новых функций при сохранении обратной совместимости. Крайне сложная задача.

На практике иногда удобнее использовать легковесные инструменты от сторонних разработчиков, которые поддерживают лишь часть спецификаций PDF, но только нужные вещи, без груза легаси. Среди них специализированные утилиты, которые выполняют одну задачу, но лучше, чем коммерческие инструменты.

Библиотека для генерации PDF


В качестве конкретного примера можно взглянуть на маленькую библиотеку CapyPDF от Юсси Пакканена (Jussi Pakkanen). Это библиотека для генерации PDF, в ней реализована малая часть стандарта, а некоторые функции реализованы, но не открыты для использования. Например, в текущем рендеринге PDF функционирует следующее:

  • Основные графические команды для RGB, градаций серого и CMYK
  • Поддержка ICC-профилей
  • Загрузка изображений PNG, JPG и TIFF (включая CMYK TIFF)
  • Вставка файлов JPG напрямую без предварительной распаковки
  • Использование изображений в качестве маски для рисования
  • Работа со встроенными в изображения цветовыми профилями
  • Использование встроенных шрифтов PDF
  • Использование шрифтов TrueType, в том числе с возможностью усечения подмножества шрифтов (font subsetting)
  • Все операторы шрифтов PDF, такие как дополнительная подложка (extra padding), верхний/нижний регистр и установка в качестве обтравочного контура (clipping path)
  • Переходы между страницами

Реализовано, но не открыто (код есть, но не добавлен или оформлен в виде комментариев):

  • Дерево навигации по документу
  • Оверпринт (наложение одного цветного элемента на другой без создания выворотки)
  • Структура и аннотации
  • Дополнительные цветовые каналы (в спецификации PDF они называются сепарациями)
  • Объекты XObjects для форм
  • Встраивание файлов
  • Аннотации (только несколько типов)
  • Поддержка цветового пространства L*a*b*
  • Цвета ICC в примитивных операциях заливки
  • Оттенки Type 2, 3 и 4 (например, градиенты)
  • Цветовые узоры

А есть ещё функции, которые не совсем совпадают со спецификациями. Скажем, навигация внутри страниц. Согласно спецификациям PDF 2.0, раздел 12.4.4.2, на одной странице можно реализовать много пунктов, которые будут открываться один за другим по щелчку мыши. Это сделано для презентаций. Однако почти все генераторы PDF реализуют список не на одной, а на нескольких страницах. То есть список из пяти пунктов занимает не одну, а пять страниц. Единственный ридер, который поддерживает навигацию внутри страниц — это Acrobat Reader. Но сейчас ни один генератор PDF, никакая программа для создания презентаций не экспортирует теги навигации по страницам.

Причина в размытости формулировок официальной спецификации, так что эту функцию трудно реализовать однозначным образом. Там в качестве основных операций используются опциональные контент-группы (optional content groups) и навигационные узлы. Первые поддерживаются всеми ридерами PDF, вторые — нет. Каждый навигационный узел представляет собой состояние (state). Когда пользователь перемещается вперёд и назад, ридер выполняет определённое действие, которое может быть использовано для скрытия или отображения опциональной контент-группы. Согласно спецификации, система работает по сложному двунаправленному алгоритму:



По мнению некоторых разработчиков, внедрение в эту схему корня (root) — излишнее усложнение. С другой стороны, такой вариант позволяет практически любой документ реализовать в виде одностраничного PDF с множеством «состояний».

Здесь сами спецификации нуждаются в исправлении, потому что некоторые части там противоречат друг другу.

Подводя итог, CapyPDF не может открыть и редактировать документы, зато справляется с одной конкретной задачей — генерация PDF — настолько, насколько это позволяют спецификации.

Движки для рендеринга PDF в браузерах


Кроме отдельных ридеров/редакторов PDF, особого внимания заслуживают браузерные движки рендеринга и веб-редакторы. Они тоже становятся всё функциональнее с каждой новой версией. Например, в Firefox с версии 106 (октябрь 2022 года) появился встроенный редактор PDF, включающий в себя добавление текста и рисование фигур, в том числе подписей:



Firefox позволяет делать аннотации: печатать или писать от руки прямо в PDF, выбирать цвет, размер, толщину линий, непрозрачность и т.д., а затем сохранять PDF-файл локально с новыми дополнениями.

Недавно мы рассказывали про очень удобный веб-редактор simplePDF, ориентированный на простейшие и быстрые манипуляции с PDF, как то:

  • вписать имя в PDF-форму;
  • проставить галочки;
  • поставить подпись;
  • добавить фото.

Демо:

К сожалению, онлайновые PDF-редакторы пока не поддерживают подпись документов с помощью цифровых сертификатов, защиту от редактирования и другие функции безопасности, которые реализованы на платформе Adobe PDF.

Для цифровой подписи PDF тоже можно использовать отдельные инструменты. Например, простую опенсорсную утилиту open-pdf-sign из командной строки. Подписи невидимы (по умолчанию) или явно демонстрируются:



Консольную утилиту можно использовать с существующими сертификатами от любых удостоверяющих центров.

Вообще, стандарт PDF 2.0 настолько сложный и объёмный, что реализовать его целиком согласно спецификациям в одной программе крайне сложно. Например, основной документ ISO 32000-2:2020 — Document management – Portable document format – Part 2: PDF 2.0 содержит 1003 страницы:



К нему принято ещё несколько приложений, в том числе приложение по цифровым подписям ISO/TS 32002:2022, и это только два из шести документов в пакете стандартов PDF 2.0.

В целом, иногда эффективнее использовать маленькие специализированные утилиты. Такие опенсорсные утилиты существуют отдельно для генерации, просмотра и подписи PDF.
Tags:
Hubs:
Total votes 7: ↑5 and ↓2+5
Comments25

Articles

Information

Website
www.globalsign.com
Registered
Founded
1996
Employees
501–1,000 employees
Location
Япония