粘贴(排版)PDF文档

21

我有几份A4 PDF文档,想要将它们合并成一份A3格式的PDF文档。这样,我就可以从两份A4的PDF获得一份单面A3的PDF。

我找到了一个很棒的工具PDFToolkit和其他一些工具,但它们中没有一个可以用来将两个文档并排“粘”在一起。

11个回答

18

我刚在superuser.com上发现了一个很好的工具,叫做PDFjam,可以用单个命令完成以上所有操作:

pdfjam --nup 2x1 file1.pdf file2.pdf --outfile DONESKI.pdf

它还具有其他标准功能,如页面大小以及更复杂的页面排序(真正的书籍样式页面印刷所必需的棘手页面重新排序)的良好语法。

它是建立在TeX之上的,无论它是什么。在Ubuntu上安装非常容易:您只需apt-get install pdfjam即可。在Mac OS上,我建议获取BasicTeX(谷歌“mactex basictex”;SO认为我是垃圾邮件发送者,不会让我发布链接)。

这比在Mac OS和Ubuntu上安装pdftk Multivalent(用于开发和部署),要容易得多且更易维护,对我来说,这也做得很好...!


pdfjam / pdfnup 有时可能会比较棘手。如果它报告调用 pdflatex 失败,并且源 PDF 包含横向页面,请在调用 pdfjam 之前尝试将它们旋转为纵向(例如使用 pdftk)。 - Silpion
为了从两个420mm x 420mm的PDF文件中获得任意输出纸张大小(横向A0条),我不仅需要在pdfnup中提供--papersize '{420mm,841mm}' --trim '0mm 0mm -0.5mm 0mm',还需要提供--nup 2x1 - Ayberk Özgür

11

我发现了一个免费且开源的排版工具,名为Impose(感谢danio的建议)。这完美地解决了我的问题。

编辑: 以下是操作步骤:

使用PDF Toolkit将两个PDF文件(两张A4)合并成一个文件。

pdftk File1.pdf File2.pdf cat output OutputFile.pdf

将此内容制作成单页(一张A3纸):
java -cp Multivalent.jar tool.pdf.Impose -dim 2x1 -verbose -paper-size "42.2x29.9cm" -layout "1,2" OutputFile.pdf

5
从官方sourceforge网站链接的Multivalent所有版本都缺少tools软件包。可以在此处找到旧版本的链接:http://sourceforge.net/projects/multivalent/forums/forum/252478/topic/3442363 - beerbajay
这些工具似乎不再在那个链接上了。我找到了一个看起来是旧版本的副本,但有点害怕运行它,因为它可能是特洛伊木马。cksum Multivalent.jar 的结果是 571900416 2716363。有人能验证一下这个校验和对应的文件是否合法吗? - user1142217
你试过在sourceforge上找到的旧版本吗?比如这个:http://sourceforge.net/projects/multivalent/files/multivalent/Release%2020060102/ - Drejc

6
我想宣传一下我的 pdftools
它是用 Python 写的,所以可以在任何平台上运行。它是 Latex 的包装器(pdfpages 包),但只需一个命令就可以完成许多事情:合并 PDF 文件、将它们 nup(将多个输入页面放在一个输出页面上)并对输出文件的页面进行编号(您可以指定编号的位置和格式)。
虽然它仍需要一些工作,但我认为它已经相当稳定,可以立即使用 :)

我觉得这个对我最有用。我不想在互联网上搜索旧版本(Multivalent),也不想编译什么东西(podofo),也不想折腾ps。Pdfjam 对我来说不起作用,因为它不支持 5x2 网格之类的东西。谢谢! - Wauzl

4
这会将两个横向的信纸页面放到一个纵向的信纸上,以便从顶部“装订”(即折叠)。
pdftops $1 - | 
psbook | 
pstops -w11in -h8.5in '4:1@.65(.5in,0in)+0@.65(.5in,5.5in),2U@.65(8in,5.5in)+3@.65U(8in,11in)' | 
ps2pdf - $(basename $1 .pdf).psbook.pdf

顺便说一下,我经常这样做,所以我可能会提交更多的“答案”来跟踪成功的pstops页面规格。如果这是SO的不适当使用,请告诉我。


1
这正是SO存在的原因...建立一个知识库。 - Drejc

4
在PoDoFo包中包含了一个不错、强大且开源的排版工具: http://podofo.sourceforge.net/ 它对我很有帮助。你可以在以下网址找到一些排版计划: http://www.av8n.com/computer/prepress/ PoDoFo还可以做很多其他事情,不仅仅是排版。
另一个有用的排版工具是Bookbinder(在quantumelephant网站上)。它有一个吸引非专家的GUI界面。虽然它不如PoDoFo灵活和强大,但也可以进行排版。 pdftk基本上是必备的,但它不能进行排版。 pdfjam对我来说没什么用,因为它无法处理各种有效的pdf文件。
我从未能够让multivalent工作。

2
您想要做的是 排版。有一些商业工具可以对PDF进行排版,例如ARTS crackerjackQuite imposing,但它们价格昂贵(500美元),需要Acrobat专业版的副本,并且对于将2个A4页面排列到A3纸张上来说有些过度。

1
你可以使用BookletImposer将多个输入页面放在一个输出页面上。
而且,你可以使用PDF Mod更改页面顺序和合并多个pdf文件。
使用这两个工具,你几乎可以做任何你想做的关于pdf文件的事情(除了编辑它们的内容)。

1
在Postscript方面,一个名为pstops的工具能够以任何你能想象到的方式重新排列Postscript文件的页面。我没有听说过PDF的类似工具。但是pdf2psps2pdf是存在的。因此,一个不太理想的解决方案可能是将pdf2pspstopsps2pdf组合起来使用。

2
在经历了无数的NoClassDefFoundError错误信息之后,我发现唯一可用的JAR包是http://www.vrspace.org/sdk/java/multivalent/Multivalent20060102.jar。 - l0b0

1

我会使用pdftk将两个A4页面合并为一个2页PDF。然后,使用类似PrimoPDF的打印转PDF工具,选择打印到A3格式,每面两页。

我刚刚测试了一下,从PowerPoint打印幻灯片。效果非常好。我在PowerPoint中选择了A3纸张大小,然后选择了每面打印两页。最后用Primo打印,就可以得到每个A3有两个A4幻灯片的结果。


我也考虑过这样的解决方案,将测试其质量是否足够商业杂志印刷使用。 - Drejc
这种解决方案唯一的问题是两个连接板之间会出现一条黑线。后来有没有办法去掉它? - Drejc
你可以通过使用 Adobe Reader 打印功能,将每页设置为 2 页,并在打印设置中将页面大小设置为 A3,来消除这些行。 - danio
找到了更好的解决方案。如果你看一下我的答案,这是最完美的方法。此外,它可以被脚本化和自动化,这是一个额外的优点。 - Drejc

0

1
据我所知,这也只是一个围绕LaTeX的包装器,这次是用Ruby编写的。顺便说一句,它对我不起作用,而pdfjam可以。你的情况可能会有所不同。 - dpavlin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接