我一直在反对这一点,但无济于事.
我需要缩小一些大型PDF以在8.5x11英寸(标准字母)页面上打印.ImageMagick/Ghostscript可以处理这类事情,还是因为我使用错误的工具来解决这个问题?
仅仅依靠客户端打印对话框中的"缩小到页面"选项不是一种选择,因为我们希望这对最终用户来说易于使用.
我不会用convert
.它在后台使用Ghostscript,但速度要慢得多.我直接使用Ghostscript,因为它给了我更多的直接控制(以及对设置更难实现的一些控制convert
).对于转换为PDF到PDF转换的工作,您无论如何都会安装Ghostscript:
gs \ -o /path/to/resized.pdf \ -sDEVICE=pdfwrite \ -dPDFFitPage \ -r300x300 \ -g2550x3300 \ /path/to/original.pdf
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
如果纵横比不同,那么你需要做一些稍微复杂的裁剪.
使用ImageMagick的问题在于您要转换为栅格图像格式,增加文件大小并降低页面上任何矢量元素的质量.
多价将保留PDF的矢量信息.尝试:
java -cp Multivalent.jar tool.pdf.Impose -dim 1x1 -paper "8.5x11in" myFile.pdf
创建输出文件myFile-up.pdf
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