【问题标题】:Unable to get local storage variable in Wicked Pdf无法在 Wicked Pdf 中获取本地存储变量
【发布时间】:2020-06-08 09:43:54
【问题描述】:

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

这就是我保存的:

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

在文件.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】:

    您是在渲染为 PDF 的同一页面上设置 localStorage 值,还是在前一页上设置它,然后期望在 PDF 页面上检索它?

    后者在默认的 PDF 渲染模式下无法工作,因为您的 HTML 保存到磁盘上的文件中,并在虚拟浏览器中打开,没有其他页面上发生的任何上下文(localStorage、cookie)(除非您将它们作为选项提供给 wkhtmltopdf,至少对于 cookie)。

    您可以在渲染期间显式设置它,使其可用,如下所示:

    <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 中间件,它会尝试用 PDF 版本就地替换您看到的 HTML,而不会将其保存到磁盘上的临时 HTML 文件中,但这也可能无法正常工作,具体取决于JS代码是如何被执行的。

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      • 2014-03-25
      • 1970-01-01
      相关资源
      最近更新 更多