【问题标题】:JavaScript in laravel-dompdflaravel-dompdf 中的 JavaScript
【发布时间】:2017-03-10 06:40:16
【问题描述】:

我正在使用 laravel-dompdf 生成一个带有结果摘要的 PDF,由表格和一些图像组成,没什么了不起的。我也想在生成的 PDF 中打印 highcharts。所以首先,我想尝试一个简单的 javascript 代码,看看它是否有效……但事实并非如此。我启用了"DOMPDF_ENABLE_JAVASCRIPT" => true,但到目前为止还没有运气。我要打印的简单代码:

<div>foo</div>
<span id="insertHere"></span>
<div>bar</div>

<script>
    var el = document.getElementById('insertHere');
    el.innerHTML = '<div>Print this after the script tag</div>';
</script>

这只会打印 foo 和 bar.. 有人可以帮帮我吗?

【问题讨论】:

  • 我在 github repo 上找不到有关此功能的任何可靠信息。而且我找不到任何似乎可以做你想做的事的好图书馆。我看到的最好的方法是使用一个生成图像格式图表的 PHP 库......如果你真的想使用 HighChart,你需要找到一个像 PhantomJS 这样能够实际执行和呈现 javascript 代码的库。 ..
  • 我已经害怕我会得到这个答案 :-(。谢谢!
  • &lt;script&gt; 标签在顶层吗?如果是这样,请尝试将其包装在 &lt;div&gt; 中。
  • 有趣的@simon,我用
  • 大家好,谢谢大家的cmets。我已经尝试过@pnsh 的答案,这很有效。我开始认为 dompdf 只能处理简单的 javascript,而不能处理图形。不幸的是,但不是世界末日。我想我会建议用户通过导出模块保存HighChart,并分别打印PDF和HighChart。

标签: javascript php laravel highcharts dompdf


【解决方案1】:

Dompdf(或更具体地说,它用于 PDF 呈现的后端)并没有真正呈现 javascript。它的作用是 - 它解析 &lt;script type="text/javascript"&gt;&lt;/script&gt; 标签内的所有内容并将其添加到 pdf 文件的特殊部分。

我不确定这个 javascript 是否是您所需要的,因为您可以在 &lt;script&gt; 标记之外使用 dom 树。您可以做的是编写简单的场景,例如这样的:

<div>foo</div>
    <span id="insertHere"></span>
<div>bar</div>

<script type="text/javascript">
    app.alert({cMsg:"Message", cTitle: "Title"});
</script>

尝试打开生成的文件,您将看到警报。

这里有关于你可以在 javascript 部分做什么的更完整指南:Acrobat JavaScript Scripting Guide

【讨论】:

  • 感谢您的评论!我尝试了代码,这显示了一个消息框。我开始认为它只能处理“简单”的 javascript :-(
猜你喜欢
相关资源
最近更新 更多
热门标签