2012-07-19 76 views
13

我想知道是否有Rails中的任何庫或gem可用於打印網頁的內容,就像通過打印機從字面上打印到紙張上一樣。我還想知道是否有任何方法可以指定只打印頁面的特定部分(例如div或其他東西)?任何指針,建議或指導教程鏈接將不勝感激!在rails中打印東西(字面意思是打印機)

編輯

所以我在創建一個樣式表,這將創造一個打印友好的觀點做了一個嘗試,讓我們把它稱爲「print.css」:

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

,我想知道如果有什麼方法可以在我的應用程序啓動打印操作時才應用它?所以,當以下鏈接被點擊 應用程序打印之前應用上述css?下面是我的嵌入式紅寶石HTML鏈接:

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

最後我的javascript調用打印功能:

function printpage() 
    { 
    window.print() 
    } 
+0

客戶端我假設? – MSalters 2012-07-19 14:56:03

+1

可能想看看這個:http:// stackoverflow。com/questions/6406425/how-do-i-use-a-different-layout-for-a-specific-action – DVG 2012-07-19 14:58:41

+0

客戶端是 – TangoKilo 2012-07-19 15:05:15

回答

12

如果你把你的print.css如下

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

和使用瀏覽器的打印對話框,它應該根據print.css樣式

2

我相信這是通常做的方式是開闢了「打印機友好」窗口只有所需的信息,並從那裏用戶通過他們的網絡瀏覽器打印。你可以把它多一點人性化的加入在該窗口中一些javascript:

window.print(); 
5

我在我的問題得到了通過自動格式化頁面使用這個簡單的解決方案:

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()" %> 
+0

所以你在'EDIT'中嘗試的東西和這個解決方案之間的區別,在print.css周圍添加'@media.print {}'?可能希望更好地格式化此答案(@ media.print格式不正確) – mmcrae 2015-02-11 18:26:22

+0

它應該在打印預覽中應用'print.css',還是僅在打印的文檔中應用?這不適合我 – mmcrae 2015-02-11 18:35:25

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