【问题标题】:Is there any way to make Javascript work in DOMPDF-generated PDFs?有没有办法让 Javascript 在 DOMPDF 生成的 PDF 中工作?
【发布时间】:2017-08-30 08:22:54
【问题描述】:

我目前正在测试 DOMPDF 并让它非常适合我的用途,包括 CSS 样式、显示从 mysql 数据库获取的内容等。

现在我尝试使用一些 Javascript,但它不起作用。我使用了一个非常简单的脚本进行测试:

页面某处的HTML:

<div id='mydiv1' style='width: 100%;height:20px;background:#ddd;'></div>

JS(就在结束&lt;/body&gt;标签上方(但我也在开始&lt;body&gt;标签之后尝试过):

<script>
    document.getElementById('mydiv1').innerHTML = 'this is a test';
</script>   

当我在浏览器中回显此页面时(我正在回显一个包含完整 HTML/PHP 页面的变量),该文本出现在 DIV 中。当我在 DOMPDF 的loadHtml 中放入相同的变量,然后渲染并输出它时,脚本生成的文本不会出现在 PDF 中(页面的其余部分会出现)。

所以我的问题是:有没有办法让 Javascript 在 DOMPDF 生成的 PDF 中工作?

【问题讨论】:

标签: javascript html dompdf


【解决方案1】:

很遗憾,DOMPDF 不支持 javascript。您可以考虑查看phantomjs 之类的内容,也可以是used to save pdf files

【讨论】:

  • 感谢您的回答。但对我来说最重要的是 PHP 功能以及通过 MYSQL 获取内容的可能性,而这似乎与 phantomjs 无关。
  • 我刚刚在 Github 的 DOMPDF“功能”页面上看到了这一行:“内联 PDF Javascript 支持(带有与 PDF 文档 API 兼容的脚本)”。但我想这只是意味着可以直接写入 HTML 标签的 JS 东西,如果有的话(?)
  • 如果我没记错的话,他们说的是把 javascript 嵌入到 PDF 文件本身,虽然这是only supported by some pdf viewers
【解决方案2】:

有一个 DomPDF 选项可以打开内联 javascript:

$isJavascriptEnabled = true;

以下是如何使用 DomPDF 选项的示例:

$HTML = <<<HTML
!DOCTYPE html>
<html>
<head>
<body>
some html
</body>
<script> somejs </script>
</head>
</html>
HTML;

require_once "sites/all/libraries/dompdf/autoload.inc.php";
use Dompdf\Dompdf;
use Dompdf\Options;
$options = new Options();
$options->set('isJavascriptEnabled', TRUE);
$dompdf = new Dompdf($options);
$dompdf->load_html($HTML);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream('blah.pdf');

我从 DomPDF 的选项页面获取了这个:https://github.com/dompdf/dompdf/blob/master/src/Options.php

【讨论】:

  • 非常感谢您的回复!但是,默认情况下,此选项 启用/为真,在我上面描述的测试情况下也是如此,但这不起作用...
猜你喜欢
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 2019-09-13
  • 1970-01-01
相关资源
最近更新 更多