Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przygotowanie dokumentu do druku
Forum PHP.pl > Forum > Po stronie przeglądarki
Jarod
Witam,

jak za pomocą php można odpowiednio przygotować i wydrukować dukument? Czy jest to wogóle możliwe (chodzi mi bardziej o przygotowanie - tj. marginesy, druk poziomy/pionowy, itp. dokumentu bo drukowanie to raczej z JS) ?

Nie chodzi mi o tworzenie dokumentów php tylko, żeby system przygotował dokument i zaczął drukować po naciśnięciu buttona drukuj..
siemakuba
przygotowanie do druku: CSS - @media print
wydruk po naciśnięciu buttona/linku: JS - window.print();

pozdr.

edit
postuluje o przeniesienie w bardziej odpowiednie miejsce na forum.
Kas
Moim zdaniem to nalezy zrobić korzystając z css.

Widzę, że ktoś już to napisał gdy ja męczyłem mojego posta.

Dodam tyle, że gdybyś korzystał z szablonów to możesz też dać jakiś uproszczony na takie strony do druku.

@siemakuba
Popieram w całej rozciągłości.
Jarod
Cytat(siemakuba @ 2006-05-09 21:16:08)
przygotowanie do druku: CSS - @media print
wydruk po naciśnięciu buttona/linku: JS - window.print();

pozdr.

edit
postuluje o przeniesienie w bardziej odpowiednie miejsce na forum.

Czyli rozmiary czcionek, wysokość linii ipt tak jak normalnie w dokumencie za pomocą css. A jak się ma sprawa do kontrolowania pozycji drukowania (pionowa/pozioma)?

Czy możliwość drukowania jest tylko za pomocą JS?
^bmb
spróbuj body {size: landscape;}
devnul
Cytat
Czy możliwość drukowania jest tylko za pomocą JS?

tylko, lub jeszcze VBS w IE, ale to mało uniwersalne, no i oczywiści reczne klikanie przycisku drukuj biggrin.gif
Jarod
window.print() nie działa pod operą :/

Jak ustawić marginesu drukowania?
cyphelf
Poczytaj tutaj o przygotowaniu dokumentów html do drukowania:

http://css-discuss.incutio.com/?page=PrintStylesheets
Jarod
Cytat(cyphelf @ 5.06.2006, 21:47 ) *
Poczytaj tutaj o przygotowaniu dokumentów html do drukowania:

http://css-discuss.incutio.com/?page=PrintStylesheets


Czytałem. Ale tam nie ma napisane dlaczego pod Operą nie działa windows.print().

Chiałbym, aby użytkownik po kliknięciu na przycisk drukuj nie musiał nic ustawiać tylko naciskać ok i żeby samo się drukowało..
siemakuba
a moze więcej kodu?
przed chwilą sprawdziłem i
  1. <a href="java script:window.print()">drukuj</a>
po kliknieciu w Operze 8.5 (Win XP) pokazuje okienko drukowania.

pozdr.
Jarod
Cytat(siemakuba @ 5.06.2006, 23:01 ) *
a moze więcej kodu?
przed chwilą sprawdziłem i
  1. <a href="java script:window.print()">drukuj</a>
po kliknieciu w Operze 8.5 (Win XP) pokazuje okienko drukowania.

pozdr.



  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <title>tytuł</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2" />
  5. <style type="text/css">
  6. body {
  7. cursor:default;
  8. font: normal 11px Verdana, Arial, Helvetica, sans-serif;
  9. }
  10. @media print
  11. {
  12. #screen {display:none;}
  13. }
  14.  
  15. @media screen
  16. {
  17. #print {display:none;}
  18. }
  19.  
  20. </head>
  21. <p id="print">TUTAJ TEKST, KTÓRY BĘDZIE TYLKO DO WYDRUKU (zobaczysz go gdy weźmiesz podgląd wydruku)</p>
  22. <p id="screen">TUTAJ TEKST KTÓRY BEDZIE WIDOCZNY TYLKO NA STRONIE</p>
  23.  
  24.  
  25. <script type="text/javascript"><!--//--><![CDATA[//><!--
  26. window.print()
  27. //--><!]]></script>
  28. </body>
  29. </html>


Cytat(siemakuba @ 5.06.2006, 23:01 ) *
a moze więcej kodu?
przed chwilą sprawdziłem i
  1. <a href="java script:window.print()">drukuj</a>
po kliknieciu w Operze 8.5 (Win XP) pokazuje okienko drukowania.

