2

我正在从事一个涉及 TCPDF 的项目。我已经使用它一段时间了,但是在上次更新(6.0)之后,我的 PNG 图像真的被破坏了,尽管它的片段在文档上仍然可见。

我正在使用 Image() 方法如下: $pdf->Image($img, $x, $y, $twidth, $theight);

其中 $img 是源 URL,$x 和 $y 是位置,$twidth 和 $theight 是大小。我已经测试过 GIF 和 JPG 并且效果很好。PDF 上有一个 GIF 图像可以证明这一点。PNG 图像是 VLC 图标标志。

图片:

在此处输入图像描述

4

3 回答 3

1

项目站点,到有类似问题的用户:

根据所使用的 php-imagick 或 php-gd 版本,您可能对具有透明度的 PNG 图像有不同的处理方式。尝试更新 php-imagick 并禁用 php-gd

于 2013-04-11T20:33:24.187 回答
1

我遇到了这个问题,tcpdf 不显示仅 PNG 图像。(前提是图片路径正确)

这绝对是一个 GD 版本问题,至少当您仍然使用旧版本的 PHP(如 5.3)时。卸载/删除 Gd 通常不是一种选择,因为它在其他地方使用。

这是我修复它的方法:一般的想法是强制 TCPDF 使用 imagemagick 而不是 GD 来处理 PNG 文件。不删除GD。

脚步:

  • 安装 imagemagick 开发包

    在 debian 上:

    apt-get -y install libmagickwand5 libmagickwand-dev

  • 安装 imagemagick PECL 扩展(通过 apt 或编译它->google 是你的朋友)

  • 不要忘记激活

    echo "extension=/usr/lib/php/20090626-zts/imagick.so" > /etc/php5/conf.d/41-imagick.ini

  • 在 TCPDF 某处(文件顶部?)定义一个全局变量:

    define('USE_GD',0);

  • 在 tcpdf.php(我的版本是 tcpdf 5.0.002)中的函数内public function Image($file, $x='', $y='', $w=0, $h=0, $type=''....)靠近第 5305 行:

    • 寻找

      if ( (method_exists($this, $mtd)) AND (!($resize AND function_exists($gdfunction))))

      替换为(添加了USE_GD)

      if (USE_GD && (method_exists($this, $mtd)) AND (!($resize AND function_exists($gdfunction))))

    • 找到(下面几行)

      if (function_exists($gdfunction)) {

      替换为(添加了USE_GD)

      if (USE_GD && function_exists($gdfunction)) {

    • 一般来说,到处function_exists($gdfunction)都提到

于 2017-05-07T14:08:17.310 回答
0

因为我有同样的问题,所以我拿起了这个老问题。就我而言,解决方案很简单:

用 Photoshop 打开图像 --> 保存为 web

我知道这不是问题的真正解决方案,但它可能是一个简单的解决方法,可以为您节省大量时间。

于 2015-07-01T15:07:08.767 回答