mpdf忽略javascript

问题描述 投票:5回答:2

我在这里有一个问题..

我已经使用缓冲来使用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();

任何人都可以帮助我吗?

php javascript mpdf
2个回答
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();

3
投票

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执行也很完美。

© www.soinside.com 2019 - 2024. All rights reserved.