7

我这里有个问题..

我使用缓冲来获取使用 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;

转换.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();

任何人都可以帮我解决这个问题???

4

2 回答 2

12

mpdf支持基本的javascript。

PDF 阅读器了解基本的 javascript 功能。

就像print();您可以使用SetJS()mpdf 库的功能添加它一样。

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();
于 2013-02-26T09:15:02.453 回答
4

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

于 2012-12-12T18:58:38.823 回答