Impresión de varias páginas con Book
Publicado por Jucagovi (2 intervenciones) el 28/01/2015 16:25:11
Hola a todos!
Estoy intentando imprimir varias etiquetas de una sola vez. La idea es crear una instancia de la clase Book, añadir todas las etiquetas (una por página) e imprimir despues el resultado. A priori fácil. El problema es que la impresión resultante es un documento en blanco (si no uso la clase Book e imprimo las etiquetas una a una funciona sin problemas):
Por un lado la clase de las etiquetas:
public class CEtiqueta implements Printable {
String val_pre;
String bar_cod;
String nom_art;
int veces;
//Constructor para pasar las variables
public CEtiqueta(String a, String b, String c, int d){
val_pre = a;
nom_art = b;
bar_cod = c;
veces = d; //numero de etiquetas
}
public int print(Graphics g, PageFormat pf, int pageIndex) {
if (pageIndex < veces) {
//Genero el código de barras
JBarcodeBean barcode;
barcode = new JBarcodeBean();
barcode.setCodeType(new Interleaved25());
barcode.setCode(bar_cod);
barcode.setCheckDigit(true);
BufferedImage codigo = barcode.draw(new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB));
//Genero la etiqueta
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Serif", Font.PLAIN, 11));
g2.setPaint(Color.black);
g2.drawString(nom_art, 10, 10);
g2.drawString(val_pre, 50, 20);
g2.drawImage(codigo, 10, 50, barcode);
return PAGE_EXISTS;
} else {
return NO_SUCH_PAGE;
}
}
Por otro lado imprimo las etiquetas:
PrinterJob pj = PrinterJob.getPrinterJob();
Book paginas = new Book();
//inserto primera etiqueta
paginas.append( new CEtiqueta("Feo", "linea 1", "254125487", 1), pj.getPageFormat(null) );
// inserto la segunda etiqueta
paginas.append( new CEtiqueta("Feo2", "linea 2", "254125488", 1), pj.getPageFormat(null) );
//asigno Book a PrinterJob
pj.setPageable(paginas);
//finalmente imprimo solicitando la impresora
if ( pj.printDialog() ){
try {
pj.print();
} catch (PrinterException e) {
System.out.println(e);
}
}
Si no utilizo la clase Book me imprime la o las etiquetas sin problema, pero tal y como está el código, me imprime una hoja en blanco.
¿Alguna idea?
Mil gracias!.
Estoy intentando imprimir varias etiquetas de una sola vez. La idea es crear una instancia de la clase Book, añadir todas las etiquetas (una por página) e imprimir despues el resultado. A priori fácil. El problema es que la impresión resultante es un documento en blanco (si no uso la clase Book e imprimo las etiquetas una a una funciona sin problemas):
Por un lado la clase de las etiquetas:
public class CEtiqueta implements Printable {
String val_pre;
String bar_cod;
String nom_art;
int veces;
//Constructor para pasar las variables
public CEtiqueta(String a, String b, String c, int d){
val_pre = a;
nom_art = b;
bar_cod = c;
veces = d; //numero de etiquetas
}
public int print(Graphics g, PageFormat pf, int pageIndex) {
if (pageIndex < veces) {
//Genero el código de barras
JBarcodeBean barcode;
barcode = new JBarcodeBean();
barcode.setCodeType(new Interleaved25());
barcode.setCode(bar_cod);
barcode.setCheckDigit(true);
BufferedImage codigo = barcode.draw(new BufferedImage(100, 20, BufferedImage.TYPE_INT_RGB));
//Genero la etiqueta
Graphics2D g2 = (Graphics2D) g;
g2.setFont(new Font("Serif", Font.PLAIN, 11));
g2.setPaint(Color.black);
g2.drawString(nom_art, 10, 10);
g2.drawString(val_pre, 50, 20);
g2.drawImage(codigo, 10, 50, barcode);
return PAGE_EXISTS;
} else {
return NO_SUCH_PAGE;
}
}
Por otro lado imprimo las etiquetas:
PrinterJob pj = PrinterJob.getPrinterJob();
Book paginas = new Book();
//inserto primera etiqueta
paginas.append( new CEtiqueta("Feo", "linea 1", "254125487", 1), pj.getPageFormat(null) );
// inserto la segunda etiqueta
paginas.append( new CEtiqueta("Feo2", "linea 2", "254125488", 1), pj.getPageFormat(null) );
//asigno Book a PrinterJob
pj.setPageable(paginas);
//finalmente imprimo solicitando la impresora
if ( pj.printDialog() ){
try {
pj.print();
} catch (PrinterException e) {
System.out.println(e);
}
}
Si no utilizo la clase Book me imprime la o las etiquetas sin problema, pero tal y como está el código, me imprime una hoja en blanco.
¿Alguna idea?
Mil gracias!.
Valora esta pregunta


0