Substituir uma imagem em um PDF usando a linha de comando

11

Preciso processar alguns arquivos PDF. A tarefa consiste em trocar um determinado arquivo de imagem por outro. Meu primeiro problema é como substituir uma imagem PDF da linha de comando em um processo em lote. Em seguida, tentarei resolver outros problemas, como identificar qual é a imagem que preciso substituir (porque os arquivos PDF podem ter mais de uma imagem). Mas primeiro quero resolver o primeiro problema: como substituir uma imagem em um PDF por outra.

Eu li sobre poppler-utils e pdftk, mas até onde eu sei, nenhuma dessas ferramentas permite substituir imagens em PDF.

Ivan
fonte
1
Se você encontrar uma resposta, será realmente interessante saber. Depois de isolar a "página do problema", você pode usar o ImageMagick para inserir uma imagem em outra e convertê-la novamente em pdf: imagemagick.org/Usage/layers Também: superuser.com/questions/614784/…
Konstantinos
Obrigado @pidosaurus Eu estava considerando essas opções, mas ele tem um grande problema: implica converter o PDF (ou a página de assinatura) em imagens. É um problema porque o PDF resultante terá um tamanho muito maior e o usuário não pôde selecionar um pedaço de texto para copiar e colar, por exemplo.
Ivan
lookup convert from imagemagick e, mais ainda, as ferramentas fornecidas pelo openoffice (agora libreoffice, na verdade) - eu uma vez contratei alguém para escrever um conversor de PPT para PDF e essas eram as ferramentas usadas.
math
Nenhuma das ferramentas PDF que conheço é capaz de fazer isso, mas não seria muito difícil escrever uma nova ferramenta usando uma biblioteca PDF com essa funcionalidade. Um problema que você terá que resolver é como especificar uma imagem específica em um PDF.
dirkt 30/06/19

Respostas:

1

OK ... Eu acho que pdflatexé a peça que falta aqui.

O OP disse que investigou poppler-utilse pdftk. Deixe-me adicionar a isso pdfimages. Estes, juntamente com pdflatexsão os pedaços de uma solução.

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

No código de exemplo acima, pdfimages analisa as páginas 4 a 20 target.pdfe extrai todas as imagens em arquivos com nomes começando imageroot.

poppler-utilsfornece pdftotext. Eu recomendo a -layoutopção que faz um ótimo trabalho mantendo o documento legível.

pdftotext -layout $1.pdf $1.txt

A objeção do OP à imagemagicksolução oferecida pelo pidosaurus é que uma imagem não possui texto extraível. Com os utilitários que descrevi, o OP agora terá todas as imagens e todo o texto extraído, e os números de páginas e o conteúdo serão retidos pela -layoutopção. O OP pode identificar a página correta do texto e inseri-la em um .texarquivo que termina com uma %includegraphicsdiretiva e se refere à imagem de substituição pelo nome do arquivo. Você então faz pdflatexisso e acaba com um novo .pdf de página única para inserir no restante do documento pdftk. Se você soubesse onde no texto da página original residia a imagem, poderá %includegraphics [h]obtê-la exatamente no lugar certo.

Richard Sonnenfeld
fonte