如何使用Imagemagick合并pdf:s(分辨率问题)


43

当我尝试使用Imagemagick合并两个.pdf文件时

convert pdf1.pdf pdf2.pdf temp.pdf

生成的temp.pdf文件似乎具有非常低的分辨率。如何保持与源文件相同的分辨率?

Answers:


53

巴恩斯是对的,但是如果pdftk无法正常工作,请尝试ghostscript。

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=temp.pdf pdf1.pdf pdf2.pdf

完美且快速地工作-比使用带有-density标志的ImageMagick快得多。
Brionius

这应该是正确的答案。并不是说ImageMagick无法正常工作;它也可以。但正如@Brionius所指出的那样,gs 速度快得多,并且生成的pdf的质量是一流的。
Jagtesh Chadha 2015年

请注意,可以在命令末尾使用* .pdf而不是pdf1.pdf和pdf2.pdf列表,将文件夹中的所有pdf转换为单个pdf。
Colin D

我的字体有问题,某些页面失去了字体。有什么办法可以选择吗?
Zloy Smiertniy

20

Imagemagick的convert命令通常用于将图像文件从一种格式转换为另一种格式,在这种情况下,可能实际上是在将两个“图像”(PDF)输出到单个文件之前实际上进行了各种内部转换。

我建议您考虑使用PDF工具包(pdftk)代替http://www.accesspdf.com/pdftk/

从网站上的示例中,这应该很简单:

pdftk pdf1.pdf pdf2.pdf cat output temp.pdf

我在OS X 10.6.1上运行,并且尝试通过Macports安装pdftk。似乎pdftk在Mac上已被弃用,安装无法完成。因此,我尝试使用Imagemagick进行此操作。

在Ubuntu上,从apt上安装pdftk没问题,并且成功完成了这项工作。我以前曾使用ImageMagick来将PDF缝合在一起,但取得了巨大的成功,但是因为它首先将PDF光栅化(可以理解-它不适用于矢量),所以对于大多数文本文档来说看起来并不那么好。但是pdftk效果很好-感谢您的建议。
Iguananaut

太好了...谢谢
Dan Ortega

让我们支持这一点,pdftk的工作方式比ghostcript更好。
Dan Ortega

18

如果要合并的每个文件都在同一文件夹中:

convert -density 150 $(ls -rt *pdf) output.pdf

该参数-density 150保持合并PDF的质量。


5
关于所有PDF语法的旁注,您可以省略sub-ls命令:convert -density 150 *.pdf output.pdf
2014年

'* .pdf'和'$(ls -rt * pdf)'可能导致不同的输出。
shantanoo



0

在保持良好的分辨率和完整的文本的同时,我找不到将两个pdf文件连接在一起的任何方法,但是我想出了一种将其转换为高分辨率png文件的方法。

pdftoppm -f 1 -l 1 -aa yes -aaVector yes -png -r 300 page.pdf > tmp1.png
pdftoppm -f 2 -l 2 -aa yes -aaVector yes -png -r 300 page.pdf > tmp2.png
convert tmp1.png tmp2.png +append -quality 100 page.png

这将进入page.pdf的前两页,并将它们合并成一个并排的高分辨率png文件。

将最后一行更改为

convert tmp1.png tmp2.png +append -quality 100 page.pdf

稍后将pngtopnm,pnmtops,ps2pdf弄乱后,我会发现该文件将产生pdf文档输出。


2
-1表示建议栅格化(可能的)矢量图像。那不是要走的路。
马可(Marco)2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.