2

Согласно главе 3.2 « Справочника по языку PostScript», «для языка PostScript существует три кодировки:ASCII, двоичный токен и последовательность двоичных объектов».

Мы генерируем PDF-файлы из HTML/CSS с помощью PrinceXML уже довольно давно. В последнее время возникло новое требование в сотрудничестве с другой компанией, которой необходимо содержимое наших файлов PDF в виде Postscript. При преобразовании PDF в PS через командную строку с использованием pdf2ps, pdftops, a2ping или других, получающиеся PS-файлы, похоже, имеют одну из двоичных кодировок, так как нет способа поиска текста.

Мы доставляем файл PS за несколько дней до начала печати и заранее не знаем дату печати, но в качестве требования необходимо печатать дату печати. Поэтому нам нужно вставить заполнитель даты (##.##. ####), которые они автоматически заменят при печати.

Если мы вставим этот заполнитель в наше представление HTML/CSS, его нельзя будет найти в содержимом файла postscript и, следовательно, не заменить текущей датой перед печатью.

Кто-нибудь знает способ конвертировать PDF в ASCII PostScript, чтобы можно было найти и заменить содержащийся текст?

2 ответа2

0

Другое решение состоит в том, чтобы изменить исходный pdf так, чтобы дата была в форме, а затем использовать flpsed для ее заполнения! Проверьте это здесь: http://freshmeat.net/projects/flpsed

0

Мне не повезло с pd2fps.

С pdftops версии 0.12.4, в комплекте с poppler, я могу найти текст в коде PS, но только одно слово за раз (каждое слово заключено в круглые скобки).

Например скачать

wget ctan.org/tex-archive/macros/latex/contrib/lipsum/lipsum.pdf
pdftops lipsum.pdf
sed 's;2011/;2012/;' lipsum.ps > lipsum2.ps

Это изменит год (присутствует в начале файла) с 2011 на 2012, но обратите внимание, что вы не всегда можете просто изменить текст, в зависимости от структуры кода PS может не хватить места для замены текста. Попробуйте предыдущий пример с 2013 вместо 2012, и вы увидите.

Я не понимаю postscript, но подозреваю, что некоторые преобразования МОГУТ привести к частично двоичному и частично текстовому файлу, если так, попробуйте использовать sed, который оставит нетекстовые байты как есть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .