2014-06-17 219 views
0

在我将PDF文件转换为PNG时遇到了几个问题。 透明度从源pdf文件中丢失。将多页PDF转换为具有透明度的PNG

我测试了以下终端工具来创建png: poppler工具中的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导出)。

PDF: http://speedy.sh/W75HP/source-file.pdf 
Result: http://speedy.sh/hfZMt/faulty-created-design.png 
Expected: http://speedy.sh/7mpEk/design-the-way-it-should-be.png 

我设法让白色背景变得透明,但实际的文件透明度,包括半透明的绿色条/盒,没有正确转换。

我的问题的解决方案是什么?

最好的问候, 克里斯

// UPDATE 好吧,我们发现与另一届党的工具,它产生于一个简单的方法我的预期结果的解决方案。

inkscape design.pdf -z --export-dpi=100 --export-png=design.png 

THX的帮助

+0

*背景是白色的,应该是100%透明。* - PDF页面的背景根据规范是白色的。也许你的工具尊重规范并且先把背景涂成白色。 – mkl

+0

@mkl:不,默认情况下,PDF页面背景不是白色。它会默认显示*白色。但是你可以改变大多数读者将其显示为像*** ***这样的棋盘,它是透明的。对于Adobe Reader:确保在首选项 - >页面显示 - >页面内容和信息 - >显示透明度网格* –

+0

@KurtPfeifle中启用复选框“当前页面的概念被泛化为指由放置在页面上的整个对象堆叠,与纯白色和完全不透明的背景合成。“ ......“背景是名义上的白色,虽然根据媒体的实际属性而有所不同。然而,一些符合要求的读者可能会选择提供不同的背景,例如检查板或网格,以帮助可视化艺术品透明度的效果。“因此,它*是*白色,但可能*可视化*不同。 – mkl

回答

0

使用Imagick(PHP扩展)我转换背景颜色为透明的,像这样的代码(我转换为JPG白色背景为透明的PNG):

$mask = new Imagick('/your/file/path.jpg'); 
$mask->setImageFormat('png'); 
$mask->paintTransparentImage('white', 0, 1000); // $fuzz = 1000 (3rd parameter) is just a guess 

看看这里: http://de3.php.net/manual/en/imagick.painttransparentimage.php

通讯Imagick文件: 个http://www.imagemagick.org/script/command-line-options.php#transparent

问候, 迈克尔