Jaki jest najlepszy sposób wydrukowania zawartości DIV?
javascript
jquery
html
printing
test użytkownika
źródło
źródło
Odpowiedzi:
Nieznaczne zmiany w stosunku do wcześniejszej wersji - przetestowane na CHROME
źródło
mywindow.document.write(data);
Dodaj to:mywindow.document.write('<script type="text/javascript">$(window).load(function() { window.print(); window.close(); });</script>');
I usuń:mywindow.print();
imywindow.close();
Myślę, że jest lepsze rozwiązanie. Spraw, aby div drukował na całym dokumencie, ale tylko wtedy, gdy jest wydrukowany:
źródło
Chociaż powiedział to @gabe , jeśli używasz jQuery, możesz użyć mojej
printElement
wtyczki.Jest próbka tutaj , a więcej informacji na temat wtyczki tutaj .
Użycie jest raczej proste, wystarczy pobrać element za pomocą selektora jQuery i wydrukować go:
Mam nadzieję, że to pomoże!
źródło
Korzystając z Jquery, po prostu użyj tej funkcji:
Twój przycisk wydruku będzie wyglądał następująco:
Edycja: Jeśli masz dane formularza, które musisz zachować, klon nie skopiuje ich, więc musisz tylko pobrać wszystkie dane formularza i zastąpić je po przywróceniu w następujący sposób:
źródło
el
jest okropny, szczególnie od czasu użycia jQ. O wiele lepiej po prostu zdaćselector
i pozbyć się mocno zakodowanych#
el
. Myślę, że polecenie drukowania jest wysyłane podczas przywracania ciała.Stąd http://forums.asp.net/t/1261525.aspx
źródło
Użyłem
Bill Paetzke
odpowiedzi, aby wydrukować div zawierający obrazy, ale nie działało to z Google Chromepo prostu musiałem dodać ten wiersz,
myWindow.onload=function(){
aby działał, a oto pełny kodtakże jeśli ktoś po prostu musi wydrukować div z identyfikatorem, nie musi ładować jquery
tutaj jest czysty kod javascript, aby to zrobić
mam nadzieję, że to może komuś pomóc
źródło
Spowoduje to wydrukowanie
div
żądanego obszaru i przywrócenie zawartości tak, jak była.printdivname
jestdiv
do wydrukowania.źródło
Utwórz osobny arkusz stylów drukowania, w którym ukryje się wszystkie inne elementy oprócz zawartości, którą chcesz wydrukować. Oflaguj go za pomocą
'media="print"
podczas ładowania:<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Pozwala to na załadowanie zupełnie innego arkusza stylów do wydruków.
Jeśli chcesz zmusić okno dialogowe drukowania przeglądarki do wyświetlenia dla strony, możesz to zrobić w następujący sposób po załadowaniu za pomocą JQuery:
$(function() { window.print(); });
lub wywołane innym zdarzeniem, na przykład przez kliknięcie przycisku przez użytkownika.
źródło
Myślę, że dotychczas zaproponowane rozwiązania mają następujące wady:
Poprawiłem powyższe rozwiązania. Oto coś, co przetestowałem, które działa naprawdę dobrze z następującymi korzyściami.
Najważniejsze punkty do zapamiętania:
źródło
Stworzyłem wtyczkę do rozwiązania tego scenariusza. Byłem niezadowolony z wtyczek i postanowiłem uczynić coś bardziej rozbudowanym / konfigurowalnym.
https://github.com/jasonday/printThis
źródło
Przyjęte rozwiązanie nie działało. Chrome drukował pustą stronę, ponieważ nie ładował obrazu na czas. To podejście działa:
Edycja: Wygląda na to, że zaakceptowane rozwiązanie zostało zmodyfikowane po moim poście. Dlaczego głosowanie negatywne? To rozwiązanie również działa.
źródło
Wiem, że to stare pytanie, ale rozwiązałem ten problem w jQuery.
CSS
źródło
Chociaż odpowiedź @BC była najlepsza do wydrukowania pojedynczej strony.
Ale Aby wydrukować wiele stron formatu A4 jednocześnie za pomocą klawiszy Ctrl + P, pomocne może być następujące rozwiązanie.
źródło
źródło
Oto moja wtyczka do drukowania jquery
źródło
Jeśli chcesz mieć wszystkie style z oryginalnego dokumentu (w tym style wbudowane), możesz użyć tego podejścia.
Realizacja:
źródło
Uwaga: Działa to tylko z witrynami obsługującymi jQuery
Dzięki tej fajnej sztuczce jest to bardzo proste. To działało dla mnie w przeglądarce Google Chrome . Firefox nie pozwala na drukowanie do formatu PDF bez wtyczki.
Logika jest prosta. Tworzymy nowy tag skryptu i dołączamy go przed zamykającym tagiem body. Wstrzyknęliśmy rozszerzenie druku jQuery do HTML. Zmień myDivWithStyles za pomocą własnego identyfikatora tagu Div. Teraz trzeba się zająć przygotowaniem wirtualnego okna do wydruku.
Wypróbuj na dowolnej stronie. Tylko zastrzeżenie jest czasami trudne, CSS może powodować brak stylów. Ale treść dostajemy najczęściej.
źródło
W Operze spróbuj:
źródło
Oto rozwiązanie IFrame, które działa dla IE i Chrome:
źródło
Utworzono coś ogólnego do użycia w dowolnym elemencie HTML
Mam nadzieję że to pomoże.
źródło
Zmodyfikowałem odpowiedź @BillPaetski, aby użyć querySelector, dodać opcjonalny CSS, usunąć wymuszony tag H1 i opcjonalnie określić tytuł lub wyciągnąć z okna. Nie drukuje już również automatycznie i ujawnia elementy wewnętrzne, dzięki czemu można je wyłączyć w funkcji otoki lub w dowolny sposób.
Jedynymi dwoma prywatnymi zmiennymi są tmpWindow i tmpDoc, chociaż uważam, że dostęp do tytułu, css i elem może się różnić, należy założyć, że wszystkie argumenty funkcji są prywatne.
Kod: Stosowanie:źródło
<input>
elementów. Jak mogę tego użyć, w tym co wpisał użytkownik?<input>
,<select>
,<textarea>
compontents być ich wartość wykonawcze. Istnieją alternatywy, ale nie jest to problem z tym skryptem, ale problem ze sposobem działania przeglądarek i uzyskaniainnerHTML
właściwości dokumentów z.attr('value',)
. Zrobiłem to nawet dla textarea (poprzez dołączenie) i pól wyboru (.attr('checked',)
). Jestem przepraszam , gdybym nie myślał wystarczająco dużo o co prosiłem.Poniższy kod kopiuje wszystkie odpowiednie węzły, które są celem selektora zapytania, kopiuje ich style widoczne na ekranie, ponieważ brakuje wielu elementów nadrzędnych używanych do celowania selektorów css. Powoduje to pewne opóźnienie, jeśli istnieje wiele węzłów potomnych z wieloma stylami.
Idealnie byłoby mieć gotowy arkusz stylów drukowania, ale jest to przydatne w przypadkach, w których nie ma potrzeby wstawiania arkusza stylów drukowania i chcesz drukować jak widać na ekranie.
Jeśli skopiujesz poniższe elementy w konsoli przeglądarki na tej stronie, wydrukowane zostaną wszystkie fragmenty kodu na tej stronie.
źródło
To jest naprawdę stary post, ale tutaj jest jedna moja aktualizacja, którą zrobiłem, używając poprawnej odpowiedzi. Moje rozwiązanie korzysta również z jQuery.
Chodzi o to, aby używać właściwego widoku wydruku, dołączać wszystkie arkusze stylów do prawidłowego formatowania, a także być obsługiwane w większości przeglądarek.
Później potrzebujesz czegoś takiego:
Spróbuj.
źródło
To samo co najlepsza odpowiedź, na wypadek, gdybyś musiał wydrukować obraz tak jak ja:
Jeśli chcesz wydrukować obraz:
źródło
load
zdarzenia w wyskakującym okienku. Bez niego wydrukujesz pustą stronę, ponieważ obraz nie jest ładowany. =>$(popup).load(function(){ popup.focus(); popup.print(); });
Najlepszym sposobem na to byłoby przesłanie zawartości div na serwer i otwarcie nowego okna, w którym serwer mógłby umieścić te treści w nowym oknie.
Jeśli nie jest to opcja, możesz spróbować użyć języka po stronie klienta, takiego jak javascript, aby ukryć wszystko na stronie oprócz tego div, a następnie wydrukować stronę ...
źródło