在轨道上打印东西(字面意思是打印机)

时间:2012-07-19 14:51:50

标签: javascript html ruby-on-rails ruby-on-rails-3

我想知道Rails中是否有可用于打印网页内容的库或宝石,就像通过打印机在纸上打印一样。我还想知道是否有任何方法可以指定只打印页面的某个特定部分(例如div或其他)?任何指针,建议或教程链接将不胜感激!

修改

所以我已经开始创建一个样式表来创建一个打印友好的视图,我们称之为“print.css”:

div.transpose-keys, div#editSong, div#navigation, div#debug{
    display: none;
}

我想知道是否有任何方法只有在我的应用程序触发打印操作时才能应用它?这样当点击以下链接时 应用程序在打印之前应用上面的css?这是我的嵌入式ruby html中的链接:

<%= link_to "PRINT", '#', onclick: "printpage()" %>

最后我的javascript调用了print函数:

function printpage()
  {
  window.print()
  }

5 个答案:

答案 0 :(得分:13)

如果按以下方式添加print.css

<link rel="stylesheet" type="text/css" media="print" href="print.css">

并使用浏览器打印对话框,它应根据print.css

中的样式自动格式化页面

答案 1 :(得分:6)

我通过使用这个简单的解决方案解决了我的问题:

<强> print.css

@media print {
  div.info, div#editStuff, div#navigation, div#debug {
    display: none;
  }
}

@media标签确保这些显示在打印版本

<强>的application.js

function printpage()
{
   window.print()
}

<强> show.html.erb

<%= link_to "PRINT", '#', onclick: "printpage()" %>

答案 2 :(得分:3)

<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') %>

答案 3 :(得分:2)

我认为通常这样做的方法是打开一个“打印机友好”窗口,只显示所需的信息,然后用户通过他们的网络浏览器进行打印。您可以通过在该窗口中添加一些JavaScript来使其更加用户友好:

window.print();

答案 4 :(得分:1)

我使用wkhtmltopdf,http://code.google.com/p/wkhtmltopdf/和PDFKit,http://railscasts.com/episodes/220-pdfkit

RailsCast将有一个完整的示例,而wkhtmltopdf是一个抓取并输出PDF文档的机架实用程序。