Java - Impresión de varias páginas con Book

 
Vista:

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!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Impresión de varias páginas con Book

Publicado por Brian vazquez (2 intervenciones) el 24/07/2017 20:03:00
Hola que tal.
Tengo el mismo problema.
Ya lograste imprimir los datos o aun no?.

Ojala podamos resolver este dato.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Impresión de varias páginas con Book

Publicado por Brian vazquez (2 intervenciones) el 26/07/2017 16:40:16
Ya pude hacerlo y el error esta en el formato de la pagina debes de conocer cuantas pulgadas debes de imprimir y eso mandárselo a la hoja de lo contrario como no sabes el tamaño exacto de la impresión no imprime nada.

el valor entero de 72 es igual a una pulgada. ya tu haces lo que quieras con el papel que desees.

cualquier duda creo que si te puedo ayudar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 46
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Impresión de varias páginas con Book

Publicado por jose luis (22 intervenciones) el 07/11/2020 18:01:10
¿como lo resolviste? ¿donde pones el valor de 72 en el codigo?
saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 46
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Impresión de varias páginas con Book

Publicado por jose luis (22 intervenciones) el 07/11/2020 19:28:20
ya pude imprimir, pero solo me imprime una etiqueta, lo hice asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class ImprimirConBook {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //PrintRequestAttributeSet aset = createAsetForMedia(size);
        //PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
        aset.add(Chromaticity.MONOCHROME);
 
        MediaSize isoA4Size = MediaSize.getMediaSizeForName(MediaSizeName.ISO_A4);
        float[] size = isoA4Size.getSize(Size2DSyntax.MM);
        Paper paper = new Paper();
        paper.setSize(size[0], size[1]);
        paper.setImageableArea(0.0, 0.0, size[0], size[1]);
 
        PageFormat pf = new PageFormat();
        pf.setPaper(paper);
 
        PrinterJob pj = PrinterJob.getPrinterJob();
        Book paginas = new Book();
        paginas.append( new CEtiqueta("Feo", "linea 1", "254125487", 1), pf );
        paginas.append( new CEtiqueta("Feo2", "linea 2", "254125488", 1), pf );
        pj.setPageable(paginas);
        if ( pj.printDialog() )
        {
            try
            {
                pj.print(aset);
            }
            catch (PrinterException e)
            {
                System.out.println(e);
            }
        }
    }
}

pero solo me imprime la etiqueta numero uno, la dos no me la imprime.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar