Printing several pages

Asked

Viewed 103 times

1

I have a class that she makes the impression of the pages, however, I’m having a hard time breaking the pages.

In examples I have seen, they control this by the number of lines per page, but in my case, I do not know the quantity of lines, because I have sources of various sizes. follows below part of the code:

public int print(Graphics g, PageFormat pf, int page)
        throws PrinterException {

    if (page > 0) { /* We have only one page, and 'page' is zero-based */
        return NO_SUCH_PAGE;
    }

    /*
     * User (0,0) is typically outside the imageable area, so we must
     * translate by the X and Y values in the PageFormat to avoid clipping
     */

    Paper p = new Paper();
    pf.setPaper(p);

    Graphics2D g2d = (Graphics2D) g;
    g2d.translate(pf.getImageableX(), pf.getImageableY());

    Font fontP = new Font("Arial", Font.PLAIN, 6);
    Font fontM = new Font("Arial", Font.PLAIN, 8);
    Font fontG = new Font("Arial", Font.PLAIN, 10);
    g.setFont(fontM);

    /* Reinderizando buffer de imagem */
    try {
        BufferedImage imagem = ImageIO.read(new File(
                "D:\\Temp\\Printer\\Parcela.jpg"));             
        Image imagemMenor = imagem.getScaledInstance(600, 835, page);
        g2d.drawImage(imagemMenor, -75, -75, null);
    } catch (IOException e) {
        e.printStackTrace();
    }   


    int k = 0;      // cont responsável por cada folha
    int i = 0;      // cont para impressão dos dados
    int pos = 0;    // Posiciona os registros


    Registro[] registro; // vetor para obter os registros


    /* para cada iteração nesse for, deve imprimir uma página */
    for (k = 0; k < Index.vecregistro.size(); k++) {


        registro = Index.vecregistro.get(k); // registro recebe uma lista de
                                                // registros

        /* cada iteração corresponde a um contribuinte(3 contribuintes por pagina) */
        for (i = 0; i < 3; i++) { // for para impressão dos registros

            /* aqui esta o que vai impresso na página */

            g.setFont(fontG);
            g.drawString(registro[i].getLinha(), 200, -28 + pos);
            g.setFont(fontM);
            g.drawString(registro[i].getCP06(), -40, -10 + pos);
            g.drawString(registro[i].getVBAP01(), -10, -10 + pos);
            g.drawString(registro[i].getCP06(), 340, -10 + pos);

            pos = pos + 273; // incrementa e posiciona para o próximo
                                // registro

        }
    }
    /* tell the caller that this page is part of the printed document */
    return PAGE_EXISTS;
}
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.