【问题标题】:dompdf not rendering images from the server but is rendering from external sourcedompdf 不从服务器渲染图像,而是从外部源渲染
【发布时间】:2012-06-04 05:28:17
【问题描述】:

最近几天我一直在想办法解决这个问题,但一无所获。

我有 dompdf 在我的服务器上工作,它可以很好地创建 pdf。唯一的问题是它不会渲染我发送给它的图像。我将 DOMPDF_ENABLE_REMOTE 设置为 TRUE,tmp 文件夹是可写的,并且 get_file_contents 已打开。

现在,您在 dompdf 文件夹中获取的示例可以很好地呈现远程图像,它似乎只是来自我的服务器的图像文件导致了问题。

我试过绝对和相对网址。

我正在通过 codeigniter 运行它,它的 beta 版本是 0.6.0。

这是我的助手:

   function create_pdf($html, $filename, $stream=TRUE) 
   {
    require_once("dompdf/dompdf_config.inc.php");

    spl_autoload_register('DOMPDF_autoload');

    $dompdf = new DOMPDF();
    $dompdf->load_html($html);
    $dompdf->render();
    if ($stream) {
        $dompdf->stream($filename.".pdf");
    } else {
        write_file("./pdf_written_files/$filename.pdf", $dompdf->output());
    }
}

我的控制器功能:

function pdf($id)
{
    if($id !== NULL)
    {
        $this->load->helper(array('create_pdf','text'));

        $result = $this->product_model->order_by('order')->get_by(array('id' => $id))? : NULL;
        $collection = $this->collection_model->my_collection($result->id);
        $range = $this->range_model->my_range($result->id);
        $result->collection = $collection;
        $result->range = $range;
        $this->_data['content'] = $result;
        $html = $this->load->view('created_pdf', $this->_data, TRUE);
        create_pdf($html, $result->title);
    }
    else
    {
        echo 'no input found';
    }
}

【问题讨论】:

  • 服务器上是否安装了php-GD? dompdf/www/setup.php 说什么? (从您的浏览器导航到这里,例如pxd.me/dompdf/www/setup.php)。
  • 这也有助于查看$html 的样本。具体来说,当您说您已尝试过绝对 URL 和相对 URL 时,您的意思是什么?由于您使用的是$dompdf->load_html(),因此没有域的 URL 将相对于 PHP 文件或操作系统根目录(对于以“/”开头的 URL)。

标签: php image pdf codeigniter-2 dompdf


【解决方案1】:

您的图片链接必须使用您的网络文件夹中的相对路径。例如,如果您的 web 文件夹位于 /var/www/html/myweb 并且您的 CI 文件夹中的图像位于 assets/images 中(与应用程序文件夹处于同一级别),您只需编写相对路径: assets/images/imgname .jpg。

【讨论】:

    【解决方案2】:

    我遇到了完全相同的问题,没有为我显示任何图像 - 背景图像和内联图像。我必须在你的配置中将DOMPDF_ENABLE_REMOTE 设置为true dompdf_config.inc.php

    如果您与DOMPDF_ENABLE_PHP 一起启用此功能,请注意安全风险。

    【讨论】:

      【解决方案3】:

      添加以下行

      $dompdf = new DOMPDF();
      $dompdf->set('isRemoteEnabled', true);
      $dompdf->load_html($html);
      

      如果这不起作用,则将方法从 set 更改为 set_option

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-18
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-09
        相关资源
        最近更新 更多