Заменить изображение в PDF с помощью командной строки

11

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

Я читал о poppler-utils и pdftk, но, насколько мне известно, ни один из этих инструментов не позволяет заменять изображения в PDF.

Иван
источник
1
Если вы найдете ответ, будет действительно интересно узнать. После выделения «проблемной страницы» вы можете использовать ImageMagick, чтобы вставить изображение в другое, а затем преобразовать его обратно в pdf: imagemagick.org/Usage/layers Также: superuser.com/questions/614784/…
Konstantinos
Спасибо @pidosaurus. Мне понравились эти опции, но у них есть большая проблема: это подразумевает преобразование PDF (или страницы подписи) в изображения. Это проблема, потому что полученный PDF будет намного больше по размеру, и пользователь не сможет выбрать фрагмент текста для копирования и вставки, например.
Иван
lookup convert из imagemagick и, более того, инструменты, предоставляемые ooconv из openoffice (сейчас libreoffice) - я однажды нанял кого-то написать конвертер PPT в PDF, и именно эти инструменты использовались.
математика
Ни один из известных мне инструментов PDF не может этого сделать, но написать новый инструмент с использованием библиотеки PDF с такими функциями не составит особого труда. Одна проблема, которую вам нужно решить, - это указать конкретное изображение в PDF.
dirkt

Ответы:

1

ОК ... Я думаю, что pdflatexэто недостающий кусок здесь.

ОП сказал, что он изучил poppler-utilsи pdftk. Позвольте мне добавить к этому pdfimages. Это вместе с pdflatexчастями решения.

pdfimages -f 4 -l 20 -j -png target.pdf imageroot

В приведенном выше примере кода pdfimages просматривает страницы с 4 по 20 target.pdfи извлекает все изображения в файлы с именами в начале imageroot.

poppler-utilsобеспечивает pdftotext. Я рекомендую -layoutвариант, который делает большую работу, сохраняя документ читабельным.

pdftotext -layout $1.pdf $1.txt

OP возражает против imagemagickрешения, предложенного пидозавром , что изображение не имеет извлекаемого текста. С помощью утилит, которые я обрисовал в общих чертах, у OP теперь будут все изображения, а также весь извлеченный текст, а номера страниц и содержимое сохраняются этой -layoutопцией. ОП может идентифицировать правильную страницу текста и поместить ее в .texфайл, который заканчивается %includegraphicsдирективой и ссылается на замену изображения по имени файла. Затем вы pdflatexполучите это и получите новый одностраничный .pdf для вставки в остальную часть вашего документа pdftk. Если вы знали, где в тексте исходной страницы находилось изображение, вы можете %includegraphics [h]и получить изображение в нужном месте.

Ричард Зонненфельд
источник