Теперь и по автоматическому алгоритму!
Автоматическая проверка pdf-файлов перед их печатью используется достаточно давно, более 20 лет. Настала пора озадачиться и автоматическим их исправлением. Особенно эта тема актуальна в цифровой печати или в печати сборных тиражей, где очень большой поток небольших заказов.
Исторически в России для проверки и исправления pdf в основном используется Enfocus PitStop. И этот пакет замечательно справляется с проверкой pdf и ручным их исправлением. А вот автоматическое исправление было осложнено тем, что в PitStop’е нет возможности программировать. Эта ситуация могла быть исправлена с помощью ещё одного продукта того же разработчика — Enfocus Switch. Но он стоит дорого и весьма сложен в освоении.
А вот аналогичный PitStop’у продукт от компании Callas под названием pdfToolbox (не путать с одноименным плагином к «Акробату» от компании Heidelberg) в России мало известен. И совершенно не заслуженно.
В pdfToolbox можно писать код на java script. На самом деле все, кто хоть раз пользовался префлайтом «Акробата», с pdfToolbox знакомы, хоть и многие не подозревают об этом. Префлайт Акробата — это сильно урезанный по функционалу pdfToolbox.
PdfToolbox, в отличие от PitStop, который представляет собой плагин к Акробату, это самостоятельное приложение. То есть с его помощью можно работать с pdf-файлами БЕЗ Акробата. Но при этом в pdfToolbox нет возможности ручного поэлементного редактирования отдельных объектов как в PitStop. Можно выделить объект и увидеть всю информацию о нём, но нельзя ничего изменить. Все изменения производятся только фиксапами.
В pdfToolbox есть чёткое разграничение между checks и fixups. Первые служат для проверок и нахождения объектов с определёнными свойствами, вторые — для изменения объектов. Кроме этого, там есть такая сущность, как process plan. Это возможность задавать последовательность чеков и фиксапов, а также кусков js-кода с возможностью ветвления по условию.
В целом весьма несложно запрограммировать макрос на pdfToolbox, который автомитическаи поправлял бы типовые ошибки, в том числе по условиям ветвления алгоритма.