node.js - 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的蓝色区域剪切为图像。
解决方案
您需要设置几个参数;首先,您需要指定输出位图的宽度和高度。您可以使用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。
推荐阅读
- java - SmartSheet Java API getSheet,但只有一些行
- excel - 从 Excel 复制并粘贴到 Word - 疑难解答
- java - JSON Parsing, String to Object, ("Can't convert JSON Object to JSON Array")
- c++ - 如何将迭代器调用转发给类的私有成员?
- c# - 编辑 swashbuckle 中不同路线的招摇定义
- asp.net - 为什么 EF 核心忽略我对数据集的更新?
- plugins - 使用typo3中的插件扩展CE的标准字段
- android - Mockito / Powermock:匹配器 any() 错误地不匹配(但 anyOrNull() 确实
- sql - 如何使用 ms sql 查询确定时间跨度内的最大并发会话数
- python - 使用 Python JAX/Autograd 的向量值函数的雅可比行列式