Ghostscript删除裁剪框外的内容?

时间:2014-02-11 16:08:37

标签: ghostscript

我遇到了ghostscript 9.10的问题,显然是删除了裁剪框外的内容(特别是我放在那里的裁剪标记)

这是使用ghostscript之前的PDF:with_cropbox_before_optimize.pdf

$ pdfinfo -box with_cropbox_before_optimize.pdf
  MediaBox:           0.00     0.00   651.97   898.58
  CropBox:           28.35    28.35   623.62   870.24

将查看器设置为显示整个媒体框会按预期显示裁剪框外部的裁剪标记。 (黑色边框用于说明裁剪框的位置)

然后我打电话:

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -dCompatibilityLevel=1.7 \
-dNOPAUSE -dQUIET -dBATCH -dAutoRotatePages=/None -sOutputFile=<out.pdf> <in.pdf>

产生以下文件:with_cropbox_after_optimize.pdf

现在裁剪标记丢失或者至少它们不再显示 - 页面尺寸仍然很好,所以它没有裁剪它或什么......

$ pdfinfo -box with_cropbox_after_optimize.pdf
  MediaBox:           0.00     0.00   651.97   898.58
  CropBox:           28.35    28.35   623.62   870.24

所以:我做错了还是这个错误?

1 个答案:

答案 0 :(得分:0)

首先要了解(我知道我一直提到这一点,但人们不明白)是Ghostscript的和pdfwrite不是简单地与你的PDF fikle摆弄。

解释输入的PDF文件,并将PDF标记操作转换为内部图形基元,然后通过Ghostscript设备界面传递。通常,这些基元然后被渲染为位图。在pdfwrite的情况下,基元被重新转换为PDF标记操作,以及从它们组装的全新PDF文件。除了视觉外观外,输出与输入无关。

因此,当您使用Ghostscript处理PDF文件时,您并未“优化”它,您正在创建一个全新的PDF文件。

在您的情况下,CropBox外部的对象不会被解释(因为它们在CropBox之外,它们被裁剪)。作为一个明显的结果,它们不会通过设备接口传递,因此不会出现在输出PDF文件中。

请注意,当Ghostscript裁剪到CropBox时,这不会影响MediaBox,因此媒体仍然相同,但裁剪的对象会被裁剪掉。您可以使用-dUseCropBox将媒体更改为与CropBox相同,但这不是您想要的。

目前我无法看到CropBox转换为剪辑的位置,因此最佳解决方案可能是创建没有CropBox的文件(或删除它,或将其设置为MediaBox)然后添加它在处理文件时使用pdfmark。