Newsgroup: it.comp.java
Titolo: stampa output di una servlet

Ciao a tutti,
ho una servlet che ritorna al browser un documento pdf.
Il browser mi apre correttamente l'Acrobat e mi mostra tale documento.  A
questo punto posso stampare il documento.
Non so se è una stupidaggine ma io vorrei fare in modo che il documento
generato dalla servlet vada direttamente in stampa sul client senza che il
browser mi apra acrobat e l'utente sia costretto a selezionare l'opzione di
stampa.
Grazie,
    Ciao

 Non so se  una stupidaggine ma io vorrei fare in modo che il documento
Punto primo: non sai se l'utente ha o no una stampante, e cercare di
stampare senza stampante=errore. Secondo punto: il client potrebbe
essere una cosa tipo Opera, Mozilla et simili, che *non* aprono
acrobat di default. Punto terzo: non puoi obbligare il client a stampare
qualche cosa senza essere li'.
In altre parole: lascia perdere.
Davide


Uhm... come direbbe Ugo, e' una buona risposta ma "un po' troppo categorica" :-)
Ciao,
    Bruno.
|
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://bbruno.fasturl.it
|
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola
|

stampa.
Uhm.... se la pagina fosse html saprei come fare, ma se e' un PDF... non saprei proprio! 
Forse con IE un truschino lo si potrebbe abbozzare utilizzando le frame, se vuoi possiamo
provarci insieme, ma con Netscape proprio non so! Fammi sapere se vuoi provarci.
Aspettiamo altri suggerimenti!


 automaticamente la dialog di stampa predefinita.
come ?
Davide



Ne parlai gia' tempo fa, ma a nessuno sembro' interessare.
Comunque, il succo sta nell'inserire nella pagina HTML che generi una funzione di stampa
(diversa per IE e per Netscape) che viene chiamata all'onload della pagina.
In Netscape:
<SCRIPT> 
function stampa() 
{
	window.print()
}
</SCRIPT>"
In Internet Explorer:
<SCRIPT>
function stampa()
{
	window.focus();
	setTimeout("stampa2()", 0);
}
function stampa2()
{
	execScript("on error resume next: webbrowser1.ExecWB 6, 1","VBScript\");
}
</SCRIPT>
<object id=webbrowser1 
	width=0 
	height=0
	classid="clsid:8856f961-340a-11d0-a96b-00c04fd705a2">
</object>"
Mi rendo conto che in IE non e' esattamente semplice, ma se tu ti intendi un po' di COM
capisci chiaramente come funziona il truschino. Ho omesso anche qualche altra cosetta che
in certi casi e' utile fare (tipo, sotto IE, dare il fuoco alla frame giusta se ce l'hai
:-D) e ovviamente, NS4.5+ e IE4.01+ :-D
Come diceva Aiazzone (mi sembra) "Provare per credere"!


 chiamata all'onload della pagina.
Ma se lui redireziona il browser su un documento PDF non ci sono
script che vengono eseguiti/possono venire eseguiti.
Dovrebbe essere il PDF stesso ad "autostamparsi".
Davide

 wrote in message
news:9sdsrd$12qpq2$1...@ID-18487.news.dfncis.de...


 wrote in message
news:9sdvpq$12vclt$2...@ID-18487.news.dfncis.de...



Comunque, proseguendo, la scappatoia forse c'e', ma se c'e' (e lo sto verificando ora)
funzionerebbe solo con IE. Verifico e poi vi dico.


Perchè farsi del male :)???
Le Web Application sono risorse lato server con presentazione delegata a
jsp/servlets e documenti presentabili in un browser.
Si parla di presentazione che deve girare in un browser: secondo me la via +
corretta è delegare la funzionalità di stampa a questo "container". In fondo
come qualcuno ha fatto già notare non siamo certi delle funzionalità che
ogni singolo client fornisce. Ok sui requisiti dell'applicazione, ma se un
giorno n+1 dumb client si connette e non ha una stampante, dobbiamo stare al
telefono un ora per farlo capire?
Non nascondo che i consigli di Bruno li ho resi persistenti :))), la pazzia
dei clienti rasenta il massimo concepibile nell'universo.
Giuseppe
PS che dio ci Salvi :))

