非Laravel环境下如何向dompdf传递数据?
不用框架也能给dompdf传递数据,这么做就行
当然可行,你之前的问题是用错了传递数据的方式——loadHtml的第二个参数是用来指定HTML编码的,不是传业务数据的。
正确的做法是利用PHP的变量作用域:你在当前脚本里定义的$data,在通过require引入的模板文件里是可以直接访问的,不需要额外传递。
修改你的代码,确保$data在require模板文件前定义好(你现在的代码其实已经做到了这一步),然后在pdf-file.php模板里直接使用这个变量生成HTML内容就行。
比如你的主脚本代码可以保持现有结构(不需要改loadHtml的调用):
$options = new Options(); $options->set('defaultFont', 'Arial'); $dompdf = new Dompdf($options); $data = ['test' => 'here is the data I want to pass']; ob_start(); require("mypath/templates/pdf-file.php"); $html = ob_get_contents(); ob_get_clean(); $dompdf->loadHtml($html); $dompdf->setPaper('A4', 'portrait'); $dompdf->set_option('isHtml5ParserEnabled', true); $dompdf->set_option('isRemoteEnabled', true); $dompdf->render(); $dompdf->stream();
然后在pdf-file.php模板里直接输出数据:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <h1>测试数据</h1> <p><?php echo $data['test']; ?></p> </body> </html>
这样模板就能获取到你定义的$data变量,生成包含动态数据的HTML,再传给dompdf渲染成PDF就没问题了。
内容的提问来源于stack exchange,提问作者user8463989
相关产品推荐
相关产品推荐

