PDF/A – Создаем архивный файл без использования Adobe Acrobat Pro Используем для создания PDF/A Ghostscript и его обертку PDF2ARCHIVE

Продолжаем мини-цикл посвященный формату файлов PDF.
Это третий материал в данном цикле.
До этого были:

  1. Конвертация PDF в JPG
  2. PDF/A и Федеральный закон № 278-ФЗ от 3 июля 2016 года

В этой заметке я расскажу как можно конвертировать файлы PDF в архивный формат PDF/A используя Ghostscripn с дополнительной оберткой PDF2ARCHIVE.
Почему я выбрал такое решение, а не генерацию напрямую в Ghostscript.
На это было несколько причин:

  • Нестабильные результаты в Ghostscript
  • Рандомные ошибки на принимающей стороне (ФЗ-278)
  • Универсальность решения
  • Количество обращений на stackoverflow.com о PDF/A (1, 2)

PDF2ARCHIVE – является обычным Bash скриптом в 368 строк, который в режиме работы создает нужные для корректной конвертации файлы (ps, icc), так же имеется возможность сжатия PDF и проверки с использованием veraPDF (для этого на вашем сервере должна быть установлена Java).

Установка PDF2ARCHIVE, собственно заключается в скачивании архива с github – cтраница PDF2ARCHIVE и его распаковке и назначения атрибутов исполнения скрипта pdf2archive.
Но с Git быстрее:
Если Git не установлен – ставим:

# pkg install git

Склонируем:

# git clone https://github.com/matteosecli/pdf2archive.git

Создадим ссылку на pdf2archive:

# ln -s /home/vladimir/pdf2archive/pdf2archive /usr/local/bin/pdf2archive

Использование   PDF2ARCHIVE:

./pdf2archive [опции] input.pdf output.pdf

Можно не указывать выходной файл, при этом файл PDF/A создастся в директории входного файла как input-PDFA.pdf
Дополнительные опции (аргументы):

-h, --help - показать справку

--quality=<значение> - Установка качества (сжатия), 
доступны два параметра: high и low
high - лучшее качество соответствует установке в Ghostscript как /press
low - низкое качество соответствует установке в Ghostscript как /ebook

--title=<значение> - Установить заголовок в метаданных PDF

--author=<значение> - Указать автора в метаданных PDF

--subject=<значение> - Заполнить одноименное поле в метаданных

--cleanmetadata - Удалить все метаданные

--validate - Проверка созданного файла с помощью программы veraPDF, 
для этого должна быть установлена Java

--debug - Дебаг)

--v - Вывести версию PDF2ARCHIVE

Самый простой пример использования:

pdf2archive input.pdf output.pdf

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

GS VersionPASSFAILERROR
9.14716 (93.72%)48 (6.28%)0 (0%)
9.15716 (93.72%)48 (6.28%)0 (0%)
9.16715 (93.59%)49 (6.41%)0 (0%)
9.18715 (93.59%)49 (6.41%)0 (0%)
9.19715 (93.59%)49 (6.41%)0 (0%)
9.20715 (93.59%)49 (6.41%)0 (0%)
9.21715 (93.59%)49 (6.41%)0 (0%)
9.22715 (93.59%)49 (6.41%)0 (0%)

Так же интересная у него история создания данного скрипта:

История и мотивация (Google Translate)

Этот сценарий был рожден как необходимость, когда мне пришлось конвертировать PDF-файл моей дипломной работы, подготовленный LaTeX, в PDF / A-1B.

Давным-давно поставку дипломной работы нужно было выполнять вручную, записав компакт-диск с PDF дипломной работы. Мне не нужно говорить, что это было очень старомодно и неэффективно, так как вы должны были лично доставить компакт-диск в секретариат. Наконец, в 2015 году мой университет решил активировать онлайн-подачу PDF: вам просто нужно было загрузить свой PDF, и все готово, совершенно без проблем.

