TCPDF:PNG图像渲染不正确

时间:2013-04-11 20:26:59

标签: php pdf png tcpdf

我正在开发一个涉及TCPDF的项目。我已经使用了一段时间但是,在最后一次更新(6.0)之后,我的PNG图像变得非常破碎,尽管它的碎片仍然可以在文档中看到。

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

其中$ img是源URL,$ x和$ y是位置,$ twidth和$ theight是大小。 我已经测试了GIF和JPG,它运行得很好。 PDF上有一个GIF图像来证明这一点。 PNG图像是VLC图标徽标。

图片:

enter image description here

3 个答案:

答案 0 :(得分:1)

project site到遇到类似问题的用户:

  

可能你的PNG图像有透明度问题   根据php-imagick或php-gd以不同的方式处理   使用的版本。尝试更新php-imagick并禁用php-gd

答案 1 :(得分:0)

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

  

使用Photoshop打开图像 - >保存网页

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

答案 2 :(得分:0)

我遇到了这个问题,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)在第5305行附近的函数public function Image($file, $x='', $y='', $w=0, $h=0, $type=''....)内:

    • 找到

      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)到处都是

相关问题