我已经在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>
是在将要呈现为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代码如何执行。