Затем, год назад, какой-то просвещенный ум, который знает, что такое административный офис, решил, что обычный PDF не достаточно прост; Итак, университет начал требовать гораздо более сатанинской PDF / A-1B. Конечно, они должны были предоставить набор инструкций для нас, простых смертных, чтобы мы могли создавать действительные файлы PDF / A-1B; и действительно они сделали, загрузив фантастический документ . Если вы взяли (щелчок) наживку и читать PDF (не PDF / A-1b, а!) Инструкции на предыдущей связанной странице, вы , возможно, заметили абсолютную полнотуинформации, содержащейся в нем: есть инструкции по преобразованию PDF в PDF / A-1B с помощью бесплатной программы только для Windows (да, я знаю) или устаревшего плагина OpenOffice, который больше не работает или платный , коммерческие программы, которые работают максимум только на Windows и MacOS. Нет свободной, кроссплатформенной альтернативы, потому что эй, все любят Windows! Естественно, вы можете напрямую создать PDF / A-1B версию своей диссертации. В этом документе перечислены некоторые простые инструкции для прямого экспорта в PDF / A-1B из Microsoft Word (или из Excel, потому что есть люди, которые, конечно, пишут свои диссертации в Excel) или из OpenOffice. Потому что все на Земле, особенно люди, которые занимаются физикой или математикой, пишут свои диссертации в Microsoft Word … они выглядятооочень красиво , особенно когда вам нужно поместить сноски, цитаты, оглавление, когда Word распространяет текст на странице в стиле зебры, и когда вы пишете те удивительные уравнения в Comic Sans, которые отображаются в формате JPEG с разрешением 10 DPI. “А люди, которые используют LaTeX”? «Латекс? Какой латекс? Я не занимаюсь грязным сексом»! – сказал бы парень, который написал этот документ.

Таким образом, вы могли бы представить меня и моих друзей в последний доступный день для доставки тезисов, все еще изо всех сил пытаясь выяснить, как конвертировать. Есть хороший сайт, который конвертирует PDF в PDF / A-1B файлы, но есть некоторые моменты:

  • Ваш диплом заполняется метаданными с этого сайта, что нехорошо для официального документа
  • ограничение размера файла составляет 10 Мб, так что если вы выполняете более экспериментальный диплом, который полон изображений, вы выходите
  • это решение зависит от чужих ресурсов; если сайт закроется завтра, вы в глубоком сра
  • он работает только онлайн, нет альтернативы в автономном режиме, если вы находитесь в пути
  • Вы должны отправить личные данные на неизвестный сайт
  • вы не знаете, какие операции выполняются с вашим файлом, а ваши данные – с другой стороны строки

Покопавшись в Google, вы можете найти людей, которые говорят, что вы можете выполнить преобразование через Ghostscript, просто включив пару переключателей; к сожалению, это не работает (онлайн-система Esse3 продолжает утверждать, что файл недействителен), и вопрос немного сложнее и плохо документирован. Ошибка при создании действительного PDF / A-1B связана со сложным набором необходимых требований, особенно встраивание шрифта, метаданных и цветового пространства. Этот скрипт представляет собой просто набор всего, что необходимо для получения (в большинстве случаев) действительного документа PDF / A-1B из обычного файла PDF, в надежде, что он упростит весь процесс. Он также содержит бесплатный валидатор с открытым исходным кодом это может проверить полученный файл (этот валидатор не был включен в официальные инструкции, на которые я ссылался ранее, которые вместо этого указывают на платные коммерческие продукты).

В некоторых случаях этот сценарий создает действительные файлы PDF / A-1B, которые отклоняются системой, поскольку они «слишком сложны», а валидатор, используемый Esse3 (нашей онлайновой системой в стиле 80-х, запрограммированной Topo Gigio ), отключается по таймауту. ; К сожалению, мы не можем найти решение, так как это проблема сервера. Подозревается, что они используют коммерческую версию онлайнового валидатора (который, кажется, единственный бесплатный, все еще работающий), который имеет ту же проблему тайм-аута при проверке «слишком сложных» PDF-файлов. Этот небольшой скрипт вместо этого показывает, что

  • вам просто нужно пару строк для реализации сценария преобразования
  • университет может просто потребовать обычный файл PDF и выполнить преобразование с помощью двух команд Ghostscript, без проблем для студентов
  • этот процесс будет бесплатным , так как Ghostscript является открытым исходным кодом
  • включение валидатора тривиально, и включенный здесь бесплатный валидатор с открытым исходным кодом (в отличие от используемого ими валидатора, который, вероятно, является коммерческим решением), может легко обрабатывать «слишком сложные» PDF-файлы без тайм-аута

На этом все:)

0 0 голосовать
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Встроенные отзывы
Просмотр всех комментариев