Salve!
La mia situazione è questa:
riesco a stampare un'immagine precedentemente salvata inviandola direttamente alla stampante!Il tutto funziona!
C'è solo un problema...io ho una classe ProvaBarCode che implementa Printable, riporto il codice completo:
codice:
    public ProvaBarCode() {
        initComponents();
       
            try {
                img = jbcode.createBarcode(code);
            } catch (InvalidAtributeException ex) {
                ex.printStackTrace();
            }
            
            saveToJPEG(img, "EAN13.jpg");
    }
     
    public void printBarCode() throws FileNotFoundException{
      /* Construct the print request specification.
    		* The print data is a Printable object.
    		* the request additonally specifies a job name, 2 copies, and
    		* landscape orientation of the media.
    		*/
   		DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG;
                
    		PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    		aset.add(OrientationRequested.PORTRAIT);
//                aset.add();
                aset.add(MediaSize.findMedia(40,30,Size2DSyntax.MM));
    		aset.add(new Copies(1));
    		aset.add(new JobName("My job", null));  
 
    		/* locate a print service that can handle the request */
    		PrintService[] services =
    			PrintServiceLookup.lookupPrintServices(flavor, aset);
 
    		if (services.length > 0) {
    			System.out.println("selected printer " + services[0].getName());
 
    			/* create a print job for the chosen service */
    			DocPrintJob pj = services[0].createPrintJob();
 
    			try {
    				/* 
    				* Create a Doc object to hold the print data.
    				*/
                                FileInputStream fin = new FileInputStream("EAN13.jpg");
    				Doc doc = new SimpleDoc(fin, flavor, null);
 
    				/* print the doc as specified */
    				pj.print(doc, aset);
 
    				/*
    				* Do not explicitly call System.exit() when print returns.
    				* Printing can be asynchronous so may be executing in a
    				* separate thread.
    				* If you want to explicitly exit the VM, use a print job 
    				* listener to be notified when it is safe to do so.
    				*/
 
    			} catch (PrintException e) { 
    				System.err.println(e);
    			}
    		}
    }
        PrinterJob job = PrinterJob.getPrinterJob();
        PageFormat format = job.defaultPage();
        	public int print(Graphics g,PageFormat pf,int pageIndex) {
 
		if (pageIndex == 0) {
    			Graphics2D g2d= (Graphics2D)g;
                        
                        pf.getPaper();
    			g2d.translate(pf.getImageableX(), pf.getImageableY()); 
//    			g2d.setColor(Color.black);
    			g2d.drawString("example string", 5, 20);
//    			g2d.fillRect(0, 0, 200, 200);
    			return Printable.PAGE_EXISTS;							
    		} else {
    			return Printable.NO_SUCH_PAGE;
    		}
	}
Quando richiamo il metodo PrintBarCode imposto il DocFlavor come INPUT_STREAM.JPG pero la stampa non passa per il metodo print della mia classe ProvaBarCode, e quindi invia direttamente la stampa alla stampante.
Io oltre all'immagine vorrei inserire anche del testo, ma non entrando nel metodo print implementato in ProvaBarCode non so come fare.

La cosa strana e che se imposto il DocFlover come SERVICE_FORMATTED.PRINTABLE e non gli passo l'imput_stream dell'immagine il metodo print da me implementato viene eseguito...come mai???
Grazie per l'attenzione!