Okay, ho fatto qualche progresso: sfortunatamente non funziona con il PDF! (sic!)
In pratica, usando due frame, si riesce a controllare "esternamente" la stampa, anche
senza usare il controllo COM di IE, ma comunque IE si rifiuta di stampare un frame che
contenga un PDF quando invece stampa tranquillamente un documento intero. Questo si puo'
proprio verificare "da utente". In particolare, se avete una pagina formata da due frame
nelle quali la prima contenga HTML e la seconda contenga PDF, beh, la seconda non potete
stamparla usando la funzione di stampa del browser (ma proprio in nessun modo!) e potete
farlo solo usando l'iconcina del PDF Reader mentre invece se avete caricato con il browser
un documento PDF potere stamparlo sia con l'icona del reader sia con la funzione di stampa
del browser! Peccato! Se comunque a qualcuno puo' servire, ecco una versione della stampa
con controllo "esterno" in HTML:
main.html
---------
Il documento principalem, formato da due frame: la seconda frame e' nascosta, e in essa
verra' caricato il documento da stampare.
<HTML>
<FRAMESET rows="*,0"> 
<frame name="central" src="central.html" scrolling=no border=no>
<frame name="hidden" src="empty.html" scrolling=no border=no> 
</FRAMESET>
</HTML> 
empty.html
---------
Un semplice file vuoto :-)
<HTML>
</HTML>
central.html
-----------
Il file HTML che contiene il bottone di stampa.
<HTML>
<SCRIPT> 
function stampa() 
{
	//parent.frames[1].location.href="UML_Use_Cases.pdf"
	parent.frames[1].location.href="manualprint.html"
	setTimeout("stampa2()", 1000);
}
function stampa2() 
{
	parent.frames[1].focus()
	parent.frames[1].print()
}
</SCRIPT> 
<BODY>
<H1>Questa e' la pagina centrale!</H1>
<INPUT TYPE="BUTTON" value="Stampa!" onclick=stampa()>
</BODY>
</HTML>
 
manualprint.html
---------------
Il file HTML da stampare
 
<HTML>
<BODY>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
<H2>Questa e' la pagina che sara' stampata!</H2>
</BODY>
</HTML>
Questo e' quello che ho fatto finora, e questo accrocchietto funziona, ma sfortunatamente
non con il PDF. Se puo' interessare, funziona con RTF dando "fuoco" alla frame ospite
prima di visualizzare il documento:
<SCRIPT> 
function stampa() 
{
	//parent.frames[1].location.href="UML_Use_Cases.pdf"
	parent.frames[1].location.href="manualprint.html"
	parent.frames[1].focus()
	setTimeout("stampa2()", 1000);
}
function stampa2() 
{
	//parent.frames[1].focus()  niente focus qui!
	parent.frames[1].print()
}
</SCRIPT> 
Comunque, ora mi fermo. Se avete qualche contributo, beh, fatecelo sapere!
Ciao,
    Bruno.


|



In realta' un activeX disponibile subito ce l'hai, e' molto potente, e puoi utilizzarlo
senza alcuna firma: e' il browser stesso!
Con questo codice:
<object id=webbrowser1 
    	width=0 
    	height=0
    	classid="clsid:8856f961-340a-11d0-a96b-00c04fd705a2">
</object>
inserisci nella tua paguna il controllo omonimo di IE, cui assegni il nome "webbrowser1".
Successivamente lo utilizzi in questo modo:
	execScript("on error resume next: webbrowser1.ExecWB 6, 1","VBScript");
Questo richiama il servizio ExecWB sull'oggeto webbrowser1 (IE) passandogli i parametri 6
e 1 (in questo caso esegue una stampa).
Ma quali chiamate supporta l'oggetto? Beh, onestamente, non ho voglia di spulciare
ulteriormente MSDN, perdonatemi! Pero' se qualcuno ne avesse voglia... eh, che ne dite?
Lascio la palla, speriamo che qualcuno faccia goal! (e ci dica come ha fatto!!!)
Ciao,
    Bruno.


|


Ah, una errata corrige! Se volete stampare RTF dovete anche passare dalla print() eseguita
mediante il controllo di IE, quindi la vostra pagina central.html diventa la seguente:
<HTML>
<SCRIPT> 
function stampa() 
{
	parent.frames[1].location.href="sample.rtf"
	parent.frames[1].focus()
	setTimeout("stampa2()", 1000);
}
function stampa2() 
{
	execScript("on error resume next: webbrowser1.ExecWB 6, 1","VBScript");
}
</SCRIPT> 
<object id=webbrowser1 
    	width=0 
    	height=0
    	classid="clsid:8856f961-340a-11d0-a96b-00c04fd705a2">
</object>
<BODY>
<H1>Questa e' la pagina centrale!</H1>
<INPUT TYPE="BUTTON" value="Stampa!" onclick=stampa()>
</BODY>
</HTML>
 
Ciao,
    Bruno.


 >Lo so che č una vaccata ma avete mai sentito niente del genere?


 wrote in message
news:3beaa1e6...@news.inet.it...



Ya! Ad esempio a me interessa assai, sto lavorando ad un progetto dove e' possibile che si
usino delle tecniche simili :-D
Ciao,
    Bruno.



Te pareva che se c'era una cosa utile ce la facevano usare :-D
Chissa' cosa vorrando vendere al suo posto, un'altra cosa che funziona peggio ma in
compenso fa qualcosa in meno ;-)
Ciao,
    Bruno.


Massimo Zanette wrote:

ciao, mi sono letto le varie risposte e sono un po' in ritardo ma se ti 
è utile ( e magari lo sapevi già) sappi che se 'riesci' (dalla pagina!?) 
a lanciare l'acrobat con il parametro -n (mi pare) e il nome del file 
pdf ti apre direttamente la finestra di stampa senza farti vedere 
l'anteprima.