我正在开发一个涉及TCPDF的项目。我已经使用了一段时间但是,在最后一次更新(6.0)之后,我的PNG图像变得非常破碎,尽管它的碎片仍然可以在文档中看到。
我正在使用Image()方法,如下所示:
$pdf->Image($img, $x, $y, $twidth, $theight);
其中$ img是源URL,$ x和$ y是位置,$ twidth和$ theight是大小。 我已经测试了GIF和JPG,它运行得很好。 PDF上有一个GIF图像来证明这一点。 PNG图像是VLC图标徽标。
图片:
答案 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
(文件的顶部?)定义了一个全局变量:
define('USE_GD',0);
(我的版本是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)
到处都是