webForumDet fria alternativet

skriv ut (print) innehållet i en div

HTML & CSS

5 svar · 567 visningar · startad av Mattias Nordin

Medlem sedan dec. 20051 056 inlägg
Frågan#1

Jag har läst mig till att det går att styra utskrifter med CSS. Vet dock fortfarande inte riktigt hur det fungerar men tänkte försöka lära mig.

Fråga: Går det att skriva ut innehållet i en <div> ?

tex:

<html>
<body>
Det var en gång en liten text som inte skulle skrivas ut.

<div id="test">
Det var en gång en text som vi ville skriva ut.
</div>

Inte heller mig vill ni se...
</body>
Medlem sedan aug. 20068 090 inlägg
#2

Du kan formatera och skriva ut vad du vill och utesluta vad du vill från utskriften. Allt du behöver är en speciell stilmall för "print":
<link href="print.css" rel="stylesheet" type="text/css" media="print" />

Det du INTE vill ska synas ger du stilen: display:none, dvs t.ex.:

#photos {
display:none;
}
Sen formaterar du det du vill ha på vanligt sätt, men kan ju använda "points" som mått istället för web-baserade mått.

OBS: Du kan testa dina försök genom att "printa" ut som PDF från webbläsaren. Men använd INTE Gecko-baserade läsare (Firefox, Camino) eftersom dom brukar krångla och klippa av sidorna vid utskrift (om du webbsida kräver fler än en A4-sida i utskrift, så blir det bara en i alla fall).

PS: I ditt exempel måste du antagligen först lägga in den "lösa" texten i nån tag (p eller en div eller nåt) för att kunna dölja den. Du formaterar i så fall alltså själva taggen...

Medlem sedan apr. 200312 679 inlägg
#3

Jag vet inte om det går dölja allt i body, och sen få #test att visas. Men ifall Det ser ut så här:

<div id="pumpa">Det var en gång en liten text som inte skulle skrivas ut.</div>
<div id="test">Det var en gång en text som vi ville skriva ut.</div>
<div id="froe">Inte heller mig vill ni se...</div>

Så kan du ju i din print-css-fil skriva

#pumpa, #froe {display: none;}

Så är det ju bara #test som kommer att visas.

Medlem sedan maj 20007 492 inlägg
#4

Precis som du styr utseendet på vad som syns på skärmen med CSS så gör du likadant med det som skrivs ut.

Medlem sedan dec. 20051 056 inlägg
#5

Precis det behöver jag lära mig :r

Nu har jag redan en stor sida med en massa div etc. Försökte mig på en annan approach och den lockar lite om jag inte väljer att göra om sidan helt.


<input type="button" onclick="printDivContent()">

bla bla bla
<div id="printMe">
Stor tabell med formatering...
z/div>
bla bla 

<script>
function printDivContent()
{
var a = window.open('','','width=800,height=600,scrollbars=yes,resizable=yes');
a.document.open("text/html");
a.document.write('<html><head><link rel="stylesheet" href="/eventControl/_design/_global_print.css" type="text/css"></head><body>');
a.document.write(document.getElementById('printMe').innerHTML);
a.document.write('</body></html>');
a.document.close();
a.print();
}
</script>

Ovan fungerar riktigt bra. Tyvärr så är tabellen bredare än vad som normalt syns på en stående A4 sida. Letade lite på forumet och det verkade som att det inte var möjligt att tvinga utskriften i "landscape" istället för stående?!

Stämmer det?

Medlem sedan apr. 200312 679 inlägg
#6

Mattias Nordin skrev:

Stämmer det?

Mmm... :l I alla fall vad gäller nuvarande funktioner.

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)