在命令行中并排合并两个 pdf 文件

在命令行中并排合并两个 pdf 文件

我有两个页数相同的 pdf 文件,想将每个页面与另一个文件中的相应页面进行比较。为此,我想将 File1.pdf 的第 1 页与 File2.pdf 的第 1 页合并,以便在新文档中获得一页。然后将 File1.pdf 的第 2 页与 File2.pdf 的第 2 页合并,使其成为新文件的第 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 拆分为页面,然后将这些临时文件合并为 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

(如果我没有误解 OP 需要什么,)这里有一个简单的解决方案

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,它有来自不同作者的几个版本,有商业的、开源的、命令行的和 GUI 的。

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

请注意,这种方法对于图像来说并不那么有效,因为“相同”的图像可以采用不同的编码。

相关内容