将多页PDF转换为具有透明度的PNG

将多页PDF转换为具有透明度的PNG,pdf,png,transparency,ghostscript,imagemagick-convert,Pdf,Png,Transparency,Ghostscript,Imagemagick Convert,目前,我在将PDF文件转换为PNG时遇到了几个问题。 源pdf文件中的透明度丢失 我已经测试了以下终端工具来创建png: 来自poppler tools的GhostScript、Imagemagick和pdf工具,始终在debian系统上 图像应具有与pdf相同的尺寸,也应具有相同的透明度 使用的命令: gs -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=test%d.png -r96 -q design.pdf -c quit convert design

目前,我在将PDF文件转换为PNG时遇到了几个问题。 源pdf文件中的透明度丢失

我已经测试了以下终端工具来创建png: 来自poppler tools的GhostScript、Imagemagick和pdf工具,始终在debian系统上

图像应具有与pdf相同的尺寸,也应具有相同的透明度

使用的命令:

gs -dNOPAUSE -sDEVICE=pngalpha -sOutputFile=test%d.png -r96 -q design.pdf  -c quit
convert design.pdf test%d.png
convert design.pdf -channel rgba -alpha on PNG32:test%d.png
convert -background none -colorspace srgb design.pdf -colorspace srgb -channel rgba -alpha on PNG32:test%d.png
pdftoppm -png file.pdf test
结果不是预期的具有透明度的png。背景为白色,应为100%透明。此外,还有一个绿色条,应该是半透明的。在我所有的尝试中,结果都会出现在一个没有透明度的浅绿色框中

为了查看结果,我上传了源pdf、错误创建的png和预期结果(从photoshop导出)

我设法使白色背景透明,但实际的文件透明度(包括半透明的绿色条/框)没有正确转换

我的问题有什么解决办法

致以最良好的祝愿, 克里斯

//更新 好的,我们已经找到了另一个第三方工具的解决方案,它以一种简单的方式产生了我预期的结果

inkscape design.pdf -z --export-dpi=100 --export-png=design.png
Thx帮助

使用Imagick(PHP扩展名),我使用如下代码将背景颜色转换为透明(我将白色背景的JPG转换为透明PNG):

请看这里:

相应的Imagick文档:

问候,,
迈克尔

背景是白色的,应该是100%透明的。-根据规范,PDF页面的背景为白色。也许您的工具尊重规范,并首先将背景漆成白色。@mkl:不,默认情况下PDF页面背景不是白色的。默认情况下,它将显示为白色。但如果它是透明的,您可以更改大多数阅读器,将其显示为类似棋盘的模式。对于Adobe Reader:确保在首选项中启用了复选框…->页面显示->页面内容和信息->显示透明度Grid@KurtPfeifle“当前页面的概念被概括为指一个透明组,由放置在页面上的整个对象堆栈组成,并与纯白色和完全不透明的背景合成。”。。。“背景名义上是白色的,尽管根据媒介的实际属性有所不同。但是,一些合规的读者可能会选择提供不同的背景,例如棋盘格或网格,以帮助可视化艺术品中的透明度效果。”因此,它是白色的,但它的形象可能会有所不同。@mkl:我还是不同意你的看法。您的引用来自官方PDF-1.7规范文档中的“透明度概述”一章。好吧,如果关于透明度的一章表明页面背面至少是名义上的白色和完全不透明的,即根本不透明,那么很难想象这是一种疏忽。
inkscape design.pdf -z --export-dpi=100 --export-png=design.png
$mask = new Imagick('/your/file/path.jpg');
$mask->setImageFormat('png');
$mask->paintTransparentImage('white', 0, 1000); // $fuzz = 1000 (3rd parameter) is just a guess