webForumDet fria alternativet

Hämta webdokument?

9 svar · 367 visningar · startad av AndreasC

AndreasCMedlem sedan mars 20011 964 inlägg
#1

Hur ska jag skriva för att hämta in ett webdokument i vanligt .html-format mha av <object> ?

Behöver ha det inhämtat i ett annat dokument eftersom jag ska ha en printfunktion i det dokumentet som jag hämtar in. Jag vill att när man använder printfunktionen så ska endast en viss text skickas till skrivaren. Därför skulle jag kunna lösa det genom att jag hämtar in ett externt dokument med denna text samt printfunktion i en <object>, då antar jag att endast texten skrivs ut och inte allt annat som finns på den sida där <object> ska infogas.

iframe funkar ju inge vidare cross browser så det för kanske bli object isåfall?

zcorpanMedlem sedan dec. 20042 245 inlägg
#2

IE klarar inte av detta.

<object type="text/html" data="foo.html">
<p><a href="foo.html">Foo</a></p>
</object>

Vad som skrivs ut är väldigt osäkert också. Det beror vilken webbläsare man använder och vilka inställningar man har.

Vore det inte lättare att använda en stilmall för skrivaren?

<link rel="stylesheet" type="text/css" media="print" href="/stylesheets/print">
AndreasCMedlem sedan mars 20011 964 inlägg
#3

Vill du förklara lite mer zcorpan? jag är inte helt säker att jag hänger med.

jarvkloMedlem sedan juli 20013 378 inlägg
#4

Hmm...

Det jag tror zcorpan menar är att du kan välja vad som skall skrivas ut eller ej på en sida mha CSS och att du antagligen inte behöver fundera över inkluderingar om inte sidan är väldigt speciell...

Exempel:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="sv" xml:lang="sv">
<head>
	<title>Ett exempel</title>
	<meta http-equiv="Content-Type" content="text/html; ISO-8859-1" />
<style type="text/css">
@media print {
	#menu {display:none;}
	#content {
		width:95%; 
		border:1px solid black; 
		color:black; background-color:white
  }
}
@media screen {
	#menu {
		float:left;
		width:250px;height:400px;
		background:silver;
		border:5px inset navy;
	}
	#content {
		height:400px;
		margin-left:260px;
		border:1px solid black; 
		color:navy; background-color:maroon
  }
}
</style>
</head>
<body>
<div id="menu">
	Detta skall bara visas på skärmen
</div>
<div id="content">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. 
Nam dignissim ullamcorper nulla. Quisque luctus leo eu pede. 
Nulla nisl turpis, nonummy id, feugiat a, egestas ut, arcu. 
Vestibulum adipiscing lacus at eros. In hendrerit. 
Quisque ante ipsum, suscipit at, tristique non, rhoncus nec, sapien.
Nullam convallis, dui sit amet cursus feugiat, tellus ante pulvinar 
urna, ac egestas nisl quam et neque. Integer tempor tortor sed diam. 
Fusce non pede et libero luctus ultricies. Duis diam. 
Sed at tortor nec lectus vehicula volutpat. 
Phasellus non dui at dolor sagittis placerat. 
Ut vehicula, nunc sed viverra aliquet, augue ligula euismod nunc, 
eget fringilla nibh erat in tellus. 
Pellentesque tempus vestibulum eros.
</div>
</body>
</html>

Bra artikel i ämnet: http://www.alistapart.com/articles/goingtoprint/

AndreasCMedlem sedan mars 20011 964 inlägg
#5

Ok, då fattar jag efter att ha läst artikeln. Man har alltså en separat style för hur saker ska se ut på skärmen och en för hur layouten ska styras upp på print. Väldigt smart och proffesionellt.

Då fattar jag principen och det gäller att experimentera lite för att få det rätt..

Av ditt inlägg att dömma så trodde jag att man talade om vad på sidan som skulle skrivas ut genom att lägga in det i divar och det som ligger utanför skickas inte till skrivaren. Därför blev det kortslutning i min järna när jag läste artikeln och märkte att det inte alls var så som jag först trodde. LOL

Tack för hjälpen.

AndreasCMedlem sedan mars 20011 964 inlägg
#6

Man ska kunna skriva DIV.visaejdetta {display: none;} Om jag inte använder <div class="visaejdetta">visa ej detta</div> utan istället använder mig av följande modell:

<table>
<tr>
<td class="visaejdetta">
visa ej detta
</td>
</tr>
</table>

...hur skriver jag då istället för DIV.visaejdetta {display: none;} ?

zcorpanMedlem sedan dec. 20042 245 inlägg
#7

Antingen

td.visaejdetta { display:none; }

eller helt enkelt

.visaejdetta { display:none; }

:)

AndreasCMedlem sedan mars 20011 964 inlägg
#8

Funkar prima :) Tack. Glömde bort, eller snarare, fattade inte att det handlade om helt vanlig css. Tyckte det var jättemärkvärdigt först och något helt nytt som jag inte fattade något av.

Men grejen är nu såhär, i IE ser allt super ut men Mozilla vill skriva ut texten i ett mindre format.

Det ser ut såhär nu.

@media print {
body
{
margin: 0; background: #fff;
}
.bg_image
{
background: #fff;
}
.layout
{
font-family: Times New Roman, Arial; font-size: 14px; color: #000;
}
td.no_print
{
display: none;
}
}

.layout styr ju som synes teckensnitt, storlek och teckenfärg. Men jag fattar inte varför Mozilla skriver ut texten i ett mindre format än IE när texten renderas exakt lika stor på skärmen i de båda.

martinMedlem sedan apr. 2000313 inlägg
#9

Testa gärna att sätta text-storleken i punkter (pt) i stället för pixlar (px) när du skriver ut. Pixlar är en skärmenhet och punkter är för print. Eller testa % eller em.

/ m a r t i n

AndreasCMedlem sedan mars 20011 964 inlägg
#10

Funkar ganska bra, bara det att det skrivs ut olika stort på olika skrivare nu. Ingen stor skillnad men den finns. Ej överhängande.

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)