Javascript 在rails中打印内容(字面上是到打印机)
我想知道Rails中是否有用于打印网页内容的库或gem,就像通过打印机打印到纸上一样。我还想知道是否有任何方法可以指定只打印页面的特定部分(例如div或其他内容)?任何指向教程的提示、建议或链接都将不胜感激 编辑 因此,我尝试创建一个样式表,它将创建一个打印友好的视图,我们称之为“print.css”: 我想知道是否只有当我的应用程序启动打印操作时,我才能应用它?这样,当单击以下链接时 应用程序在打印前应用上述css?以下是我的嵌入式ruby html中的链接:Javascript 在rails中打印内容(字面上是到打印机),javascript,html,ruby-on-rails,ruby-on-rails-3,Javascript,Html,Ruby On Rails,Ruby On Rails 3,我想知道Rails中是否有用于打印网页内容的库或gem,就像通过打印机打印到纸上一样。我还想知道是否有任何方法可以指定只打印页面的特定部分(例如div或其他内容)?任何指向教程的提示、建议或链接都将不胜感激 编辑 因此,我尝试创建一个样式表,它将创建一个打印友好的视图,我们称之为“print.css”: 我想知道是否只有当我的应用程序启动打印操作时,我才能应用它?这样,当单击以下链接时 应用程序在打印前应用上述css?以下是我的嵌入式ruby html中的链接: <%= link_to "
<%= link_to "PRINT", '#', onclick: "printpage()" %>
我认为通常的做法是打开一个“打印机友好”窗口,其中只包含所需的信息,然后用户通过web浏览器进行打印。通过在该窗口中添加一些javascript,您可以使其更加用户友好:
window.print();
我使用wkhtmltopdf和PDFKit
RailsCast将有一个完整的示例,而wkhtmltopdf是一个获取并输出PDF文档的框架实用程序。如果您按如下方式添加print.css
<link rel="stylesheet" type="text/css" media="print" href="print.css">
使用浏览器打印对话框,它会根据打印中的样式自动格式化页面。css我通过使用以下简单的解决方案解决了我的问题: print.css:
@媒体打印{
div.info,div#editStuff,div#导航,div#调试{
显示:无;
}
}
@media标签确保这些内容不会显示在打印版本中
application.js:
函数printpage()
{
window.print()
}
show.html.erb:
函数PrintDiv(){
var divToPrint=document.getElementById('divToPrint');
var popupWin=window.open(“”,"u blank’,“宽度=300,高度=300”);
popupWin.document.open();
popupWin.document.write(“”+divToPrint.innerHTML+“”);
popupWin.document.close();
}
50,:height=>30,:onclick=>“PrintDiv();”,:class=>'btn')%>
可能想看看这一点:那么您在编辑中尝试的与此解决方案之间的区别是在print.css周围添加@media.print{}
?您可能想更好地格式化此答案(@media.print格式不正确),它应该在打印预览时应用print.css
,还是仅在打印的文档中应用?这对我不太管用
window.print();
<link rel="stylesheet" type="text/css" media="print" href="print.css">
<script type="text/javascript">
function PrintDiv() {
var divToPrint = document.getElementById('divToPrint');
var popupWin = window.open('', '_blank', 'width=300,height=300');
popupWin.document.open();
popupWin.document.write('<html><body onload="window.print()">' + divToPrint.innerHTML + '</html>');
popupWin.document.close();
}
</script>
<%= image_tag("print.jpg", :width=>50, :height=>30, :onclick=>"PrintDiv();", :class=>'btn') %>