如何将dynamic php file转换为pdf?

时间:2012-01-08 21:33:10

标签: php html pdf pdf-generation dompdf

我尝试将动态php数据库文件转换为pdf。 我尝试使用DOMPDF,但我在定义字符串时遇到问题。我会解释一下:

这是dompdf的'hello world'脚本:

require_once("dompdf_config.inc.php");
$html =
    '<html><body>'.
    '<p>Hello World!</p>'.
    '</body></html>';
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("hello_world.pdf");

事情是,而不是简单的

'<html><body>'.
'<p>Hello World!</p>'.
'</body></html>' 

我有一个很长的php文件,里面有很多函数和sql查询。因为它我内部有许多“,”,e.t.c标志。我在这个页面上也有一个javascript动态图表(jqplot)。

因此,我得到错误错误错误而不是pdf文件......

有人有解决方案吗?

我真的很感激任何答案,并且真的非常感谢解决方案......

4 个答案:

答案 0 :(得分:4)

首先,您需要从PHP生成HTML,然后将其传递给DOMPDF:

<?php
    require_once("dompdf_config.inc.php");
    ob_start();
    require_once("path/to/input/file.php");
    $dompdf = new DOMPDF();
    $dompdf->load_html(ob_get_clean());
    $dompdf->render();
    $dompdf->stream("file.pdf");
?>

您还可以执行常规HTTP请求:

<?php
    require_once("dompdf_config.inc.php");
    $dompdf = new DOMPDF();
    $dompdf->load_html_file('http://example.com/file.php');        
    $dompdf->render();
    $dompdf->stream("file.pdf");
?>    

如果您需要JavaScript支持,请尝试使用wkhtmltopdf,它基于Webkit,并且可以完美地运行。

答案 1 :(得分:2)

您可以使用ob_startob_get_contents来运行PHP代码并将输出捕获为字符串。

但是对于JavaScript图表,你运气不好。 DOMPDF非常聪明,但它并不那么聪明。您需要使用非JavaScript图表解决方案,不使用图表,或使用Web浏览器生成PDF。

答案 2 :(得分:0)

我不确定为什么你需要首先生成HTML来构建PDF,但正如其他人所建议的那样,构建你的PHP脚本然后使用像FPDFTCPDF这样的东西。< / p>

他们都可以很好地构建PDF并可以输入HTML。

答案 3 :(得分:0)

试试这个...

<?php
    ob_start();

    require_once("dompdf_config.inc.php");

    $file = file_get_contents('http://example.com/file.php');

    $dompdf = new DOMPDF();
    $dompdf->load_html($file);
    $dompdf->render();
    $dompdf->stream("filename.pdf");
?>