pozdr.



  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <title>tytuł</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2" />
  5. <style type="text/css">
  6. body {
  7. cursor:default;
  8. font: normal 11px Verdana, Arial, Helvetica, sans-serif;
  9. }
  10. @media print
  11. {
  12. #screen {display:none;}
  13. }
  14.  
  15. @media screen
  16. {
  17. #print {display:none;}
  18. }
  19.  
  20. </head>
  21. <p id="print">TUTAJ TEKST, KTÓRY BĘDZIE TYLKO DO WYDRUKU (zobaczysz go gdy weźmiesz podgląd wydruku)</p>
  22. <p id="screen">TUTAJ TEKST KTÓRY BEDZIE WIDOCZNY TYLKO NA STRONIE</p>
  23.  
  24.  
  25. <script type="text/javascript"><!--//--><![CDATA[//><!--
  26. window.print()
  27. //--><!]]></script>
  28. </body>
  29. </html>



PS: Jak za pomocą CSS ustawić marginesy drukowania i orientację poziomą? size: landscape; nie działa
artur81
wg mnie to nie ma co się bawić w żadne css'y, tylko od razu wydruki generować do pdfa za pomocą klasy fpdf, Szybko, wygodnie, obsługa bardzo prosta, zmiana portrait/lanscape jednym parametrem itd...
siemakuba
marginesy drukowania możesz ustawić tak, jak napisane tu: http://www.w3.org/TR/CSS21/page.html#page-margins
no chyba nie ciężko to było znaleźć.

Opera - nie lubi sie zdaje sie z twoim CDATA w którym umieściłeś javascript. Dobrze, że tak zrobiłeś, skoro używasz XHTML, ale nie wiem czemu Opera tego nie lubi.

Orientacji strony niestety nie ustawisz chyba za pomocą CSS. w3c napisało, że:
Cytat
if a page box does not fit the target sheet dimensions, the user agent may choose to:
* Rotate the page box 90° if this will make the page box fit.
* Scale the page to fit the target.

ale niestety user agent may choose i podejrzewam, że nie będzie to ten wybór którego byś sobie życzył...

pozdr.
Jarod
Jak wygeneruje do pdfa to też to trzeba jakoś wydrukować automatycznie ...
erix
Cytat
Jak wygeneruje do pdfa to też to trzeba jakoś wydrukować automatycznie ...

ale pdf juz jest otwierany w czyms innym...
Jarod
Cytat(erix @ 7.06.2006, 16:06 ) *
ale pdf juz jest otwierany w czyms innym...



Dużo jest problemów z biblioteką? Bo już mam wszystko skonfigurowane (apach, php) i nie chce kompilować jeszcze raz.

Ciężko się tworzy takie dokumenty? (wiem że jest przyklejony temat) ale pytam z ciekawości
mokry
Pozwole sie dolaczyc bo mam pewien problem z drukowaniem. Chodzi mi o to aby drukowac w IE, FF lub Opera (pdf odpada), ale zeby nie bylo adresu www, daty i strony (typu" Strona x z y).
Potrzebne mi to do drukowania faktur i nie może być użyty PDF. Jest to możliwe?
dobryvinyl.com
mokry, bingo!
tez tego szukam.
revyag
Jeśli masz zamiar robić to po stronie usera to nie da rady. Zależy to ustawień przeglądarki
Plik->Ustawienia strony
Jarod
To wiem.

Pytanie z innej beczki.

Jeśli wydruk jest na dwóch stronach to (tylko pod Firefoxem) na drugiej stronie się rozjeżdża i nie drukuje całych tabel. Tylko np częśc na pierwszej i drugą część tej tabeli na drugiej stronie (np. tak się kończy kartka).

Wpadłem na pomysł, że napiszę if() który będzie co np 5 wierszy przerzucał na kolejną strone. Czy do przeżucenia tekstu mogę użyć znacznika <br /> czy może lepszy sposób jest?
devnul
page-break-inside,page-break-before,page-break-after - poczytaj o tych stylach
Jarod
Cytat(devnul @ 8.06.2006, 08:23 ) *
page-break-inside,page-break-before,page-break-after - poczytaj o tych stylach


Zrobiłem tak:

  1. <?php
  2. (...)
  3. $licznik++;
  4. if ($licznik == 4)
  5. {
  6. echo '<div class="spacerdruk"></div>';
  7. $licznik = 0;
  8. }
  9. (..)
  10. ?>


  1. .spacerdruk {
  2. page-break-after: always;
  3. }


Pod Operą i IE co dwa wierszy bardzo łądnie łamie linie.

Natomiast pod FF nie. Jeśli do stylu (który podałem parę linijek wyżej) dodam
  1. height: 1px;

to wtedy co dwie linie pod FF też łamie, ALE na stronach > 1 już wszystko się rozjeżdża.. :/


EDIT:

Wystarczyło dać:
page-break-before: always;
height: 1px;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.