mpdf无视javascript

Waw*_*alx 5 javascript php mpdf

我有一个问题..

我使用缓冲来获取使用mpdf的pdf文件..

但我在这里有点困惑..

我在页面上有一些javascript我被缓冲..但javascript的生成内容不会转换为PDF格式..

让我说清楚..

让我说我有这个元素

<div id='text'></div>
Run Code Online (Sandbox Code Playgroud)

在我的页面上,我有一个javascript代码,以添加文本到该div ..结果是...

[通过浏览器打开页面]

<div id='text'>TEXT I ADDED USING JAVASCRIPT</div>
Run Code Online (Sandbox Code Playgroud)

但是当我把它转换成pdf时......

<div id='text'></div> (I DIDNT GET THAT TEXT)
Run Code Online (Sandbox Code Playgroud)

这是脚本使用.. template.php

ob_start();

// content of page (included inline javascript code)

$yourfile = ob_get_content();
$_SESSION[forms] = $yourfile;
echo $yourfile;
Run Code Online (Sandbox Code Playgroud)

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();
Run Code Online (Sandbox Code Playgroud)

任何身体可以帮我这个???

Mau*_*ora 9

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();
Run Code Online (Sandbox Code Playgroud)


Iva*_*jak 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 执行也完美。