PDF/A — Создаем архивный файл без использования Adobe Acrobat Pro

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

В этой заметке я расскажу как можно конвертировать файлы PDF в архивный формат PDF/A используя Ghostscripn с дополнительной оберткой PDF2ARCHIVE.
Это третий материал в данном цикле.

До этого были материалы:

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

Почему я выбрал такое решение, а не генерацию напрямую в Ghostscript.

На это было несколько причин:

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

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

Установка PDF2ARCHIVE

Собственно заключается в скачивании архива с github — страница PDF2ARCHIVE и его распаковке и назначения атрибутов исполнения скрипта pdf2archive.

Если 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-файлы без тайм-аута

На этом все:)

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

Этот сайт защищен reCAPTCHA и применяются Политика конфиденциальности и Условия обслуживания Google.

:) :D :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.