Ghostscript:裁剪特定区域?

Posted

技术标签:

【中文标题】Ghostscript:裁剪特定区域?【英文标题】:Ghostscript : Crop Certain Area? 【发布时间】:2019-11-29 08:39:15 【问题描述】:

我是 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的蓝色区域剪切为图像。

【问题讨论】:

【参考方案1】:

你需要设置几个参数;首先,您需要指定输出位图的宽度和高度。您可以使用 either -dDEVICEHEIGHTPOINTS-dDEVICEWIDTHPOINTS,或者您可以使用 -g<x>x<y> 指定以像素为单位的输出大小,其中 和 是 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。

【讨论】:

好的,所以这工作 -sDEVICEWIDTHPOINTS 应该是 -dDEVICEWIDTHPOINTS 但是在转换为 png/jpeg 后 pdf 中的图像并不好,现在完整的 cmd 是这样的 "C:\Program Files\gs\gs9.50\bin\gswin64c.exe" ^ -dSAFER -dBATCH -dNOPAUSE ^ -dTextAlphaBits=4 -dGraphicsAlphaBits=4 ^ -dDEVICEWIDTHPOINTS=243 -dDEVICEHEIGHTPOINTS=152 ^ -dFIXEDMEDIA -r600 -dDownScaleFactor=2 -sDEVICE=jpeg -o out3.jpeg ^ -c "&lt;&lt;/PageOffset [ -315.2 31 ]&gt;&gt; setpagedevice" ^ -sPDFPassword=ADGE8874 ^ -f "c:\users\ane\desktop\EPAN.pdf"

以上是关于Ghostscript:裁剪特定区域?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C# 程序执行 ghostscript

Ghostscript 如何处理没有颜色的矢量对象

Ghost4J/Ghostscript - 尝试将字体嵌入 PDF 时出现错误 100

Java 和 Ghostscript(ghost4j 和 gsdll32.dll)

Ghostscript 删除裁剪框外的内容?

无法初始化 Ghostscript 解释器