Mesclar dois arquivos PDF lado a lado na linha de comando

Mesclar dois arquivos PDF lado a lado na linha de comando

Eu tenho dois arquivos PDF com o mesmo número de páginas e quero comparar cada página com a página correspondente no outro arquivo. Para isso, gostaria de mesclar, digamos, a página 1 do Arquivo1.pdf com a página 1 do Arquivo2.pdf para obter uma página no novo documento. Em seguida, a página 2 do Arquivo1.pdf com a página 2 do Arquivo2.pdf e torne-a a página 2 do novo arquivo.

Emessa questãoJá aprendi que posso colocar duas páginas em uma página com a --nupopção do pdfjamcomando:

pdfjam File1.pdf File2.pdf --nup 2x1 --landscape --outfile File1+2.pdf

O mesmo pode ser conseguido com o ImageMagickpacote:

montage *.pdf merged.pdf

Mas isso reúne a página 1 e a página 2 do primeiro arquivo e faz o mesmo mais tarde com o segundo arquivo - não como pretendido.

O que fiz foi dividir os dois documentos. O primeiro arquivo recebeu números pares no nome do arquivo, o segundo números ímpares (na verdade, criei os arquivos novamente com nomes de arquivo apropriados). Então mesclei todos os arquivos novamente com

pdftk *.pdf cat output merged.pdf

e finalmente coloque duas páginas em uma com

pdfjam --nup 2x1 --landscape --outfile merged2up.pdf merged.pdf

Eu poderia escrever um script com um loop fazendo isso, mas queria saber se existe uma linha fácil para conseguir isso? Talvez eu não tenha encontrado o comando pdfjam, pdftk ou ImageMagick correto?

Responder1

Você pode dividir Arquivo1.pdf e Arquivo2.pdf em páginas e depois combinar esses arquivos tmp em Arquivo1+2.pdf da seguinte forma:

# Split files, note the naming scheme
pdfseparate File1.pdf temp-%04d-file1.pdf
pdfseparate File2.pdf temp-%04d-file2.pdf

# Combine the final pdf
pdfjam temp-*-*.pdf --nup 2x1 --landscape --outfile File1+2.pdf

# Clean up
rm -f temp-*-*.pdf

Responder2

Eu usaria isso:

sudo apt install psutils 
sudo apt install ghostscript

pdf2ps -sOutputFile=input1file%d.ps input1file.pdf input1file.ps # cut to individual pages
pdf2ps -sOutputFile=input2file%d.ps input2file.pdf input2file.ps
psmerge -oinput.ps *.ps # put them together page by page from the alternative files
pstops -p a4 "2:[email protected](21cm,0)[email protected](21cm,14.85cm)" input.ps output.ps # put 2 pages on one
ps2pdf output.ps output.pdf # convert back to pdf

Pode ser que você aprecie isso. Gosto porque é pequeno e rápido, mas as páginas de manual precisam de melhorias. :-(

Responder3

(Se eu não entendi mal o que o OP precisa), aqui está uma solução simples (r)

pdftk A=File1.pdf B=File2.pdf shuffle A B output tmp-Figure1+2.pdf
pdfjam tmp-Figure1+2.pdf --nup '2x1' --landscape --outfile Figure1+2.pdf
rm tmp-Figure1+2.pdf

Com pdftk ... shuffle A B ..., você cria um arquivo PDF intermediário que se parecerá com

File1-page1
File2-page1
File1-page2
File2-page2
. . . .

Então, com pdfjam, você mescla as páginas pares e ímpares do arquivo intermediário:

File1-page1 File2-page1
File1-page2 File2-page2
. . . .

Acabei de encontrar esta solução e testei-a.

Responder4

A, err, um pouco atrasado, mas pode ser útil para outra pessoa.

A abordagem original do OP, de exibir páginas lado a lado, pode ser alcançada pela outra resposta dada.

Contudo, a abordagem pode ser árdua se o objetivo for encontrar alguma pequena diferença textual. Para esse objetivo, use um pdfdiff, do qual existem alguns de diferentes autores, comerciais, de código aberto, de linha de comando e GUI.

https://duckduckgo.com/?q=pdfdiff&t=ffab&ia=software

Observe que essa abordagem não é tão eficaz para imagens, pois imagens “idênticas” podem ser codificadas de maneira diferente.

informação relacionada