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

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

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

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

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

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

22
задан Ƭᴇcʜιᴇ007
02.02.2023 17:53 Количество просмотров материала 2509
Распечатать страницу

2 ответа

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

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

например download

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, который оставит нетекстовые байты как есть.

0
отвечен David Costa 2023-02-04 01:41

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

0
отвечен David Costa 2023-02-04 03:58

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх