2012-07-19 12 views
13

Zastanawiam się, czy w Railsach była jakakolwiek biblioteka lub klejnot do drukowania zawartości strony internetowej, jak w dosłownie na papierze za pomocą drukarki. Zastanawiam się również, czy istnieje jakiś sposób, aby określić, że drukowana jest tylko określona część strony (na przykład element div lub coś takiego)? Wszelkie wskazówki, porady lub linki do tutoriali będą mile widziane!Drukowanie rzeczy w szynach (dosłownie na drukarce)

EDIT

tak zrobiłem ukłucie przy tworzeniu arkusza stylów, który stworzy druku pogląd, nazwijmy go „print.css”:

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

I zastanawiałem się, czy był jakiś sposób, mógłbym zastosować go tylko wtedy, gdy moja aplikacja uruchamia akcję drukowania? Tak, że po kliknięciu poniższego łącza aplikacja stosuje powyższe css przed wydrukowaniem? Oto link w moim osadzonego ruby ​​html:

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

I wreszcie mój javascript wywołanie funkcji drukowania:

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

Zakładam, że strona klienta? – MSalters

+1

Może na to spojrzeć: http: // stackoverflow.com/questions/6406425/how-do-i-use-a-different-layout-for-a-specific-action – DVG

+0

Strona klienta tak – TangoKilo

Odpowiedz

12

Jeśli dodać print.css następująco

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

i użyć okna dialogowego drukowania przeglądarki, powinien on automatycznie formatować strony w zależności od stylu w print.css

2

Uważam, że sposób ten jest ogólnie zrobić, to otworzyć okno „do druku” zawiera tylko żądane informacje, a stamtąd użytkownik drukuje za pomocą przeglądarki internetowej. Można zrobić to nieco bardziej przyjazny dla użytkownika, dodając niektóre javascript w tym oknie:

window.print(); 
5

dotarłem wokół mojego problemu przez W omawianym prostym rozwiązaniu:

print.css:

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

tag @media Gwarantuje to nie wyświetlane w wersji drukowanej

application.js:

function printpage() 
{ 
    window.print() 
} 

show.html.erb:

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

, więc różnica między tym, co próbowaliście w swoim "EDYCIE", a tym rozwiązaniem, dodaje '@media.print {} 'wokół print.css? Może chcesz sformatować tę odpowiedź lepiej (plik @ media.print nie jest poprawnie sformatowany)? – mmcrae

+0

czy ma on zastosować 'print.css' w podglądzie wydruku, czy tylko w drukowanym dokumencie? Nie działa to dla mnie – 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') %> 
Powiązane problemy