【问题标题】:Convert multipage PDF to PNG with transparency将多页 PDF 转换为具有透明度的 PNG
【发布时间】:2014-06-17 10:30:44
【问题描述】:

在我将 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 导出)。

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

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

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

最好的问候, 克里斯

//更新 好的,我们找到了一个使用另一个 3th 方工具的解决方案,它可以轻松地产生我预期的结果。

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

谢谢帮助

【问题讨论】:

  • 背景为白色,应为 100% 透明。 - 根据规范,PDF 页面的背景为白色。也许您的工具尊重规范并首先将背景涂成白色。
  • @mkl:不,默认情况下 PDF 页面背景不是白色的。默认情况下,它将显示为白色。但是您可以更改大多数阅读器以将其显示为像棋盘一样的模式 IF 它是透明的。对于 Adob​​e Reader:确保在 Preferences... -> Page Display -> Page Content and Information -> Show Transparency Grid 中启用了复选框
  • @KurtPfeifle “当前页面的概念被概括为指由放置在页面上的整个对象堆栈组成的透明度组,并与纯白色和完全不透明的背景合成。” ...“背景名义上是白色的,尽管根据介质的实际属性而有所不同。但是,一些符合要求的读者可能会选择提供不同的背景,例如棋盘或网格,以帮助可视化透明度的效果艺术品。”因此,它白色的,但它可能可视化不同。
  • @mkl:我还是不同意你的观点。您的引用来自官方 PDF-1.7 规范文档中的“透明度概述”一章。
  • 好吧,如果关于 transparency 的章节表明页面背景至少在名义上是白色且完全不透明,即根本不透明,很难想象这是一个疏忽。

标签: pdf png transparency ghostscript imagemagick-convert


【解决方案1】:

使用 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

问候, 迈克尔

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 1970-01-01
    • 2012-06-26
    • 2018-06-05
    • 2011-06-29
    • 2018-10-19
    • 2015-01-26
    • 2016-04-30
    • 2012-01-29
    相关资源
    最近更新 更多