Ciao a tutti,
devo realizzare una stampa su di una stampante ad aghi in Java ma essendo nuovo alle situazioni di stampa con Java mi trovo un attimo confuso...

I miei problemi sono:
1) Stampando su di un modulo continuo di formato 150mm x98mm come devo fare per far sì che il modulo continuo si posizioni correttamente di stampa in stampa?
2) Dovrei scrivere in grassetto alcune stringhe ed altre no



Il codice che utilizzo è il seguente:

Classe StampaEtichetta che contiene le istruzioni di stampa
codice:
package gestionale;

import java.awt.print.*;
import java.awt.*;
/**
 *
 * @author panthe
 */
public class StampaEtichetta implements Printable{

    public Pesata myPesata;

    public int print(Graphics grap, PageFormat pageFormat, int pageIndex) throws PrinterException
    {
     if(pageIndex > 0)
            return NO_SUCH_PAGE;

     System.out.println("getImageableX == " + pageFormat.getImageableX());
     System.out.println("getImageableY == " + pageFormat.getImageableY());
     System.out.println("getImageableWidth == " + pageFormat.getImageableWidth());
     System.out.println("getImageableHeight == " + pageFormat.getImageableHeight());
     try{
         grap.drawString(myPesata.GetData().toString(), (int)pageFormat.getImageableX()+30, (int)pageFormat.getImageableY()+100);
         grap.drawString(myPesata.GetCodCliente().toString(), (int)pageFormat.getImageableX()+90, (int)pageFormat.getImageableY()+100);
         grap.drawString(myPesata.GetCommessa().toString(), (int)pageFormat.getImageableX()+210, (int)pageFormat.getImageableY()+100);
         grap.drawString(myPesata.GetDisegno().toString(), (int)pageFormat.getImageableX()+30, (int)pageFormat.getImageableY()+120);
         grap.drawString(myPesata.GetMateriale().toString(), (int)pageFormat.getImageableX()+210, (int)pageFormat.getImageableY()+120);
         grap.drawString(myPesata.GetArticolo().toString(), (int)pageFormat.getImageableX()+30, (int)pageFormat.getImageableY()+140);
         grap.drawString(myPesata.GetNumOrdine().toString(), (int)pageFormat.getImageableX()+210, (int)pageFormat.getImageableY()+140);
         grap.drawString(myPesata.GetNetto().toString(), (int)pageFormat.getImageableX()+110, (int)pageFormat.getImageableY()+180);
         grap.drawString(myPesata.GetPesoUnitario().toString(), (int)pageFormat.getImageableX()+220, (int)pageFormat.getImageableY()+180);
         grap.drawString(myPesata.GetTara().toString(), (int)pageFormat.getImageableX()+110, (int)pageFormat.getImageableY()+200);
         grap.drawString(myPesata.GetQuantita().toString(), (int)pageFormat.getImageableX()+220, (int)pageFormat.getImageableY()+200);
     }catch(Exception e){
        System.out.println("Errore nella stampa dell'etichetta - Classe StampaEtichetta - Errore: " + e.toString());
    }

     return PAGE_EXISTS;

    }

}

Classe TestStampaEtichetta che lancia la stampa di un'etichetta per prova
codice:
      PrinterJob pj = PrinterJob.getPrinterJob();
      pj.setJobName("Stampa Etichetta Pesate.");
      StampaEtichetta etichetta = new StampaEtichetta();
      etichetta.myPesata = pesata;
      pj.setPrintable(etichetta);
      pj.print();