我在这里有一个问题..
我已经使用缓冲来使用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();
任何人都可以帮助我吗?
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();
PHP * PDF库(tcpdf,fpdf,mpdf等...)无法运行javascript代码,因为这将需要javascript解释器和浏览器呈现功能,或者如果它支持javascript,则它将无法按照您惯常的方式运行它在客户端编程中。除此之外,css和标记的解释也很差。
但是,如果您正在寻找能够像普通浏览器一样呈现javascript和CSS的替代方法,我建议wkhtmltopdf。
wkhtmltopdf是shell实用程序,可使用webkit渲染引擎和qt将html转换为pdf。它作为控制台程序运行,其参数指定要呈现的内容,并具有大量选项。基本上,您可以告诉它加载页面,等待5秒钟以使javascript完成,然后创建pdf。有linux和Windows版本可用,尽管对于linux,它需要安装X11库。
[我肯定还有其他选择,但是多年来我一直在使用wkhtmltopdf,它生成的PDF文件看上去与在Chrome或Safari浏览器中的网页完全一样,而且javascript执行也很完美。