无法在Wicked Pdf中获取本地存储变量

问题描述 投票:0回答:1

我已经在Java脚本本地存储中存储了一些数据“ xyz”。现在,我正在尝试以邪恶的pdf格式访问该文件,但无法访问。当我显示为html但未在pdf中打印时,它可以工作。

这就是我保存的内容:

localStorage.setItem("my_id", "xyz");

在file.pdf.erb中:

<script type="text/javascript">
  setTimeout((function () {
    //console.log(localStorage.getItem("dashboard_bar_chart_actual_situation_control"));
    document.getElementById("p1").innerHTML = "HELLo "+localStorage.getItem("my_id");
    window.status = "FLAG_FOR_PDF";
}), 1000);
</script>
javascript ruby-on-rails wicked-pdf
1个回答
0
投票

是在将要呈现为PDF的同一页面上设置localStorage值,还是在上一页上设置它,然后期望在PDF页面上检索它?

后者在默认的PDF呈现模式下不起作用,因为您的HTML已保存到磁盘上的文件中,并在虚拟浏览器中打开,而没有其他页面上发生的任何上下文(localStorage,Cookie)(除非您至少可以将它们作为wkhtmltopdf的选项提供给它们)。

您可以在渲染过程中对其进行显式设置,以便使其可用,如下所示:

<script>
  // Render it to the page, so it is executed when the JS runs:
  localStorage.setItem("my_id", "<%= "xyz" %>")

  // Use it:
  document.getElementById("p1").innerHTML = "HELLo "+localStorage.getItem("my_id");
</script>

或者,您可以使用WickedPDF中间件,该中间件尝试将您看到的HTML替换为PDF版本,而不将其保存到磁盘上的临时HTML文件中,但是根据情况的不同,它可能无法正常工作JS代码如何执行。

© www.soinside.com 2019 - 2024. All rights reserved.