Newsgroup: it.comp.java
Titolo: stampare da un'applet

Ho bisogno di stampare da un'applet. Ho provato a richiamare una 
libreria nativa che avevo già pronta ma ho problemi di sicurezza, e 
visto che l'applet non dovrà funzionare solo a casa mia, non ha senso 
risolvere questo problema...
Ho visto che esiste la classe PrintJob ma non mi sembra banale ed è 
eccessiva per i miei scopi: devo solo inviare delle stringhe su una 
porta...
Ho scaricato la Java Communications API dal sito Sun: come posso però 
distribuire la libreria in modo che funzioni con Netcape?
Dovrei fare questo lavoro entro fine anno cioè domani, qualcuno può 
aiutarmi?
grazie ciao
maS
-- 
Posted from 199.41.198.42 by way of 
smtp4.libero.it
 [193.70.192.54] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 risolvere questo problema...
Temo non ci sia molto da fare. Se l'applet non è firmata (signed) e non
vengono concessi i relativi diritti non sarà possibile avviare la stampa.
Prova a controllare tu stesso utilizzando nell'applet un codice sulla
falsariga del seguente:
import java.security.* ;
...
SecurityManager sm = System.getSecurityManager();
     if ( sm != null)
     {
        try
        {
          sm.checkPermission(new RuntimePermission("queuePrintJob"));
          getAppletContext().showStatus("queuePrintJob allowed!");
        }
        catch(SecurityException se)
        {
          getAppletContext().showStatus("queuePrintJob NOT allowed!");
        }
      }
Quando fai girare l'applet in un browser (es. IE oppure HotJava) ottieni
sempre "queuePrintJob NOT allowed!", perciò tentando di stampare avrai
sempre problemi di sicurezza.
Tieni conto del fatto che il discorso sulla sicurezza delle applet ed il
modo di ottenere applet sicure (signing) è molto complesso. Se quello che ti
serve è semplicemente stampare due righe, ti consiglierei di generare del
codice HTML relativo a ciò che vuoi stampare e quindi chiedere all'utente di
farlo premendo il pulsante stampa del browser. So che non è proprio quello
che volevi, ma data la deadline incombente...
Marco.
--
Per scrivermi direttamente elimina
__TOGLIMI__ dall'indirizzo e-mail.

 che volevi, ma data la deadline incombente...
Purtroppo non posso adottare questa soluzione perché le stringhe vengono
inviate a stampanti laser che le interpretano e non stampano dei semplici
caratteri. in ogni caso come potrei generare codice HTML da un' applet????
ciao buon ultimo
maS

 caratteri. in ogni caso come potrei generare codice HTML da un' applet????
Allora il discorso è più complicato del previsto. Come fai a sapere di che
stampanti si tratta? Non è che per caso hai accesso alle postazione su cui
deve funzionare l'applet? Perché in quel caso potresti piazzare in ogni
postazione un policy file che autorizzi la stampa. Sinceramente non mi
sembra un lavoro da applet ma piuttosto da applicazione ad hoc. Se per di
più devi inviare alle stampanti delle sequenze speciali...
Riguardo la tua ultima domanda:
1) una applet può generare codice HTML scrivendolo sul server se ne ha la
relativa autorizzazione e poi visualizzare la pagina con showDocument()
2) può usare le API netscape.javascript (che funzionano anche su Explorer)
per interfacciarsi con gli oggetti Javascript della pagina in cui risiede e
generare codice HTML on the fly
3) può caricare, sempre con showDocument(), una pagina passando dei
parametri assieme all'url. La pagina caricata, dotata di apposito codice
javascript,  può fare il parsing dell'url ed in base al valore dei parametri
generare del codice HTML on the fly.
4) si può fare qualche "pasticcetto" utilizzando i cookies, se sono
abilitati
Sono tutti metodi possibili anche se, viste le sequenze speciali che devi
inviare alle stampanti laser, generare del codice HTML non ti serve a
niente. Ripeto, non mi sembra un lavoro da applet.
Buon 2001!


 generare codice HTML on the fly
Come faccio a distribuire l'applet con il package netscape.javascript in
modo che questo funzioni senza che l'utente debba settare qualcosa di
"complicato" (come modificare...il classpath:)?
ciao (finalmente vedo che qualcuno non è andato in montagna per 15
giorni...)
maS

 "complicato" (come modificare...il classpath:)?
Il package contiene semplicemente dei rimandi a funzioni native tramite JNI.
Le funzioni native dovrebbero essere contenute in qualcuna delle DLL
distribuite assieme ai browser (Netscape e IE), quindi non serve settare il
classpath o fare altre cose strane.
Se dovesse servirti, il package netscape.javascript è contenuto, assieme ad
altri, nel file java40.jar distribuito con Netscape 4.51 (forse è presente
anche nelle release successive, ma non sono sicuro.) Se non hai  Netscape
prova a cercare java40.jar tramite 
http://ftpsearch.lycos.com
, è facile che
salti fuori da qualche parte. Per la documentazione del package, cerca
"netscape.javascript" tramite un qualsiasi motore di ricerca.
Buon lavoro!


grazie!
trovata la soluzione momentanea, ho più tempo per trovarne altre..
maS