【问题标题】:dompdf: loading html files to render, doesn't workdompdf:加载要渲染的html文件,不起作用
【发布时间】:2011-03-15 23:03:43
【问题描述】:

dompdf 无法从我的网站页面生成 pdf。但是,我已经保存了页面并将其上传为简单的静态 html 文件,并且成功了!

所以,我不知道问题出在 url 上还是其他问题。这是我得到的错误:

警告:require_once(/home/o110334/public_html/dompdf/include/firephp.cls.php) [function.require-once]:无法打开流:/home/o110334/public_html/ 中没有这样的文件或目录dompdf/dompdf_config.inc.php 第 194 行

致命错误:require_once() [function.require]: 无法打开所需的 '/home/o110334/public_html/dompdf/include/firephp.cls.php' (include_path='.:/usr/lib/php:/ usr/local/lib/php') 在 /home/o110334/public_html/dompdf/dompdf_config.inc.php 第 194 行

这是代码:

$file = "admin/store/orders/45/invoice/print"; // doesn't work
//$file = "invoice_sample2.html"; //it works (same web page, but stored in a html file)

$dompdf = new DOMPDF();
$dompdf->load_html_file($file);
$dompdf->render();
$dompdf->stream("sample.pdf");

【问题讨论】:

  • 你在使用某种框架吗?我问是因为文件路径,它看起来像是框架可能使用的那种友好的 URL。如果是这样,Wrikken 指定的方法 #1 是您要使用的选项。除非您指定完整的 URL(例如 example.com/admin/store/orders/45/invoice/print),否则 DOMPDF 假定为本地文件系统路径。除非您通过 Web 服务器,否则框架不会处理该文件。

标签: php dompdf


【解决方案1】:

DOMPDF 在本地运行时会尝试各种东西/eval,你最好尝试一下:

1) 通过 http 请求 HTML 的(当然,长途旅行):

$dompdf->load_html_file('http://yourdomain.ext/'.$file);

2) 不要让 DOMPDF eval 使用输出缓冲本身,让 DOMPDF 加载生成的 HTML 字符串。

<?php
    ob_start();
    //be sure this file exists, and works outside of web context etc.)
    require("admin/store/orders/45/invoice/print");
    $dompdf = new DOMPDF();
    $dompdf->load_html(ob_get_clean());
    $dompdf->render();
?>

【讨论】:

  • 我已经更新了我的问题。如果从静态 html 文件(甚至是本地)加载,相同的页面会正确呈现。
  • 我就是这么说的。我说不要让 DOMPDF 运行你的 php。
  • 方法 #1 编码更便携 $file = "/admin/store/orders/45/invoice/print"; $dompdf->load_html_file('http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).$file);
  • @BrianS: PHP_SELF 不是经常说到点子上,当然不是 url 重写、标准登陆脚本等。$_SERVER['REQUEST_URI'] 会让我更便携,但我真的不喜欢 (1),我如果可能的话,我会选择(2)。
  • @Wrikken 是的,它确实取决于您的环境。除了构建文档然后将其提供给 dompdf 之外,我会使用更接近 #2 的内容。有时通过 Web 服务器更容易,因为 a)动态内容将由服务器呈现,并且 b)外部文件引用(例如图像、css)将指向预期的位置。后一个问题是人们尝试使用 dompdf 和本地文件或 load_html() 时经常遇到的问题。
猜你喜欢
  • 1970-01-01
  • 2012-01-31
  • 2016-02-16
  • 2010-10-26
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
相关资源
最近更新 更多