Foros del Web » Programación para mayores de 30 ;) » Java »

Calcular ancho de linea máximo para PrinterJob

Estas en el tema de Calcular ancho de linea máximo para PrinterJob en el foro de Java en Foros del Web. Hola. Estoy desarrollando un programa con el que tengo que imprimir unos albaranes. Es la primera vez que me toca usar impresoras, pero ya he ...
  #1 (permalink)  
Antiguo 10/09/2013, 10:02
 
Fecha de Ingreso: agosto-2011
Mensajes: 58
Antigüedad: 12 años, 8 meses
Puntos: 3
Calcular ancho de linea máximo para PrinterJob

Hola.

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
  1. import java.awt.Graphics;
  2. import java.awt.print.PageFormat;
  3. import java.awt.print.Pageable;
  4. import java.awt.print.Printable;
  5. import java.awt.print.PrinterException;
  6. import java.awt.print.PrinterJob;
  7.  
  8. public class Impresion implements Printable, Pageable {
  9.    
  10.     static int NUMPAGES = 2;
  11.     protected PrinterJob pj;
  12.    
  13.     public Impresion () {
  14.         pj = PrinterJob.getPrinterJob();
  15.         pj.setPageable( this );
  16.         if ( pj.printDialog() ) {
  17.             try {
  18.                 pj.print();
  19.             } catch (PrinterException e) {
  20.                 e.printStackTrace();
  21.             }
  22.         }
  23.     }
  24.  
  25.     @Override
  26.     public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
  27.         if ( pageIndex >= NUMPAGES ) {
  28.             return NO_SUCH_PAGE;
  29.         }
  30.         else {
  31.             graphics.translate( (int)pageFormat.getImageableX(), (int)pageFormat.getImageableY() );
  32.             graphics.drawString("Hello World: page "+Integer.toString(pageIndex), 100, 100 );
  33.             return PAGE_EXISTS;
  34.         }
  35.     }
  36.  
  37.     @Override
  38.     public int getNumberOfPages() {
  39.         return NUMPAGES;
  40.     }
  41.  
  42.     @Override
  43.     public PageFormat getPageFormat(int arg0) throws IndexOutOfBoundsException {
  44.         return pj.defaultPage();
  45.     }
  46.  
  47.     @Override
  48.     public Printable getPrintable(int arg0) throws IndexOutOfBoundsException {
  49.         return this;
  50.     }
  51. }

Etiquetas: ancho, calcular, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:11.