13

我一直在努力反对这一点,但无济于事。

我需要缩小一些大型 PDF 以在 8.5x11 英寸(标准字母)页面上打印。ImageMagick/Ghostscript 可以处理这种事情,还是因为我使用了错误的工具来完成这项工作,所以我遇到了很多麻烦?

仅仅依靠客户端打印对话框中的“缩小到页面”选项不是一个选项,因为我们希望它易于最终用户使用。

4

4 回答 4

17

我不会使用convert. 它在后台使用 Ghostscript,但速度要慢得多。我会直接使用 Ghostscript,因为它给了我更直接的控制(以及一些更难以实现的设置的控制convert)。对于转换为 PDF 到 PDF 转换的工作,无论如何您都将安装 Ghostscript:

  gs \
    -o /path/to/resized.pdf \
    -sDEVICE=pdfwrite \
    -dPDFFitPage \
    -r300x300 \
    -g2550x3300 \
    /path/to/original.pdf
于 2010-08-09T19:08:11.437 回答
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

如果纵横比不同,则需要进行一些稍微复杂的裁剪。

于 2009-02-13T19:57:58.920 回答
7

使用 ImageMagick 的问题是您正在转换为光栅图像格式,增加了文件大小并降低了页面上任何矢量元素的质量。

Multivalent将保留 PDF 的矢量信息。尝试:

java -cp Multivalent.jar tool.pdf.Impose -dim 1x1 -paper "8.5x11in" myFile.pdf

创建输出文件 myFile-up.pdf

于 2009-02-16T14:15:28.130 回答
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
于 2011-04-17T01:23:49.437 回答