首页 > 解决方案 > Ghostscript:裁剪特定区域?

问题描述

我是ghostscript的新手。

我有一个包含卡片的pdf。我想剪掉那张卡片。

目前,在了解文档的情况下,我只能将 pdf 转换为图像,但在裁剪方面没有运气。看到了所有其他相关的问题,但没有为我工作。

这是我在批处理文件中用于将 pdf 转换为图像的代码:

"C:\Program Files\gs\gs9.50\bin\gswin64c.exe" -sDEVICE=png16m -r300 -o c:\users\jen\desktop\pdf.png -f "c:\users\jen\desktop\pdf.pdf
pause 

现在我也不知道如何裁剪它?我想在某些位置裁剪,例如:Left:28 Top:524 Width:492.3 Height:161

编辑 我将在 firebase 函数中使用它。

示例 PDF 文件THE_PDF_TO_CROP。我想将pdf的蓝色区域剪切为图像。

标签: node.jswindowspdfcropghostscript

解决方案


您需要设置几个参数;首先,您需要指定输出位图的宽度和高度。您可以使用and -dDEVICEHEIGHTPOINTS-dDEVICEWIDTHPOINTS或者您可以使用-g<x>x<y>where 和是 x 和 y 方向上的像素数来指定输出大小(以像素为单位)。显然,这将取决于分辨率。您不能(显然)使用分数像素。

如果您使用-dDEVICEWIDTHPOINTS-dDEVICEHEIGHTPOINTS那么您还需要设置-dFIXEDMEDIA告诉解释器不要使用 PDF 文件中的媒体大小。

所以应该创建一个正确大小的输出位图。如果您尝试仅使用它来渲染文件,您将看到它仅从左下角渲染页面的一部分。所以现在您需要移动内容,以便您想要的部分位于媒体的左下角。您可以通过使用 PageOffset PostScript 运算符来做到这一点。

您没有给出任何数字,也没有提供示例文件,所以让我们说(为了示例)您想要渲染文档的 1 英寸乘 2 英寸部分。让我们进一步说,您要渲染的部分距离左边缘 2.5 英寸,距离下边缘 1.5 英寸。

一个合适的命令行是:

gs -sDEVICEWIDTHPOINTS=72 -dDEVICEHEIGHTPOINTS=144 -dFIXEDMEDIA -r300 -sDEVICE=png16m -o out.png -c "<</PageOffset [-180 -108]>> setpagedevice" -f input.pdf

请注意,PDF(和 PostScript)单位是 1/72 英寸,因此 72 = 1 英寸,144 = 2 英寸。您需要将页面的原点向下和向左移动,这就是 PageOffset 的值为负数的原因。

如果这对您不起作用,我需要查看您的 PDF 文件,并且您需要告诉我您使用的是哪个版本的 Ghostscript。


推荐阅读