我一直在努力反对这一点,但无济于事。
我需要缩小一些大型 PDF 以在 8.5x11 英寸(标准字母)页面上打印。ImageMagick/Ghostscript 可以处理这种事情,还是因为我使用了错误的工具来完成这项工作,所以我遇到了很多麻烦?
仅仅依靠客户端打印对话框中的“缩小到页面”选项不是一个选项,因为我们希望它易于最终用户使用。
我一直在努力反对这一点,但无济于事。
我需要缩小一些大型 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 的问题是您正在转换为光栅图像格式,增加了文件大小并降低了页面上任何矢量元素的质量。
Multivalent将保留 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