我一直在反对这一点,但无济于事。
我需要缩小一些大型PDF以在8.5x11英寸(标准字母)页面上打印。 ImageMagick / Ghostscript可以处理这类事情,还是因为我使用了错误的工具来解决这个问题?
仅仅依靠客户端打印对话框中的“缩小到页面”选项不是一个选项,因为我们希望这对最终用户来说易于使用。
答案 0 :(得分:17)
我不会使用convert
。它在后台使用Ghostscript,但速度要慢得多。我直接使用Ghostscript,因为它给了我更多的直接控制(以及对使用convert
更难实现的设置的一些控制)。对于转换为PDF到PDF转换的工作,您无论如何都会安装Ghostscript:
gs \
-o /path/to/resized.pdf \
-sDEVICE=pdfwrite \
-dPDFFitPage \
-r300x300 \
-g2550x3300 \
/path/to/original.pdf
答案 1 :(得分:8)
ImageMagick的mogrify / convert命令确实可以完成这项工作。 Stephen Page有一个正确的想法,但你也需要设置文件的dpi,否则你将无法完成工作。
假设你有一个300 dpi的文件,并且已经具有与8.5 x 11相同的宽高比,那么命令就是:
// 300dpi x 8.5 -2550, 300dpi x 11 -3300
convert original.pdf -density "300" -resize "2550x3300" resized.pdf
如果纵横比不同,那么你需要做一些稍微复杂的裁剪。
答案 2 :(得分:7)
使用ImageMagick的问题在于您要转换为光栅图像格式,增加文件大小并降低页面上任何矢量元素的质量。
Multivalent将保留PDF的矢量信息。 尝试:
java -cp Multivalent.jar tool.pdf.Impose -dim 1x1 -paper "8.5x11in" myFile.pdf
创建输出文件myFile-up.pdf
答案 3 :(得分:6)
Ghostscript方法对我很有用。 (我将我的文件从我的Windows PC移动到Linux计算机并在那里运行。)我对Ghostscript命令做了一个小改动,因为上面的Ghostscript resize命令完全填充了8.5 x 11英寸的页面。但是,我的打印机无法打印到边缘,因此每页边缘丢失了几毫米。为了解决这个问题,我将我的PDF文档缩放到了完全8.5 x 11英寸的0.92。这样,我看到所有内容都集中在页面上并略有差异。因为0.92 *(2550x3300)=(2346x3036),我运行了以下Ghostscript命令:
gs -sDEVICE=pdfwrite \
-dPDFFitPage \
-r300x300 \
-g2346x3036 \
/home/user/path/original.pdf \
-o /home/user/path/resized.pdf