webForumDet fria alternativet

Utskrift på en kortskrivare

HTML & CSS

10 svar · 647 visningar · startad av l-boy

Medlem sedan juli 2003221 inlägg
Frågan#1

Försöker att göra en utskrift av en bild på en speciell kortskrivare. Korten som sitter i skrivaren är 8,56cm x 5,4cm. Har fått en .eps-fil som jag öppnat i Photoshop och sparat om som en .jpg med 300dpi i 8,56cm x 5,4cm.

Har sedan gjort ett enkelt html-dokument med följande innehåll:

<html><head><title>Print</title></head>
<body><img src="gfx/intyg.jpg"></body>
</html>

Gör jag en utskrift får jag bara med översta delen till vänster på kortet, vilket är ganska logiskt då jag antar att bilden är för stor då den är inläst i 300dpi?

Gör jag samma sak med bilden inläst i 72dpi istället så täcker den inte ut hela kortet.

Vad är det jag behöver ändra för att få rätt storlek på utskriften?

Medlem sedan mars 20041 505 inlägg
#2

Det här med utskrifter, upplösning och webbsidor är väldigt luddigt och beror mycket på vilket operativsystem och webbläsare som används.
Det går att använda många måttenheter i CSS, bland annat millimeter.
Ange bildens önskade exakta mått såhär:

<!DOCTYPE html>
<html>
<head>
<title>Print</title>
<style type="text/css">
   @media print { img { width:85.6mm; height:54mm; } }
</style>
</head>
<body><img src="birdie.jpg"></body>
</html>

Webbläsaren bör skala ner bilden till rätt mått.
Ju större bilden är desto bättre upplösning vid utskrift.
En Doctype är bra för att webbläsaren ska läsa CSS ordentligt.
Rätt DPI ställer du in i skrivarens inställningar för utskriften.

Medlem sedan juli 2003221 inlägg
#3

Tack, det ser bra ut.

Kom på ytterligare en sak. Bilden skall egentligen bara användas som bakgrund och sedan skall en del text läggas ovanpå. Hur är rimligen enklast att gå till väga då? Göra en tabell och använda bilden som bakgrund? En div?

Medlem sedan mars 20041 505 inlägg
#4

Just bakgrundsbilder skrivs inte ut i de flesta webbläsarna.
Testa lägg bilden bakom innehållet istället, såhär:

<!DOCTYPE html>
<html>
<head>
<title>Print</title>
<style type="text/css">
   @media print {
      img, div { width:85.6mm; height:54mm; position:absolute; }
      img { z-index:1; }
      div { z-index:2; }
   }
</style>
</head>
<body><img src="birdie.jpg">
<div>Här lägger du ditt innehåll</div>
</body>
</html>

Detta är dock väldigt experimentellt! :P

Medlem sedan juli 2003221 inlägg
#5

Tackar. Nu börjar det likna något. Ett sista problem (hoppas jag). Tanken är att jag skall kunna skriva ut X antal kort genom bara en utskrift. Hur gör man det på ett enkelt sätt? Finns det något enkelt sätt att göra sidbyte på eller skall man göra en div för varje kort som skall printas som innehåller bakgrund+text?

Medlem sedan juli 2003221 inlägg
#6

Förtydligar det hela lite.

Kör jag ett kort gick det utmärkt med följande kod:


CSS:

img {
	z-index: 1;
	width:85.6mm; 
	height:54mm;
	position: absolute;
	
}

.text1 {
	z-index: 2;
	left: 24mm;
	top: 75px;
	position: absolute;
	font-family: Arial;
	font-size: 7.5pt;
}

.text2 {
	z-index: 3;
	left: 24mm;
	top: 92px;
	position: absolute;
	font-family: Arial;
	font-size: 7.5pt;
}

HTML:

<img src="gfx/intyg.jpg">
<div class="text1">Namn</div>
<div class="text2">Personnummer</div>

Men nu behöver jag skriva ut flera kort på samma gång.

Antar att det kan vara klokt att lägga varje enskilt kort inom en t.ex div class="card" som innehåller tex clear:both; ? Hur bör jag positionera texten så att den passar inom varje kort ?

Medlem sedan mars 20041 505 inlägg
#7

l-boy skrev:

Antar att det kan vara klokt att lägga varje enskilt kort inom en t.ex div class="card"

Det blir perfekt (y)
Sen kör du page-break-after:always; för denna class.
"clear" är inte relevant här eftersom det bara påverkar floats.

Medlem sedan juli 2003221 inlägg
#8

Hur gör jag för att få texten absolut placerad inom klassen card och inte absolut över hela sidan?

Medlem sedan mars 20041 505 inlägg
#9

Okej, här är ett komplett förslag där du kan placera texten var som helst på kortet.
Tips: Använd inte pt eller px som måttenheter vid utskrift, använd millimeter för allting, både textstorlek och placering.
(Jag har bara testat i Firefox, där verkar page-break-after bugga lite.
I övrigt har jag endast tillgång till IE8 Beta och där är Skriv ut-knappen stendöd...)

<!DOCTYPE html>
<html>
<head>
<title>Print</title>
<style type="text/css">

	div.card {
		width:85.6mm; height:54mm; /* Kortets totala storlek */
		position:relative; /* Få texten absolut placerad inom klassen */
		page-break-after:always; /* Ett kort per sida */
	}
	div.card img {
		width:100%; height:100%; /* Sträcker ut bilden över hela kortet */
		position:absolute;
		top:0;
		left:0;
		z-index:1;
	}
	div.card div.text {
		position:absolute;
		z-index:2;
	}

	/* Här kan du placera varje enskild textrad på kortet */
	div.item1 { left:24mm; top:5mm; }
	div.item2 { left:24mm; top:14mm; }

</style>
</head>
<body>

<div class="card">
	<img src="image.jpg">
	<div class="text item1">Namn</div>
	<div class="text item2">Personnummer</div>
</div>

<div class="card">
	<img src="image.jpg">
	<div class="text item1">Namn</div>
	<div class="text item2">Personnummer</div>
</div>

</body>
</html>
Medlem sedan juli 2003221 inlägg
#10

Funkar perfekt. Förutom en sak. När jag kör med page-break-after:always; så kommer det automatiskt en helt tom utskrift efter det sista kortet. Kan man bli av med den på ett enkelt sätt tro?

Medlem sedan juli 2003221 inlägg
#11

Löste det genom att sätta page-break-after: avoid; på sista kortet.

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)