He escrito un programa que utiliza el Java API de impresión para imprimir las páginas de una impresora. Creo que he puesto en el código para establecer el tamaño de página de la carta, pero todavía se imprime en cualquiera que sea el tamaño es el predeterminado para la impresora. Aquí está mi printPage() método:

public void printPage() {
    getTot();
    PrinterJob job = PrinterJob.getPrinterJob();
    PageFormat pf = job.defaultPage();
    Paper paper = pf.getPaper();
    paper.setSize(8.5 * 72, 11 * 72);
    paper.setImageableArea(0.5 * 72, 0.0 * 72, 7.5 * 72, 10.5 * 72);
    pf.setPaper(paper);
    job.setPrintable(this);
    boolean ok = job.printDialog();
    if (ok) {
        if (cov)
            try {
                for (j = 0; j < printPaths.size(); j++)
                    job.print();
                cov = false;
            } catch (PrinterException ex) {
                System.out.println(ex.getMessage());
            }
        if (summ)
            try {
                job.print();
                summ = false;
            } catch (PrinterException ex) {
                System.out.println(ex.getMessage());
            }
    }

}

¿Qué estoy haciendo mal?

InformationsquelleAutor SaintWacko | 2011-11-29

2 Comentarios

  1. 4

    Puedes probar añadiendo esta pieza de código y vuelva a ejecutar :

    Book book = new Book();//java.awt.print.Book
    book.append(this, pf);
    job.setPageable(book);

    lugar de

    job.setPrintable(this);
    • Wow. Que funciona a la perfección. Incluso se imprime más rápido ahora! Puede usted explicar lo que pasa?
    • Me alegro de que trabajó para usted :), Que proporciona la funcionalidad, donde su página puede tener diferentes pageformat, creo que usted puede proporcionar a las diferentes páginas con un formato diferente, aunque nunca lo he usado :).
    • Ah, bien. Así funciona bastante bien, gracias por la ayuda.
    • tiene alguna idea de cómo solucionar este stackoverflow.com/questions/19983972/… @mprabhat
  2. 2

    Libro no trabajo para mí, con mis múltiples páginas de ejemplo (el resultado fue la impresión de la primera página), pero me dio otra idea. En lugar de :

    Book book = new Book();//java.awt.print.Book
    book.append(this, pf);
    job.setPageable(book);

    He probado otro método sobrecargado y que trabajó para todas las páginas:

    PageFormat pf = job.defaultPage();
    pf.setPaper(paper);
    job.setPrintable(this, pf);

    Si quieres tamaño de papel personalizado, usted necesita para adelante que para el método de impresión como argumento (que Java va a hacer por usted, pero usted debe pasar a setPrintable método). El cambio de PaperFormat después de que el método se empieza a ejecutar va a tener un efecto sólo en el segundo y más páginas o no tiene ningún efecto en absoluto.

    De todos modos, gracias a los dos.

    • gracias por la sugerencia con la segunda página, Mis cambiado no muestran ningún efecto en una página de documento hasta la configuración de la pageformat antes ejecutar el trabajo de impresión

Dejar respuesta

Please enter your comment!
Please enter your name here