gpt4 book ai didi

php - 如何使用 Ghostscript 将 PDF 文件的一部分裁剪为 PNG

转载 作者:可可西里 更新时间:2023-11-01 13:08:44 25 4
gpt4 key购买 nike

我需要将我的 PDF 文件中的某个部分裁剪为 PNG(这将使用带有 PHP 的 Ghostscript 自动完成)。这就是我现在所做的,基本上将 PDF 的第一页转换为 PNG:

gs -q -dNOPAUSE -dBATCH \
-sDEVICE=pngalpha -dEPSCrop \
-sOutputFile=output.png input.pdf

具体来说,我正在尝试裁剪 this top left card到 PNG。我也愿意就如何实现这一目标提出更多建议。

最佳答案

首先,
确定第一个 PDF 页面的边界框:

gs                          \
-q \
-dBATCH \
-dNOPAUSE \
-sDEVICE=bbox \
-dLastPage=1 \
stackoverflowQuestion.pdf \
2>&1 \
| grep %%BoundingBox

结果输出将是:

%%BoundingBox: 119 531 464 814

意思是:

  • 边界框的左下角坐标为 (119,531)
  • 边界框的右上角坐标为 (464,814)

值以 PostScript 点数 为单位(其中 72 pt == 1 inch)。边界框就是那个矩形,其中包括这些在页面上留下墨水或碳粉标记的图形 PDF 对象。

那么,
创建您的 PNG。

根据边界框值,您似乎希望它的宽度为 345 磅(= 464 - 119),高度为 283 磅(= 814 - 531)。这导致页面大小为 -g345x283(以像素为单位,因为 Ghostscript 默认使用 72 dpi 进行图像输出(除非另有说明),因此 72 px == 1 inch.

或者更好的是,我们保留一个距离边界框 1 pt 的安全区域,所以我们使图像比最小值大一点,我们得到这个图像尺寸:-g347x285

您还需要从左边缘切除 119 pt(118 pt 用于“安全”)和从底部边缘切除 531 pt(530 用于安全)。

因此命令将是:

gs                                                      \
-o out.png \
-sDEVICE=pngalpha \
-g347x285 \
-dLastPage=1 \
-c "<</Install {-118 -530 translate}>> setpagedevice" \
-f stackoverflowQuestion.pdf

这是生成的 PNG:

out.png

为了获得更好的 PNG 质量,将分辨率从默认的 72 dpi 增加到 720 dpi 并使用此命令:

gs                                                      \
-o out720dpi.png \
-sDEVICE=pngalpha \
-r720 \
-g3470x2850 \
-dLastPage=1 \
-c "<</Install {-118 -530 translate}>> setpagedevice" \
-f stackoverflowQuestion.pdf

更新:

在 Windows 的 CMD 窗口中,Ghostscript 的控制台应用程序名称是 gswin32c.exe 和/或 gswin64c.exe(而不是 gs).此外,您必须使用 ^ 作为续行符(而不是 \)。

关于php - 如何使用 Ghostscript 将 PDF 文件的一部分裁剪为 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12484353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com