У меня есть два файла pdf с одинаковым количеством страниц, и я хочу сравнить каждую страницу с соответствующей страницей в другом файле. Для этого я хотел бы объединить, скажем, страницу 1 из File1.pdf со страницей 1 из File2.pdf, чтобы получить одну страницу в новом документе. Затем страницу 2 из File1.pdf со страницей 2 из File2.pdf и сделать ее страницей 2 нового файла.
Вэтот вопросЯ уже узнал, что можно разместить две страницы на одной странице с помощью --nup
команды pdfjam
:
pdfjam File1.pdf File2.pdf --nup 2x1 --landscape --outfile File1+2.pdf
Того же самого можно добиться с помощью ImageMagick
пакета:
montage *.pdf merged.pdf
Но это объединяет страницу 1 и страницу 2 первого файла и делает то же самое позже со вторым файлом — не так, как предполагалось.
Что я сделал, так это разделил два документа. Первый файл получил четные числа в имени файла, второй — нечетные числа (на самом деле я создал файлы заново с соответствующими именами файлов). Затем я снова объединил все файлы с помощью
pdftk *.pdf cat output merged.pdf
и наконец поместите две страницы на одну с
pdfjam --nup 2x1 --landscape --outfile merged2up.pdf merged.pdf
Я мог бы написать скрипт с циклом, делающим это, но мне было интересно, есть ли простой однострочный способ сделать это? Может быть, я не нашел нужную команду pdfjam, pdftk или ImageMagick?
решение1
Вы можете разделить File1.pdf и File2.pdf на страницы, а затем объединить эти файлы tmp в File1+2.pdf следующим образом:
# 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
решение2
Я бы использовал это:
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
Может быть, вы это оцените. Мне нравится, потому что он маленький и быстрый, но страницы руководства нуждаются в улучшении. :-(
решение3
(Если я правильно понимаю, что нужно автору статьи,) вот простое(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
С помощью pdftk ... shuffle A B ...
вы создаете промежуточный PDF-файл, который будет выглядеть следующим образом:
File1-page1
File2-page1
File1-page2
File2-page2
. . . .
Затем с помощью pdfjam
вы объединяете нечетные и четные страницы промежуточного файла:
File1-page1 File2-page1
File1-page2 File2-page2
. . . .
Я только что придумал это решение и протестировал его.
решение4
Э-э, немного поздновато, но может быть кому-то ещё пригодится.
Первоначальный подход OP, заключающийся в отображении страниц бок о бок, может быть реализован с помощью другого данного ответа.
Однако подход может быть трудным, если целью является поиск небольшого текстового различия. Для этой цели используйте pdfdiff, которых существует несколько от разных авторов, коммерческих, с открытым исходным кодом, командной строки и графического интерфейса.
https://duckduckgo.com/?q=pdfdiff&t=ffab&ia=software
Обратите внимание, что этот подход не так эффективен для изображений, поскольку «идентичные» изображения могут быть закодированы по-разному.