gpt4 book ai didi

javascript - RoR 渲染 PDF 并自动打印

转载 作者:行者123 更新时间:2023-11-30 17:13:46 24 4
gpt4 key购买 nike

我正在使用 wicked_pdf 来呈现 PDF 文件。 Web 应用程序在 chrome 中以 kiosk 模式运行(--kiosk --kiosk-printing)。问题是我必须在呈现 PDF 时打开打印对话框,以便通过信息亭自动打印 PDF。

我在我的 PDF-/HTML-Template 中使用 Javascript 函数 window.print(); 尝试了这个。但是该功能没有执行,也没有打开打印对话框。

这里是我的 Controller 方法(ma​​terials_stocks_controller.rb):

def create
@material = Manufacturer::MaterialsStock.new(params[:manufacturer_materials_stock])

respond_to do |wants|
if @material.save
@materials = Manufacturer::MaterialsStock.ordered_collection
wants.js { render :layout => false }
wants.pdf {

render :pdf => "Material-Barcode",
:template => 'manufacturer/material_info',
:show_as_html => !params[:debug].blank?,
:page_height => 62,
:page_width => 110,
:margin => {
:top => 3,
:bottom => 3,
:left => 0,
:right => 3
},
:use_xserver => false,
:print_media_type => true,
"load-error-handling"=> "ignore"
}
else
raise "Unable to create material in stock"
end
end
end

View (material_info.pdf.erb):

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script>
function printing_dialog() {
window.print();
}
</script>

</head>
<body onload="printing_dialog()">

<!-- stuff ... -->

</body>
</html>

有人知道如何打开打印对话框吗?

谢谢!! :)


更新:

我用 wicked_pdf-Docu 中的 page-number-JS-Code 完全替换了模板代码,并且 JS 未正常运行:

material_info.pdf.erb 中的新代码(用于测试):

<html>

<head>
<script>
function number_pages() {
var vars={};
var x=document.location.search.substring(1).split('&');
for(var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}
var x=['frompage','topage','page','webpage','section','subsection','subsubsection'];
for(var i in x) {
var y = document.getElementsByClassName(x[i]);
for(var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
}
}
</script>
</head>
<body onload="number_pages()">
Page <span class="page"></span> of <span class="topage"></span>
</body>
</html>

最佳答案

所以这是我的解决方案:

一个新的纯 HTML 文件 (create.html.erb),代码如下:

<html>
<head>

<%= javascript_include_tag "http://code.jquery.com/jquery-1.10.0.min.js" %>
<%= javascript_include_tag "http://code.jquery.com/ui/1.10.3/jquery-ui.min.js" %>

<script>
$(document).ready(function() {
pdf = document.getElementById('pdf_source');
pdf.focus();

setTimeout(function(){
pdf.contentWindow.print();
}, 3000);

});
</script>

</head>
<body>


<% url = "#{request.protocol}#{request.host_with_port}/admin/printing_manufacturer_materials_stock?file=#{@file_name}" %>
<iframe id ="pdf_source" src="<%=url %>" style="width:700px;height:500px;"></iframe>


</body>
</html>

在 Controller 中我创建了 PDF 并保存了它。打印方法根据参数 :file 发送保存的文件 (send_file)。

关于javascript - RoR 渲染 PDF 并自动打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com