gpt4 book ai didi

image - 将 PDF 转换为 PNG

转载 作者:行者123 更新时间:2023-12-03 05:17:16 24 4
gpt4 key购买 nike

我正在尝试将 PDF 转换为 PNG 图像(至少是一个封面)。我已经使用 pdftk 成功提取了 PDF 的第一页。我正在使用 imagemagick 进行转换:

convert cover.pdf cover.png

这可行,但不幸的是 cover.png 渲染不正确(PDF 中的某些 alpha 对象未正确渲染)。我知道 ImageMagick 使用 GhostScript 进行转换,如果我直接使用 gs 进行转换,我可以获得所需的结果,但我宁愿使用转换库,因为它还有我想利用的其他工具。

GhostScript 中的此命令可完成所需的图像:

gs -sDEVICE=pngalpha -sOutputFile=cover.png -r144 cover.pdf

我想知道是否有任何方法可以通过转换为 GhostScript 传递参数,或者我是否坚持直接调用 GhostScript?

最佳答案

如果第一个命令可以将其输出写入 stdout,并且如果第二个命令可以将其输出写入 stdout,则可以使用一个命令行来连接通过管道连接的两个命令(gsconvert)可以从标准输入读取其输入。

  1. 幸运的是,gs 可以写入标准输出(... -o %stdout ...)。
  2. 幸运的是,convert 可以从标准输入读取(convert -background透明-output.png)。

问题已解决:

  • GS 用于处理特殊图像的 Alpha channel ,
  • 用于创建透明背景的转换,
  • 用于避免在磁盘上写出临时文件的管道。

完整解决方案:

gs -sDEVICE=pngalpha       \
-o %stdout \
-r144 cover.pdf \
| \
convert \
-background transparent \
- \
cover.png
<小时/>

更新

如果您希望每个 PDF 页面有一个单独的 PNG,您可以使用 %d 语法:

gs -sDEVICE=pngalpha -o file-%03d.png -r144 cover.pdf

这将创建名为 page-000.pngpage-001.png、... 的 PNG 文件(请注意,%d-计数从零开始 - file-000.png 对应于 PDF 的第 1 页,001 对应于第 2 页...

或者,如果您想保留透明背景,对于 100 页的 PDF,请执行

for i in {1..100}; do        \
\
gs -sDEVICE=pngalpha \
-dFirstPage="${i}" \
-dLastPage="${i}" \
-o %stdout \
-r144 input.pdf \
| \
convert \
-background transparent \
- \
page-${i}.png ; \
\
done

关于image - 将 PDF 转换为 PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/653380/

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