2012-03-02 40 views
0

我使用Ghostscript将PDF转换为jpeg缩略图。它适用于大多数文件,但是我有一些最终看起来很糟糕 - 就像一个巨大的白色背景上的小缩略图。GhostScript中的CropBox和MediaBox

这是因为,在这些问题的PDF上,MediaBox被设置为比CropBox大得多的尺寸。我可以通过使用-dUseCropbox使其忽略MediaBox维度来修复Ghostscript中的这一问题...但这不适用于没有定义CropBox的其他PDF。

所以,我能想到的两种解决方案:

  1. 导入之前,不知怎的,检查PDF文件,看它是否有定义裁剪框。如果它有一个CropBox,则使用-dUseCropBox开关。如果它没有定义CropBox,那么我们不使用该开关。

  2. 修改PDF文件中的MediaBox尺寸,使它们与CropBox尺寸相匹配。

那么,我将使用什么代码来检查CropBox/MediaBox尺寸的PDF文件,并在必要时编辑它们?

回答

1

你打算如何处理没有裁剪框的文件?在我看来,如果一个CropBox存在(并选择了-dUseCropBox),那么你已经尽其所能,如果没有的话(如果我没记错的话),GS将使用MediaBox。

+0

不,问题是,当cropbox不存在时,-dUseCropBox不会恢复到媒体箱。它只处理定义了裁剪框的文件,并跳过不带裁剪框的文件。 – user1244953 2012-03-05 17:34:16

+0

换句话说,我希望它使用作物箱(如果存在)和媒体箱(如果不存在)。如果-dUseCropBox以这种方式工作,这将是有意义的,但事实并非如此。它只适用于定义了裁剪框的文件,而不是默认的媒体箱,就像我希望裁剪框不存在时那样。 – user1244953 2012-03-05 17:36:07

1

我想你真正需要的是一个程序/脚本从PDF文件作物的空白,无论媒体/装饰/裁切框的设置,你可以尝试这两种免费的PDF收割机的:

pdfcrop - 一个Perl脚本,适用于多个平台
http://tug.ctan.org/tex-archive/support/pdfcrop
(需要* TEX,Ghostscript的和明显的perl)

PDF克罗珀,对于Windows
http://www.noliturbare.com/pdf-tools/pdf-cropper
(需要的ghostscript和.NET 3.5)

或者,如果您有Mac,则可以在预览应用程序上使用裁切功能。这可以在不触摸媒体箱的情况下设置裁剪盒(至少它可以在MacOSX 10.4上使用),从而允许您使用-dUseCropbox。

0

而不是Ghostscript,使用Imagemagick。例如:

convert -resize 70px file.pdf file.jpg 
+0

这将栅格化PDF,在某些情况下这可能不是您想要的。 – 2017-11-14 07:27:42

+0

是的,但问题的描述状态希望创建JPG缩略图。也许标题应该被编辑来澄清。 – motorbaby 2017-11-30 16:51:53