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)
任何身体可以帮我这个???
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)
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 执行也完美。
| 归档时间: |
|
| 查看次数: |
8865 次 |
| 最近记录: |