使用 ghostscript 缩放 PDF 文件
Scaling PDF file using ghostscript
我们的系统接受 8.5 x 11 的 PDF 文件(仅)并对它们进行处理。有时客户会把文件交给我们,让我们将其加工成正确的形状。我们正在努力将非标准尺寸的 PDF 文件自动缩放为 8.5 x 11。
我们已经能够处理我们用 ghostscript 测试过的大多数文件,但是我们有一个客户提交的文件我们无法处理。 (不幸的是,我们无法重新创建条件,当然也不能 post 客户的数据。)
文件为 PDF v1.7,包含七页 8.5x11 页,后跟四页 25.5 x 45.33 英寸。我不知道它们是如何生成的(每个 pdfinfo 的 Adobe Acrobat 10.1.2)。
我们已经逐渐向我们的 gs 命令添加了一系列参数,直到我们到达这里:
gs -sDEVICE=pdfwrite -sOutputFile=$final_file -dBATCH -dNOPAUSE -sPAPERSIZE=letter -q -r720 -g6120x7920 -dPDFFitPage -dFIXEDMEDIA $files_to_convert
这似乎适用于我们的其他文件,但对于这个 ONE 文件,25.5 x 45.33 页面未缩放为字母大小。以下是每个 pdfinfo 输出文件第 7 页和第 8 页的测量值:
Page 7 size: 612 x 792 pts (letter)
Page 7 rot: 0
Page 8 size: 1836 x 3264 pts
Page 8 rot: 0
我读过 PostScript 有策略、PageSize 选项,但我不知道 PDF 有这样的事情。如果它存在,我不知道如何使用 ghostscript 更改它。
如何确保所有页面都按字母缩放?
好吧,Ghostscript 使用 PostScript 作为其脚本语言,因此您可以在 PostScript 中执行的任何操作都可以对 PDF 文件执行。
我真的不会将-g与pdfwrite一起使用,因为-g指定了像素,而且pdfwrite是一个矢量设备效果不是很好。请改用 DEVICEHEIGHTPOINTS 和 DEVICEWIDTHPOINTS。
也不要设置 -sPAPERSIZE,您不能在一个地方将媒体设置为字母,而在其他地方设置不同的东西(-g 开关)。
在不查看 PDF 文件的情况下,真的不可能告诉您它到底发生了什么,而且您也没有真正解释错在哪里。你暗示页面没有被缩放,但你没有说它们被绘制成什么样的尺寸。您也没有说为什么您认为在 Acrobat 中查看时页面大小为 'legal'。
如果您说有问题的页面是 'legal' 但媒体要大得多,那么这是完全可能的,并且建议页面有 CropBox。 Ghostscript 使用 MediaBox 设置页面大小,Acrobat 使用大量不同的框,但通常默认为 CropBox。
如果您希望 Ghostscript 使用 CropBox,只需告诉它 -dUseCropBox
。
或者post某处的示例,我可以看看。
我们的系统接受 8.5 x 11 的 PDF 文件(仅)并对它们进行处理。有时客户会把文件交给我们,让我们将其加工成正确的形状。我们正在努力将非标准尺寸的 PDF 文件自动缩放为 8.5 x 11。
我们已经能够处理我们用 ghostscript 测试过的大多数文件,但是我们有一个客户提交的文件我们无法处理。 (不幸的是,我们无法重新创建条件,当然也不能 post 客户的数据。)
文件为 PDF v1.7,包含七页 8.5x11 页,后跟四页 25.5 x 45.33 英寸。我不知道它们是如何生成的(每个 pdfinfo 的 Adobe Acrobat 10.1.2)。
我们已经逐渐向我们的 gs 命令添加了一系列参数,直到我们到达这里:
gs -sDEVICE=pdfwrite -sOutputFile=$final_file -dBATCH -dNOPAUSE -sPAPERSIZE=letter -q -r720 -g6120x7920 -dPDFFitPage -dFIXEDMEDIA $files_to_convert
这似乎适用于我们的其他文件,但对于这个 ONE 文件,25.5 x 45.33 页面未缩放为字母大小。以下是每个 pdfinfo 输出文件第 7 页和第 8 页的测量值:
Page 7 size: 612 x 792 pts (letter)
Page 7 rot: 0
Page 8 size: 1836 x 3264 pts
Page 8 rot: 0
我读过 PostScript 有策略、PageSize 选项,但我不知道 PDF 有这样的事情。如果它存在,我不知道如何使用 ghostscript 更改它。
如何确保所有页面都按字母缩放?
好吧,Ghostscript 使用 PostScript 作为其脚本语言,因此您可以在 PostScript 中执行的任何操作都可以对 PDF 文件执行。
我真的不会将-g与pdfwrite一起使用,因为-g指定了像素,而且pdfwrite是一个矢量设备效果不是很好。请改用 DEVICEHEIGHTPOINTS 和 DEVICEWIDTHPOINTS。
也不要设置 -sPAPERSIZE,您不能在一个地方将媒体设置为字母,而在其他地方设置不同的东西(-g 开关)。
在不查看 PDF 文件的情况下,真的不可能告诉您它到底发生了什么,而且您也没有真正解释错在哪里。你暗示页面没有被缩放,但你没有说它们被绘制成什么样的尺寸。您也没有说为什么您认为在 Acrobat 中查看时页面大小为 'legal'。
如果您说有问题的页面是 'legal' 但媒体要大得多,那么这是完全可能的,并且建议页面有 CropBox。 Ghostscript 使用 MediaBox 设置页面大小,Acrobat 使用大量不同的框,但通常默认为 CropBox。
如果您希望 Ghostscript 使用 CropBox,只需告诉它 -dUseCropBox
。
或者post某处的示例,我可以看看。