我正在尝试将PDF转换为PNG图像(至少是其中一个的封面)。我正在用pdftk成功地提取PDF的第一页。我使用imagemagick进行转换:
convert cover.pdf cover.png这是可行的,但不幸的是,cover.png没有正确呈现( PDF中的一些alpha对象没有正确呈现)。我知道ImageMagick使用GhostScript进行转换,如果我直接使用gs进行转换,我可以得到想要的结果,但我更喜欢使用convert库,因为它有其他我想要利用的工具。
GhostScript中的此命令可完成所需的图像:
gs -sDEVICE=pngalpha -sOutputFile=cover.png -r144 cover.pdf我想知道有什么方法可以通过convert to GhostScript传递参数,还是只能直接调用GhostScript?
发布于 2010-08-01 04:14:03
如果第一个命令可以将其输出写入标准输出,并且第二个命令可以从标准输入中读取其输入,则可以将一个命令行与通过管道连接的两个命令(gs、convert)一起使用。
... -o %stdout ...)。幸运的是,convert可以从标准输入(convert -background transparent - output.png).中读取
问题已解决:
完整解决方案:
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.png、page-001.png等的PNG文件。(请注意,%d-counting是从零开始的-- file-000.png对应于%d的第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发布于 2013-03-19 02:59:31
在所有可用的替代方案中,我发现Inkscape在将PDF转换为PNG时产生的结果最准确。特别是当源文件具有透明层时,Inkscape在Imagemagick和其他工具失败的地方成功了。
这是我使用的命令:
inkscape "$pdf" -z --export-dpi=600 --export-area-drawing --export-png="$pngfile"在这里它是在一个脚本中实现的:
#!/bin/bash
while [ $# -gt 0 ]; do
pdf=$1
echo "Converting "$pdf" ..."
pngfile=`echo "$pdf" | sed 's/\.\w*$/.png/'`
inkscape "$pdf" -z --export-dpi=600 --export-area-drawing --export-png="$pngfile"
echo "Converted to "$pngfile""
shift
done
echo "All jobs done. Exiting."发布于 2015-11-05 01:52:11
要将pdf转换为图像文件,请使用以下命令:
用于PNG gs -sDEVICE=png16m -dTextAlphaBits=4 -r300 -o a.png a.pdf的
适用于JPG gs -sDEVICE=jpeg -dTextAlphaBits=4 -r300 -o a.jpg a.pdf的
如果有多个页面添加到name %03d gs -o a%03d.jpg a.pdf
每个选项的含义:
https://stackoverflow.com/questions/653380
复制相似问题