DOMPDF echo()不输出文本

时间:2014-06-17 22:44:50

标签: php echo dompdf

我刚刚升级到dompdf 6.1,现在我做了类似

的事情
<?php echo 'hello'; ?> 

在我的文档中,'hello'没有显示在pdf上。根据文档,我应该被允许使用

<?php ?> 

在我的html中呈现文本...这里是我的html,当我呈现它时所有显示的是pdf文档中的“Test”

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
Test <?php echo 'Hello'; ?>
</body>
</html>

有什么想法吗?我不确定我做错了什么。

谢谢

编辑:对于谷歌搜索这个人...

我现在使用捕获输出缓冲区的方法。我早就应该更新这个问题。现在,我没有使用file_get_contents(“myFile.php”),而是这样做:

ob_start();
require_once("myFile.php");
$dompdf = new DOMPDF();
$myHtmlInput = ob_get_clean();
$dompdf->load_html($myHtmlInput);

使用这种方法可以解决我在上面概述的任何问题,但我认为4年后,大多数人都会想到这一点。

2 个答案:

答案 0 :(得分:4)

尝试使用php代码生成HTML(因此PHP中的HTML不是相反的) 看看它是否有效

<?php
require_once("dompdf_config.inc.php");

$string  = 'hello';

$html =
  '<html><body>'.
  '<p>Test '.$string.'</p>'.
  '</body></html>';

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

?>

答案 1 :(得分:2)

在0.6.1之前的dompdf版本中,当DOMPDF_ENABLE_PHP设置为true时,将使用PHP的eval()函数预处理提供给dompdf的文档。因此,在以前的版本中,您可以echo将一些内容添加到HTML中。虽然在某些情况下这对于即时生成文档很方便,但它也会暴露出安全漏洞。

使用dompdf 0.6.1从dompdf中删除了PHP预处理。需要更新文档以反映此更改。你应该使用Sam Battat概述的技术。

(如果您需要其他建议,请向我们提供有关您工作流程的更多详细信息。)