我在这里有一个问题..
我使用缓冲来使用mpdf获取pdf文件..
但我在这里有点困惑..
我在页面上有一些我被缓冲的javascript ..但是来自javascript的生成内容不会转换为pdf ..
让我直截了当..
让我说我有这个元素
<div id='text'></div>
在我的页面上我有一个javascript代码来向该div添加文本.. 结果是......
[通过浏览器打开页面]
<div id='text'>TEXT I ADDED USING JAVASCRIPT</div>
但当我将其转换为pdf ...
<div id='text'></div> (I DIDNT GET THAT TEXT)
这是脚本使用.. 的template.php
ob_start();
// content of page (included inline javascript code)
$yourfile = ob_get_content();
$_SESSION[forms] = $yourfile;
echo $yourfile;
convert.php
session_start();
include("MPDF54/mpdf.php");
$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0);
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list
$mpdf->WriteHTML($_SESSION[forms]);
$mpdf->Output();
任何人都可以帮我这个???
答案 0 :(得分:9)
mpdf
支持基本的javascript。
PDF阅读器了解基本的javascript功能。
与print();
类似,您可以使用mpdf库的SetJS()
函数添加它。
include("MPDF54/mpdf.php");
$mpdf=new mPDF('c','A4','','' , 0 , 0 , 0 , 0 , 0 , 0);
$mpdf->SetDisplayMode('fullpage');
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first level of a list
$mpdf->WriteHTML($_SESSION[forms]);
$mpdf->SetJS('print();') //JS code with <script></script> tags.
$mpdf->Output();
答案 1 :(得分:3)
PHP * PDF库(tcpdf,fpdf,mpdf等...)无法运行javascript代码,因为这需要javascript解释器和浏览器呈现功能,或者如果它支持javascript它将不会像你习惯的那样运行它在客户端编程中使用它。除此之外,CSS和标记解释也很差。
但是,如果您正在寻找能够像普通浏览器一样呈现javascript和css的替代品,我建议 wkhtmltopdf 。
wkhtmltopdf是使用webkit渲染引擎和qt将html转换为pdf的shell实用程序。它作为控制台程序运行,其中的参数指定要呈现的内容并具有大量选项。基本上你可以告诉它加载页面等待5秒javascript完成然后创建pdf。有Linux和Windows版本可用,但对于Linux,它需要安装X11库。
我确定还有一些其他选项,但我使用wkhtmltopdf多年,它生成的PDF文件看起来与Chrome或Safari浏览器中的网页完全一样,而且javascript执行效果也很好。