ciao a tutti... ho questo codice da modificare un po' e non ci riesco bene...
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;
}
}
}
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?