Questo è quello che ho scritto fin ora
codice:
public class PrinterTest {
//    public static void main(String[] args) {
//    PrintRequestAttributeSet attr=new HashPrintRequestAttributeSet();
//            attr.add(OrientationRequested.LANDSCAPE);
  


    public void PrintLabel (double dimx, double dimy,String[] m1p, Vector m2p){
       
        PrinterJob pj = PrinterJob.getPrinterJob();
//        pj.pageDialog(attr);
        if (pj.printDialog()) {
            PageFormat pf = pj.defaultPage();
            Paper paper = pf.getPaper();    
//            double width = fromCMToPPI(3);
//            double height = fromCMToPPI(8.8);    
            double width = fromCMToPPI(dimx);
            double height = fromCMToPPI(dimy);    
            paper.setSize(width, height);
            paper.setImageableArea(
                            fromCMToPPI(0.25), 
                            fromCMToPPI(0.25), 
                            width - fromCMToPPI(0.35), 
                            height - fromCMToPPI(0.35));                
            System.out.println("Before- " + dump(paper));    
            pf.setOrientation(PageFormat.PORTRAIT);
//            pf.setOrientation(PageFormat.LANDSCAPE);
            pf.setPaper(paper);    
            System.out.println("After- " + dump(paper));
            System.out.println("After- " + dump(pf));                
            dump(pf);    
            PageFormat validatePage = pj.validatePage(pf);
            System.out.println("Valid- " + dump(validatePage));                
            //Book book = new Book();
            //book.append(new MyPrintable(), pf);
            //pj.setPageable(book);    
            pj.setPrintable(new MyPrintable(m1p,m2p), pf);
            try {
                pj.print();
            } catch (PrinterException ex) {
                ex.printStackTrace();
            }    
        }    
    }    
    
    protected static double fromCMToPPI(double cm) {            
        return toPPI(cm * 0.393700787);            
    }

    protected static double toPPI(double inch) {            
        return inch * 72d;            
    }

    protected static String dump(Paper paper) {            
        StringBuilder sb = new StringBuilder(64);
        sb.append(paper.getWidth()).append("x").append(paper.getHeight())
           .append("/").append(paper.getImageableX()).append("x").
           append(paper.getImageableY()).append(" - ").append(paper
       .getImageableWidth()).append("x").append(paper.getImageableHeight());            
        return sb.toString();            
    }

    protected static String dump(PageFormat pf) {    
        Paper paper = pf.getPaper(); 
        return dump(paper);    
    }

    public static class MyPrintable implements Printable {
        
        private String[] m1;    
        private Vector m2;

        private MyPrintable(String[] m1p, Vector m2p) {
            m1 = m1p;
            m2 = m2p;
        }
 
        @Override
        public int print(Graphics graphics, PageFormat pageFormat, 
            int pageIndex) throws PrinterException {    
            System.out.println(pageIndex);                
            int result = NO_SUCH_PAGE;    
            if (pageIndex < 1) {                    
                Graphics2D g2d = (Graphics2D) graphics;                    
                System.out.println("[Print] " + dump(pageFormat));                    
                double width = pageFormat.getImageableWidth();
                double height = pageFormat.getImageableHeight();    
                g2d.translate((int) pageFormat.getImageableX(), (int) pageFormat.getImageableY());                    
                g2d.draw(new Rectangle2D.Double(1, 1, width - 1, height - 1)); 
                FontMetrics fm = g2d.getFontMetrics();
                //g2d.drawString("0x0", 0, fm.getAscent());
                
                StringBuilder sb = new StringBuilder();
                sb.append("<html>");
                sb.append("<body>");
                sb.append("<table style=\"border: 1px solid black; border-collapse: collapse;\">");
                sb.append("<tr>");
                sb.append("<th style=\"border: 1px solid black;\">Tipo Analisi: </th>");
                sb.append("<td>Tipo Test</td>");
                sb.append("</tr>");
                sb.append("</table>");
                sb.append("</body>");
                sb.append("</html>");

               try
                {
                    OutputStream file = new FileOutputStream(new File("./temp/label.pdf"));
                    Document document = new Document();
                    PdfWriter writer = PdfWriter.getInstance(document, file);
                    document.open();
                    InputStream is = new ByteArrayInputStream(sb.toString().getBytes());
                    XMLWorkerHelper.getInstance().parseXHtml(writer, document, is);
                    
                    
                    
                    
                    document.close();
                    file.close();
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
                
                //g2d.drawString(sb.toString(), 0, fm.getAscent());
                
                
                

                result = PAGE_EXISTS;    
            }    
            return result;    
        }
    }
    
    
}
praticamente cerco un modo per mandare in stampa quel pdf generato con il PageFormat configurato sopra