Questo è quello che ho scritto fin ora
praticamente cerco un modo per mandare in stampa quel pdf generato con il PageFormat configurato sopracodice: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; } } }

Rispondi quotando