Numero de Paginas Rodapé (Itext)

0 respostas
java
F

Boa tarde.

Estou tentando gerar um relatório em PDF com o Itext, até ai ok mas quando tento colocar o numero de paginas no rodapé ele só aparece na ultima página. Alguém poderia me ajudar?

Obrigado.

Segue o código:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package gerarpdf;
import com.itextpdf.text.BaseColor;
import java.io.FileOutputStream;
import java.io.IOException;
//import api IText
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;
import com.sun.xml.internal.ws.wsdl.writer.document.soap.HeaderFault;
import java.awt.Desktop;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.scene.layout.Border;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;

/**
 *
 * @author ferna
 */
public class TestePDF  {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
            Document document = new Document();
        try{
            
            //pega o nome e pasta do JFileChooser e seta aqui para salvar
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\Users\\ferna\\Documents\\NetBeansProjects\\GerarPDF\\VisualizarPDF\\visualiza.pdf"));
        
        
        
        document.open();
    
        
       //Muda a cor da fonte
       Font font20Preto = new Font(Font.FontFamily.UNDEFINED, 20, Font.NORMAL, BaseColor.BLACK);
       
       
       
        Image  figura = Image.getInstance("C:\\Users\\ferna\\Documents\\NetBeansProjects\\GerarPDF\\Imagem1.png");
         PdfPTable tabela = new PdfPTable(4); //cria uma tabela com 4 colunas
         //tabela.setHorizontalAlignment(Element.ALIGN_CENTER);
         figura.setAlignment(Element.PARAGRAPH);
         document.add(figura);
         
        
        Paragraph espaço = new Paragraph("\n");
  
        document.add(espaço);
        document.add(espaço);
        document.add(espaço);
        
         Paragraph titulo = new Paragraph("Relatótio de Clientes", font20Preto);
       titulo.setAlignment(Element.ALIGN_CENTER);
       document.add(titulo);
       
       document.add(espaço);
       document.add(espaço);
       
   PdfPCell contador = new PdfPCell(new Paragraph("Quantidades de pessoas:"));
   contador.setColspan(4);
   contador.setHorizontalAlignment(Element.ALIGN_RIGHT);
   contador.setBorder(PdfPCell.NO_BORDER);
   tabela.addCell(contador);     
   PdfPCell celulaNome = new PdfPCell(new Paragraph("Nome")); //adiciona o paragrafo com o titulo na segunda celula.
   celulaNome.setHorizontalAlignment(Element.ALIGN_CENTER); //Alinha no centro
   celulaNome.setBackgroundColor(BaseColor.GRAY);
   PdfPCell celulaCPF = new PdfPCell(new Paragraph("CPF"));
   celulaCPF.setHorizontalAlignment(Element.ALIGN_CENTER); //Alinha no centro
   celulaCPF.setBackgroundColor(BaseColor.GRAY);
   PdfPCell celulaEmail = new PdfPCell(new Paragraph("Email"));
   celulaEmail.setHorizontalAlignment(Element.ALIGN_CENTER); //Alinha no centro
   celulaEmail.setBackgroundColor(BaseColor.GRAY);
   PdfPCell celulaTelefone = new PdfPCell(new Paragraph("Telefone"));
   celulaTelefone.setHorizontalAlignment(Element.ALIGN_CENTER); //Alinha no centro
   celulaTelefone.setBackgroundColor(BaseColor.GRAY);
   //celula1.setBorder(2); // aqui vc tira as bordas da celula 
   //celula2.setBorder(2);
   tabela.addCell(celulaNome); //aqui adiciona as celulas na tabela.
   tabela.addCell(celulaCPF);
   tabela.addCell(celulaEmail);
   tabela.addCell(celulaTelefone);
   String teste [][] = new String[][]{
       {"Fernando Mordini","[CPF removido]","[email removido]","(11)9 7746-3287"},
       {"Ana Cardoso","[CPF removido]","[email removido]","(51)9 1111-2222"},
       {"Marcelo Augusto","[CPF removido]","[email removido]","(12)9 5555-5555"},
   };
   
   for(int i=0;i<teste.length;i++){
   tabela.addCell(teste[i][0]);
   tabela.addCell(teste[i][1]);
   tabela.addCell(teste[i][2]);
   tabela.addCell(teste[i][3]);
  // if(i % 2 == 0){
  // }
   }
   
    document.add(tabela); // coloca a tabela na pagina do PDF.
    Documento dc = new Documento();
    Paragraph insere = new Paragraph(dc.exemploLuan);
    document.add(insere);
   
   
   
   class Rodape extends PdfPageEventHelper { //cria evento para adiciona objetos ao rodapé
        Font ffont = new Font(Font.FontFamily.UNDEFINED, 10, Font.ITALIC);
 
       
   Date dataHoraAtual = new Date();
        String data = new SimpleDateFormat("dd/MM/yyyy").format(dataHoraAtual);
        String hora = new SimpleDateFormat("HH:mm:ss").format(dataHoraAtual);
        Paragraph p = new Paragraph("Data: " + data, ffont);
        Paragraph p2 = new Paragraph("Hora: "+ hora, ffont);
        Paragraph p1 = new Paragraph("paginas: "+writer.getPageNumber());
        
        @Override
        public void onEndPage(PdfWriter writer, Document document) {
            PdfContentByte cb = writer.getDirectContent();   
            Phrase footer = new Phrase();
            footer.add(p1);
            ColumnText.showTextAligned(cb, Element.ALIGN_CENTER,
                    footer,
                    (document.right() - document.left()) / 1 + document.leftMargin(),
                    document.bottom() - 10, 0);
            Phrase footer1 = new Phrase(p);
            ColumnText.showTextAligned(cb, Element.ALIGN_CENTER,
                    footer1,
                    (document.right() - document.left()) / 20 + document.leftMargin(),
                    document.bottom() - 10, 0);
            Phrase footer2 = new Phrase(p2);
            ColumnText.showTextAligned(cb, Element.ALIGN_CENTER,
                    footer2,
                    (document.right() - document.left()) / 25 + document.leftMargin(),
                    document.bottom() - 25, 0);
        }
    }
    Rodape event = new Rodape();
    writer.setPageEvent(event); //seta o evento criado para adicionar ao rodapé
    
   
  
   
   
   
        }
        catch(DocumentException de){
            System.err.println(de.getMessage());
        }
        catch(IOException ioe){
            System.err.println(ioe.getMessage());
        }
        finally{
        document.close();
        }
    
    
        try {
            //chama o documento ja criado
            Desktop.getDesktop().open(new File("C:\\Users\\ferna\\Documents\\NetBeansProjects\\GerarPDF\\VisualizarPDF\\visualiza.pdf"));
        } catch (IOException ex) {
            Logger.getLogger(TestePDF.class.getName()).log(Level.SEVERE, null, ex);
        }
       
       
        
        
    }
}
Criado 14 de junho de 2018
Respostas 0
Participantes 1