14

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

编辑

所以我尝试创建一个样式表,它将创建一个打印友好的视图,我们称之为“print.css”:

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

而且我想知道是否有任何方法可以仅在我的应用程序触发打印操作时应用它?因此,当单击以下链接时,应用程序会在打印之前应用上面的 css?这是我嵌入的 ruby​​ html 中的链接:

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

最后我的javascript调用打印函数:

function printpage()
  {
  window.print()
  }
4

5 回答 5

13

如果你添加你的 print.css 如下

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

并使用浏览器打印对话框,它应该根据 print.css 中的样式自动格式化页面

于 2012-07-19T15:40:30.817 回答
6

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

打印.css

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

@media 标签确保这些不会显示在印刷版本中

应用程序.js

function printpage()
{
   window.print()
}

显示.html.erb

<%= link_to "PRINT", '#', onclick: "printpage()" %>
于 2012-07-19T15:41:08.760 回答
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') %>
于 2013-11-02T14:00:19.223 回答
2

我相信通常这样做的方式是打开一个“打印机友好”窗口,上面只有所需的信息,然后用户从那里通过他们的网络浏览器进行打印。您可以通过在该窗口中添加一些 javascript 使其更加用户友好:

window.print();
于 2012-07-19T15:04:04.430 回答
1

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

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

于 2012-07-19T15:27:20.970 回答