【问题标题】:TCPDF ERROR: [Image] Unable to get imageTCPDF 错误:[图像] 无法获取图像
【发布时间】:2011-12-01 16:57:42
【问题描述】:

我正在使用 TCPD 和 Drupal 的 print 模块来生成文章的 PDF,当我单击链接生成 PDF 时出现以下错误消息:

TCPDF ERROR: [Image] Unable to get image: http://localhost/pathToDrupal/themes/bartik/logo.png

图像存在于指定的位置。 我试过申请:

allow_url_fopen = On;
allow_url_include = On;

php.ini 中,但这无法解决问题。

请帮忙:(

【问题讨论】:

    标签: php tcpdf


    【解决方案1】:

    显然 TCPDF 不使用“fopen”包装器。

    如果您提供图像的 URL,TCPDF 会尝试使用 cURL 将其下载到存储您的 TCPDF 安装的“缓存”目录中(您必须检查 K_PATH_CACHE-constant 包含的内容以确定) .

    所以我猜你必须在这个魔法工作的目录中拥有写权限。您还需要启用 cURL。

    【讨论】:

    • 感谢@vstm 的回答。我现在有另一个问题:TCPDF 打印不正确。我正在尝试用Unicodecomplex-script(孟加拉语)打印一些东西.. 你能猜出什么问题吗?我已经成功地使用 TCPDF 安装了一个 unicode .ttf 字体并使用 SetFont() 设置它
    • 它对我有用,在 debian 服务器中安装 CURL 后:apt-get install php5-curl && /etc/init.d/apache2 restart
    • 我也遇到了这个问题,但这是因为文件夹受密码保护,curl无法直接访问文件夹。移除了保护并且它起作用了。
    • png 透明度 + 受保护的文件夹。为什么它将 CURL 用于本地图像,这超出了我的理解......
    【解决方案2】:

    在我们的 linux“example.com”服务器中处理连接的方式存在问题。所以这导致我们在服务器上尝试:

    curl -v http://www.example.com/image.jpg
    

    每当 TCPDF 尝试使用 curl 下载图像时,都找不到该图像,但是,我们可以直接在浏览器中打开它来查看图像(例如http://www.example.com/image.jpg)。

    我们通过将 example.com VirtualHost 设置为接受 127.0.0.1 连接并将“127.0.0.1 example.com”行添加到 /etc/hosts 来解决问题。

    【讨论】:

    • 这为我们工作了好几年。最近的服务器更新意味着我们也必须使用 curl 添加我们的实际 url 和站点域:123.456.789.123 example.com - 不确定是哪个更新导致了这个,但我很感激它现在又能正常工作了。
    【解决方案3】:

    只需在 PDF html 中将图像路径用作“images/your_image.png”而不是“http://yourdomain.com/images/your_image.png”。

    【讨论】:

      【解决方案4】:

      我发现当 src 是绝对链接时,TCPDF 会抛出 Unable to get Image: 错误。只需更改为相对链接即可成功创建 PDF。

      【讨论】:

      • 在此说明中,我的不适用于 https://,并且因为我使用了一些繁重的 mod_rewriting 我无法使用相对 URL。所以使用// 协议有效。对于任何使用 CakePHP 的人遇到此问题并使用 BASE_URL 常量,您可以改用它:str_replace(array('http:', 'https:'), '', BASE_URL)
      【解决方案5】:

      我在站点的 docroot 受 .htaccess 文件保护的登台服务器上遇到了这个问题(以防止搜索引擎索引和其他混淆)

      tcpdf 使用 curl 来获取图像,如果它无法访问该文件,则会出现此错误。

      为了解决这个问题,我在 .htaccess 中添加了一条规则以允许来自网络服务器的请求

      Allow from 123.45.6.7.8
      

      【讨论】:

        【解决方案6】:

        尝试通过当前工作目录添加路径。

        $img = getcwd().'/web/bundles/_bundlename_/img/logo.png';
        

        【讨论】:

          【解决方案7】:
          $pdf->Image($base_url.'/'.$node->field_loc_images[0]['filepath'] ,30, 40, 75, 113, 'JPG', '', '', true, 300, '');
          

          【讨论】:

          • 用代码回答时,最好在解决问题的代码旁边至少提供一点解释,以便 OP(和其他访问者)能够更好地理解为什么这会起作用。
          【解决方案8】:

          在你的字体unicode问题中你需要把这个语法代码:

          // set font
          $fontname = $pdf->addTTFfont('../your path here/sampletruetype.ttf', 'TrueTypeUnicode', '', 32);
          
          $pdf->SetFont($fontname, '', <font size value here>);
          

          在添加页面之前放置...

          【讨论】:

            【解决方案9】:

            在 drupal 中,一定要在你的函数中包含 tcpdf 库,而不是在你的模块文件的顶部,否则你会得到这个错误。

            【讨论】:

              【解决方案10】:

              也试试这个

              foreach($node->field_loc_images as $key=> $s)
              {
                  $pdf->Image($base_url.'/'.$s['filepath'], $x, $y, $w, $h, 'JPG', '', '', false, 300, '', false, false, 0, $fitbox, false, false);
              }
              

              【讨论】:

              • 注意评论您的代码,为什么您认为这会起作用?该问题已经有一个已被接受的答案,您的答案对问题有何补充?
              【解决方案11】:

              扩展错误。 base64 嵌入图像似乎也失败了。这对我来说是个大问题。

              【讨论】:

                【解决方案12】:

                在我将 PHP 5.5 升级到 5.6 后,由于图像错误,我损失了几个小时,

                我从@caligari 找到了解决方案(对已接受答案的评论),它为我解决了这个问题:

                像这样安装 CURL:

                apt-get install php5-curl && /etc/init.d/apache2 restart. 
                

                【讨论】:

                  【解决方案13】:

                  就我而言,我尝试过

                  curl -v http://www.example.com/image.jpg
                  

                  和“curl:(60)服务器证书验证失败。”显示。所以这只是一个证书问题。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-01-19
                    • 2012-11-24
                    • 1970-01-01
                    • 2012-06-02
                    • 2015-03-27
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多