ciao a tutti... ho questo codice da modificare un po' e non ci riesco bene...
Funziona, ma se inserisco una pagina HTML da stampare non la stampa; ho provato a cambiare i DocFlavor ma mi dice che non trova una stampante che li suppoti... che devo fare per poter stampare una pagina html?codice:package prservice; import java.io.*; import javax.print.*; import javax.print.attribute.*; import javax.print.attribute.standard.*; public class PrService{ public static void main(String args[]){ DocFlavor docFlv = DocFlavor.INPUT_STREAM.GIF; /** * Crea e valorizza il set di attributi del documento */ PrintRequestAttributeSet attrSet = new HashPrintRequestAttributeSet(); attrSet.add(MediaSizeName.ISO_A4); attrSet.add(OrientationRequested.LANDSCAPE); attrSet.add(new Copies(1)); /** * Cerca i print services in grado di stampare secondo gli attributi impostati * utilizzando il metodo lookUpPrintServices */ PrintService[] prServ = PrintServiceLookup.lookupPrintServices(docFlv,attrSet); if (prServ.length > 0){ // /** * Crea l'oggetto DocPrintJob */ int num=0; DocPrintJob prJ = prServ[num].createPrintJob(); /** * Crea il documento da stampare impostando il nome del file da stampare * ed il formato (DocFlavor) di stampa */ Doc doc = new InputStreamDoc("prova.gif", docFlv); /** * Stampa il DocPrintJob */ try{ prJ.print(doc, attrSet); } catch (PrintException ex){ System.err.println(ex); } }else{ System.err.println("Non ci sono stampanti che supportano le caratteristiche del documento"); } } } class InputStreamDoc implements Doc { private String fileN; private DocFlavor dFlv; private InputStream iStr; /** * Imposta il nome ed il formato (DocFlavor) del documento da stampare */ public InputStreamDoc(String fName, DocFlavor flv){ fileN = fName; dFlv = flv; } /** * Restituisce un oggetto DocFlavor contenente il formato del documento di stampa */ public DocFlavor getDocFlavor(){ return dFlv; } public DocAttributeSet getAttributes(){ return null; } /** * Richiama il metodo getStreamForBytes() e * restituisce un oggetto InputStream contenente i dati di stampa */ public Object getPrintData() throws IOException{ return getStreamForBytes(); } public Reader getReaderForText() throws UnsupportedEncodingException,IOException{ return null; } /** * Restituisce un oggetto InputStream contenente i dati di stampa */ public InputStream getStreamForBytes() throws IOException{ synchronized(this){ if (iStr == null){ iStr = new FileInputStream(fileN); } return iStr; } } }

Rispondi quotando