我有两个pdf或postscript文件(我可以使用其中任何一个).我想要做的是将每个页面合并在另一个页面之上,以便将文档A的page1与文档B的页面1组合以产生输出文档的页面1.这不是我一定需要以编程方式进行的操作,尽管这会有所帮助.
有任何想法吗?
bmb*_*bmb 81
您可以使用命令行工具pdftk使用stamp或background选项使用pdf文件执行此操作.
例如
$ pdftk file1.pdf background file2.pdf output combinedfile.pdf
Run Code Online (Sandbox Code Playgroud)
这仅适用于单页背景文件.如果您有多个页面,则可以使用该multibackground命令.
pi.*_*pi. 19
我通过使用pyPdf,特别是mergePage操作成功地解决了这个问题(仅限PDF和Python).
来自文档:
# add page 4 from input1, but first add a watermark from another pdf:
page4 = input1.getPage(3)
watermark = PdfFileReader(file("watermark.pdf", "rb"))
page4.mergePage(watermark.getPage(0))
Run Code Online (Sandbox Code Playgroud)
应该足以得到这个想法.
小智 8
这里的许多答案似乎都非常过时了。对于使用pdftk的已接受答案尤其如此。Pdftk 很旧(截至本次编辑,最新版本是 2013 年),错误处理能力很差,需要旧版本的库,并且不再为 ubuntu 打包。如果可以避免的话,2022 年没有人应该使用 pdftk 来做任何事。
\nQpdf是一个很好的开源程序,它做许多与 pdftk 相同的事情,仍然被维护(截至本次编辑,最新提交是 4 天前),并且它可以完成此任务(使用 或--overlay,--underlay具体取决于一个) \ 的愿望):
qpdf a.pdf --overlay b.pdf -- c.pdf\nRun Code Online (Sandbox Code Playgroud)\n[编辑添加]作为进一步的示例,这里有一些ruby 代码,使用prawn库生成一个可以使用的示例方式。
\n这个想法是生成编号标签,用于打印到一些假设的标签纸上(由boxes.pdf\xe2\x80\x94 表示,实际尺寸是组成的,但如果需要,可以调整以适合现有模板),并有一个显示直观地显示标签尺寸,以便在屏幕上查看 ( boxednumbers.pdf),而另一个版本 ( numbers.pdf) 则仅将内容打印到实际的预切标签上。
(注:大概在现实生活中,boxes.pdf可能不会生成,而是从标签制造商 \xe2\x80\x94 下载的模板,并且qpdf命令行(以及尺寸常数)将进行相应调整,与外Prawn::Document.generate块被移除,纸张尺寸可能被修改等)
qpdf a.pdf --overlay b.pdf -- c.pdf\nRun Code Online (Sandbox Code Playgroud)\n