Na niektórych stronach jest przycisk drukarki, który otwiera domyślną akcję przeglądarki, by wydrukowała stronę. Nie wiem, czy przy tym zapisuje ją od razu do PDF czy jak tam konkretnie działa, natomiast potrzebuję coś takiego zaimplementować u siebie.
Najzwyklejszy przycisk do wydrukowania obecnie wyświetlanej podstrony.
Da się to zrobić jakoś prosto?
Dzięki!
Hej Krystian,
jeśli chcesz to zrobić najprościej jak to możliwe, możesz zasymulować akcję drukowania wbudowaną w przeglądarkę (tak, jakbyś wcisnął ctrl + P) jednym poleceniem javascript:
<a href="#" onclick="window.print()">Drukuj stronę</a>
Wtedy, w zależności od tego, z jakiej przeglądarki korzystasz, taka akcja zostanie podjęta i pojawi się podgląd wydruku całej strony.
Rozwiązanie Jacka jest bardziej zaawansowane i umożliwia drukowanie fragmentów stron, opakowanych w divy. Zależy, co konkretnie potrzebujesz uzyskać.
- Proponuję obszar drukowania zamieścić w jakimś DIV o zainicjowanym id.
- Dodać na stronie klawisz z akcją onclick=drukujDiv(id)
- Użyć np takiej jak poniższa funkcji mojego autorstwa. Należy ją dać w pliku js dołączonym do strony (lepszy pomysł) albo wstawić w bloku js. Co kto woli.
- Proszę sobie tą funkcję zmienić w zależności od swoich potrzeb. Np można dołączyć swoje style a nie używać zdeklarowanych. Moja funkcja buduje swoje style.
// Drukowanie DIV ========================================= function drukujDiv(id) { w = window.open(); w.document.write('<!DOCTYPE html>'); w.document.write('<html lang="pl">'); w.document.write('<head>'); w.document.write('<meta http-equiv="expires" content="3600"/>'); w.document.write('<meta charset="utf-8">'); w.document.write('<meta http-equiv="X-UA-Compatible" content="IE=edge">'); w.document.write('<meta name="viewport" content="width=device-width, initial-scale=1">'); w.document.write('<style type="text/css">'); w.document.write('html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}'); w.document.write('html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}'); w.document.write('html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}'); w.document.write('</style>'); w.document.write('<style type="text/css" media="print">'); w.document.write('@page {size: auto; margin: 0mm;}'); counter(pages);}'); w.document.write('</style>'); w.document.write('</head>'); w.document.write('<body>'); w.document.write(document.getElementById(id).innerHTML); w.document.write('</body>'); w.document.write('</html>'); w.print(); w.close(); }