Estoy desarrollando un programa con el que tengo que imprimir unos albaranes. Es la primera vez que me toca usar impresoras, pero ya he conseguido mandar imprimir mostrando el diálogo del sistema, así como imprimir distintas páginas (cosa que necesitaba obligatoriamente)
No obstante, no he encontrado el cómo calcular el ancho que va a ocupar un texto (uso Graphics.putString), por lo que no sé cómo conseguir cortarlo por el lugar adecuado y que salte a la siguiente linea. Para esto no descarto usar una fuente monospace, si es que se puede saber el ancho de los caracteres.
También tengo que calcular que salte de página si el contenido tiene demasiada altura, pero he visto cómo conseguirlo con el alto de linea.
Pego el código de la prueba que he hecho hasta ahora para que veáis como lo he ido haciendo:
Código Java:
Ver original
import java.awt.Graphics; import java.awt.print.PageFormat; import java.awt.print.Pageable; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; static int NUMPAGES = 2; public Impresion () { pj.setPageable( this ); if ( pj.printDialog() ) { try { pj.print(); e.printStackTrace(); } } } @Override if ( pageIndex >= NUMPAGES ) { return NO_SUCH_PAGE; } else { graphics.translate( (int)pageFormat.getImageableX(), (int)pageFormat.getImageableY() ); return PAGE_EXISTS; } } @Override public int getNumberOfPages() { return NUMPAGES; } @Override return pj.defaultPage(); } @Override return this; } }