[ Flo @ 15.06.2011. 20:02 ] @
Hteo bih da na sajtu postavim takse za uplatu registracije vozila. Pa me interesuje da li postoji mogucnost da se direktno sa mog sajta stampa uplatnica koja je tamo vec generisana?
[ Aleksandar Ružičić @ 15.06.2011. 20:51 ] @
Imas dva nacina:

1. da za to otvoris novu stranu koja ima samo uplatnicu na sebi i nista vise (tj samo ono sto zelis da se ostampa)

2. da samo za tu stranu dodas "print css" koji ce prilikom stampanja da sakrije sve ostale elemente na strani, recimo da imas ovakvu stranu:

Code (html):

<html>
   <head>
      <!-- ... -->
   </head>
   <body>
      <!-- ... neki sadrzaj ovde... -->
      <div class="printme">
         <!-- ovde sta zelis da se stampa -->
      </div>
      <!-- ... jos sadrzaja ovde... -->
   </body>
</html>
 


potrebno je da u head ulinkujes jedan css fajl koji ce se koristiti samo na toj strani (tj svim stranama namenjenim za stampu):

Code (html):

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


ovo media="print" znaci da ce se taj css koristiti samo prilikom stampanja.

sadrzaj printme.css-a je sledeci:

Code:

* { display: none !important; }
.printme, .printme * { display: block !important; }  
/* mada ovo nije bas najpametnije resenje, 
    mozda bi bilo bolje koristiti visibility umesto display, al onda bi
    morao da se igras i sa pozicioniranjem vidljivih elemenata */


naravno, ovo ne mora da se radi sa odvojenim css fajlom, moze pomocu media query-ja da s eubaci u postojeci css fajl i da se ti stilovi kontrolisu nekom klasom na body elementu...
[ Flo @ 15.06.2011. 22:59 ] @
Probao sam drugi nacin, i kada idem na stampu, ne stampa nista, izadje samo prazan list
[ Aleksandar Ružičić @ 16.06.2011. 02:04 ] @
moguce da onaj !important kod display: block nije dovoljno jak da nadjaca postojece selektore na strani. u tom slucaju ces morati da sakrijes sve elemente sem tog koji hoces da stampas (umesto da sakrijes sve pa onda da pokusas da prikazes taj sto ti treba). ako imas npr tri elementa u body-ju, sa klasama prvi, drugi i treci a hoces da samo drugi bude vidljiv prilikom stampe onda u css stavi samo .prvi, .treci { display: none !important; }
[ Br@nkoR @ 16.06.2011. 07:52 ] @
Problem je u:
Citat:
Aleksandar Ružičić:
Code:

* { display: none !important; }


koji sakrije body i html elemenat, a u kojima se nalazi elemenat sa klasom printme

Pokušaj umesto ovoga da staviš:
Code:

body * { display: none !important; }


A isto će nastati problem ukoliko se .printme nalazi unutar nekog elementa, jer će ponovo biti sakriveni parent elementi.
[ Aleksandar Ružičić @ 16.06.2011. 10:25 ] @
Citat:
Br@nkoR: koji sakrije body i html elemenat, a u kojima se nalazi elemenat sa klasom printme


ne mogu da verujem da mi je to promaklo :)

nikada ne radim ovo na ovaj nacin pa mi nije ni palo na pamet...