2012-07-19 31 views
13

Tôi tự hỏi liệu có bất kỳ thư viện hoặc đá quý nào có trong Rails để in nội dung của trang web hay không, như trên máy in qua giấy. Tôi cũng tự hỏi liệu có bất kỳ cách nào bạn có thể chỉ định rằng chỉ một phần cụ thể của trang (ví dụ: một div hoặc một cái gì đó) sẽ được in? Bất kỳ gợi ý, lời khuyên, hoặc liên kết đến hướng dẫn sẽ được đánh giá cao!Công cụ in trên đường ray (theo nghĩa đen là máy in)

EDIT

vì vậy tôi đã thực hiện một đâm vào việc tạo ra một kiểu mà sẽ tạo ra một cái nhìn in thân thiện, chúng ta hãy gọi nó là "print.css":

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

Và tôi đã tự hỏi nếu có cách nào tôi có thể áp dụng nó chỉ khi ứng dụng của tôi kích hoạt hành động in? Vì vậy, khi sau đây là liên kết được nhấp ứng dụng áp dụng css ở trên trước khi nó in? Đây là liên kết trong html ruby ​​nhúng của tôi:

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

Và cuối cùng javascript tôi gọi hàm print:

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

Phía máy khách mà tôi cho là? – MSalters

+1

Có thể muốn xem xét điều này: http: // stackoverflow.com/questions/6406425/how-do-i-use-a-khác-bố cục-cho-một-hành động cụ thể – DVG

+0

Phía máy khách có – TangoKilo

Trả lời

12

Nếu bạn thêm print.css của bạn như sau

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

và sử dụng hộp thoại in trình duyệt, nó sẽ tự động định dạng trang theo phong cách print.css

2

Tôi tin rằng cách này thường được thực hiện là để mở ra một cửa sổ 'máy in thân thiện' chỉ với thông tin mong muốn trên đó và từ đó người dùng in qua trình duyệt web của họ. Bạn có thể làm cho nó thân thiện hơn một chút bằng cách thêm một số javascript trong cửa sổ:

window.print(); 
5

tôi đã giải quyết vấn đề của tôi bằng cách sử dụng giải pháp đơn giản này:

print.css:

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

thẻ @media đảm bảo đây là những không hiển thị trong bản in

application.js:

function printpage() 
{ 
    window.print() 
} 

show.html.erb:

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

do đó sự khác biệt giữa những gì bạn đang thử trong 'EDIT' và giải pháp này, đang thêm '@media.print {} 'quanh print.css? Có thể muốn định dạng câu trả lời này tốt hơn (@ media.print không được định dạng đúng) – mmcrae

+0

có phải áp dụng 'print.css' ở chế độ xem trước bản in hay chỉ trong tài liệu được in không? Nó không hoàn toàn phù hợp với tôi – mmcrae

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') %> 
Các vấn đề liên quan