Newsgroup: it.comp.lang.javascript
Titolo: [OT??] Html, Js & Stampa

Ciao a tutti!!
Ripropongo un problema di cui si e' gia' abbondantemente scritto e discusso,
ma ci terrei comunque ad avere un vostro parere.
Devo realizzare uno scriptino javascript che operi in questo modo: data
un'immagine la deve ingrandire/rimpicciolire in modo da adattarla al formato
A4 per poi essere stampata. Premetto che posso permettermi di creare uno
script che giri solo su IE.
Io ho ragionato in questo modo: prese le dimensioni di un foglio A4, chiedo
all'utente di inserire la risoluzione (dpi) della stampante, calcolo le
dimensioni in pixel del foglio (tenendo conto anche dei margini) e quindi
assegno alle proprieta' width e height dell'immagine in questione i valori
cosi' ottenuti. Quindi ho inserito un pulsante Stampa che stampa il
contenuto del frame contenente l'immagine ingrandita/rimpicciolita.
Problemi:
1- l'immagine stampata risulta essere circa 4 volte pie' grande d un foglio
A4.
2- cliccando sul pulsante *Stampa*, la stampa non parte, ma compare un
messaggio di windows che dice *Memoria insufficiente per completare
l'operazione*, mentre se uso il comando File->Stampa... tutto procede.
Potete aiutarmi?
Vi posto il codice incriminato:
index.htm -> contiene la definizione del frameset
*********************************
<html>
<head>
<title>Prova di zoom...</title>
</head>
<FRAMESET ROWS="80,*" FRAMEBORDER="0" BORDER="0">
 <FRAME NAME="sopra" SRC="top.htm" MARGINHEIGHT=0 MARGINWIDTH=0 SCROLLING=NO
NORESIZE>
 <FRAME NAME="sotto" SRC="image.htm" MARGINHEIGHT=0 MARGINWIDTH=0
SCROLLING=AUTO NORESIZE>
</FRAMESET>
*********************************
image.htm -> contiene l'immagine da ingrandire/rimpicciolire (ho usato come
test il logo di 
jsdir.com
)
*********************************
<html>
<head>
</head>
<body bgcolor="#FFFFFF" onload="top.sopra.dimensioni()">
<img src="logo.gif">
</body>
</html>
*********************************
top.htm -> contiene lo script e l'interfaccia
*********************************
<html>
<head>
<style>
body,td {
 font-family: Verdana;
 font-size: 10px;
 }
</style>
<script language="JavaScript">
var altezza   = "";
var larghezza = "";
var altezzaA4   = 29.7;
var larghezzaA4 = 21.0;
var marginealtezzaA4   = 3.2;
var marginelarghezzaA4 = 1.5;
file://Chiamo questa funzione quando l'immagine nel frame sottostante e'
completamente caricata
function dimensioni()
{
altezza   = parent.sotto.document.images[0].height;
larghezza = parent.sotto.document.images[0].width;
}
function cambiazoom()
{
var newzoom        =
document.main.zoom.options[document.main.zoom.selectedIndex].value;
var newrisoluzione = document.main.risoluzione.value;
if (altezza == "" || larghezza == "")
 {
 alert("Attendere completamento del caricamento dell'immagine.");
 document.main.zoom.selectedIndex = 2;
 return;
 }
if (newzoom != "A4")
 {
 parent.sotto.document.images[0].height = altezza * newzoom;
 parent.sotto.document.images[0].width  = larghezza * newzoom;
 }
else
 {
 if (document.main.risoluzione.value == "")
  {
  alert("Inserire risoluzione (dpi) della stampante.");
  document.main.zoom.selectedIndex = 2;
  return;
  }
 var altezzasenzamargini = altezzaA4 - 2 * marginealtezzaA4;
 var larghezzasenzamargini = larghezzaA4 - 2 * marginelarghezzaA4;
 altezzapixelA4   = Math.round(altezzasenzamargini / 2.54 * newrisoluzione /
4 );
 larghezzapixelA4 = Math.round(larghezzasenzamargini / 2.54 * newrisoluzione
/ 4);
 alert("Dimensioni Immagine: " + larghezzapixelA4 + " x " + altezzapixelA4);
 parent.sotto.document.images[0].height = altezzapixelA4;
 parent.sotto.document.images[0].width  = larghezzapixelA4;
 }
}
function cambiapagina()
{
}
function stampa()
{
if (document.main.risoluzione.value == "")
 {
 alert("Inserire risoluzione (dpi) della stampante.");
 return;
 }
parent.sotto.print();
}
</script>
</head>
<body bgcolor="#449944" text="#FFFFFF">
<form name="main">
<table width="600" border="0" cellspacing="8">
<tr>
 <td width="20%" align="right">Pagina:</td>
 <td width="30%">
  <select name="pagina" onChange="cambiapagina()">
   <option value="1" selected>Pagina 1</option>
   <option value="2">Pagina 2</option>
  </select>
 </td>
 <td width="20%" align="right">Zoom:</td>
 <td width="30%">
  <select name="zoom" onChange="cambiazoom()">
   <option value="0.25">25%</option>
   <option value="0.5">50%</option>
   <option value="1" selected>100%</option>
   <option value="2">200%</option>
   <option value="4">400%</option>
   <option value="A4">A4</option>
  </select>
 </td>
</tr>
<tr>
 <td width="20%" align="right">Risoluzione:</td>
 <td width="30%">
  <input type="text" name="risoluzione" size="4" maxlength="4">
 <td colspan="2" align="center">
  <input type="button" value="Stampa" onClick="stampa()">
 </td>
</tr>
</table>
</form>
</body>
</html>
*********************************
Grazie 1000!
A presto.
Kalle

Help, please.... :-)
--
A presto.
Kalle