Newsgroup: it.comp.java
Titolo: [newbie] Stampare testo da un'applet

Salve a tutti :o)
Grazie ai consigli di alcuni di voi e a messaggi dei forum del sito della
Sun sono riuscito a fare funzionare la mia prima classe java la quale,
ricevuto un file "di testo" (dai caratteri abbastanza astrusi, per la
verità... :o) da un programma cgi, fa comparire la finestra di dialogo
delle
stampanti (getPrinterJob) e manda alla stampante che l'utente sceglie il
file di testo *così com'è*, senza altri caratteri di alcun genere (la
stampante è un'etichettatrice).
In pratica scelta la stampante se decido, nelle impostazioni di stampa, di
stampare su file riottengo il file di partenza cioè esattamente quello che
ho letto...
Fatto questo primo (e per me) fondamentale passo ora mi occorre fare tutto
questo con un applet: ho definito i metodi init, start, paint, stop e
destroy, recupero con getParameter il valore dell'url da passare al
programma CGI (il quale mi restituisce il file/il testo da stampare) ed in
sostanza seguo questi passi:
nel metodo (nella funzione) start eseguo i seguenti passi
  valorizzo cgiurl
  PrinterJob pj = PrinterJob.getPrinterJob();
  pj.printDialog();
  PrintService service = pj.getPrintService();
  DocPrintJob docprintjob = service.createPrintJob();
  is = cgiurl.openStream();
Fin qui tutto apparentemente bene; quando poi provo a fare
  try...
    Doc doc = new SimpleDoc(is, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
    docprintjob.print(doc, null);
    ...
  catch...
allora sia con l'appletviewer che eseguendo la pagina html nella maniera in
cui dovrò effettivamente usarla ottengo un errore di puntatore nullo quando
provo a fare "print"...
Avendo pensato che si trattasse del "null" *che prima* (nella classe che
avevo realizzato) *andava bene* allora ho
pensato di definire degli attributi da passare al metodo print:
  PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
  aset.add(new JobName("Stampa Testo", null));
  aset.add(new Copies(1));
così da poter fare:
  try...
    Doc doc = new SimpleDoc(is, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
    docprintjob.print(doc, aset);
  ...
  catch...
ma, a questo punto, il programma va in loop: vanno in stampa dei documenti
vuoti che infatti sono visibili, solo per poco, nella finestra della
stampante; sono file vuoti in quanto spariscono immediatamente ed alla
stampante non arriva niente e anzi se provo a stampare su file il file
risultante è vuoto :o(
L'unica maniera per interrompere il loop è *abbattere* col Task Manager il
processo di nome "java"...
Per il programma cgi mi collego allo stesso server dal quale scarico
l'applet e la pagina nella quale essa sta; prima di andare in stampa il
file
(vuoto) mi compaiono le finestre che chiedono di autorizzare la stampa...
c'è qualche altra cosa relativa alla sicurezza che, per mia ignoranza,
trascuro?!
Cosa sbaglio?
Vi ringrazio per l'attenzione
    Stefano
--
"Niuna impresa, per minima che sia,
 può avere cominciamento e fine senza queste tre cose:
 e cioè senza sapere, senza potere, senza con amor volere"
                [Anonimo fiorentino, XIV sec.]
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Cosa sbaglio?
Non so aiutarti... ma perdona una domanda pensi di farlo con un applet sul
web?... Pensi di poterlo fare senza firmarla?... Mi risulata che senza firme
non si stampa da applet... o sbaglio?
Ciao
Oxy

 wrote in message
news:v2aB9.23$Ka3...@twister1.libero.it...


 Oxy
Buon fine settimana
    Stefano

 Fabrizio Marini
Grazie mille!
    Stefano
p.s.: ho scaricato una bella parte della documentazione dal sito della Sun
ma quando la roba è anche troppa *all'inizio* ci si perde... del resto è
così anche con i manuali dell'IBM.
