JAVA + mySql + Itext (PDF) não aparece os dados da primeira página....RESOLVIDO!

Boa noite pessoal! Estou fazendo relatórios com java + mySql + Itext…e quando o banco de dados tem poucos registros roda muito bem, mas quando coloco um banco de dados com mais de mil registros a primeira página fica em branco e os dados aparecem somente a partir da segunda página. é como se fosse impresso na primeira página os dados na cor branca. o resto do formulário roda certo…Alguém já teve um problema estúpido destes? abaixo o código que estou utilizando

Obs: os dados da segunda página em diante estão corretos.

/*

  • Writed by Cleber Angelo Ransolin
  • Last edition 11/07/2019 21:20
  • Impressão de lista de clientes
  • FINALIZADO em
    */

package relatorios;

import com.itextpdf.text.BaseColor;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;
import java.awt.Desktop;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import static util.Funcao.pegaDataToString;
import static util.Funcao.pegaHora;

public class PrintRC1 {

/** Path to the resulting PDF file. */
public static final String RESULT  = javax.swing.filechooser.FileSystemView.getFileSystemView().getHomeDirectory().toString();
public static File file=  new File(RESULT+"\\Lista de Clientes.PDF");
public static String CHAVE;
public static String DATAINICIAL;
public static String DATAFINAL;

/** Cria um PDF file de acordo com a nota
 * @param    args    no arguments needed
 * @throws com.itextpdf.text.DocumentException
 * @throws java.io.IOException   */
public static void main(String[] args) throws DocumentException, IOException {
    new PrintRC1().createPdf(file.toString());        
}

/**
 * Creates a PDF document.
 * @param filename the path to the new PDF document
 * @throws    DocumentException 
 * @throws    IOException 
 */
public void createPdf(String filename) throws DocumentException, IOException {
    Connection con=null;
    PreparedStatement pst=null;
    ResultSet rs=null;
    
    //Abre novo documento  
    Document document = new Document();
    document.setPageSize(PageSize.A4);
    PdfWriter.getInstance(document, new FileOutputStream(filename));
    PdfWriter writer = PdfWriter.getInstance(document,  new FileOutputStream(filename));
    document.open();

    try { 
        //Conecta o banco de dados
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/MySql","root","nativa"); 
        String sqlSelect="SELECT codigo "
                        + "FROM Clientes "
                        + "ORDER BY codigo";
        pst=con.prepareStatement(sqlSelect);
        rs=pst.executeQuery();
        rs.beforeFirst();

        //Adiciona o logotipo
        Image image1 = Image.getInstance("C:\\SAN\\LOGO\\machado.jpg");
        image1.scaleAbsolute(120, 90);
        image1.setAbsolutePosition(10, 720);
        document.add(image1);

        //Insere paragrafo
        Paragraph p = new Paragraph();
        document.add(p);       

        //Desenha a borda
        pintaBorda(10, 692,584,20,writer);

        //Monta o cabeçalho
        FixText("Fulano de Tal Ltda",120,775,writer,18,"Bold");
        FixText("Rua , bairrro",120,760,writer,12,"");
        FixText("Cidade - Estado. CEP xxxx-xxx ",120,744,writer,12,"");
        FixText("Telefone xxxx-xxxx",120,728,writer,12,"");

        int cont=0;
        int linha=660; 
        int pag=1;
        int limite=46; //quant. de linhas da primeira pagina
        
        FixText("LISTA DE CLIENTES",10,697,writer,16,"Bold");          
        FixText("____________________________________________________________________",10,675,writer,14,"");
        
        cabecalho(675,writer);
        int registros=0;
        while(rs.next()){  
             registros ++;
            if((registros % 2)==0){ //imprime fundo zebrado
                PdfContentByte contentBytex = writer.getDirectContent();
                Rectangle rectangle3 = new Rectangle(11,linha-2,583,linha+11);
                rectangle3.setBackgroundColor(new BaseColor(245,255,255));
                contentBytex.rectangle(rectangle3);
            }
            FixText(String.format("%4s", rs.getString(1)).replace(' ', '0'),12,linha,writer,11,"");
            linha=linha-14;
            cont=cont+1;
            if(cont==limite){
                rodape(writer);                      //imprime o rodape
                pag=pag+1;                           //contador de pagina          
                if(pag>1){
                    limite=54;                      //limita 58 linhas por pagina
                    linha=775;                      //inicia na segunda página a partir da posiçao da linha
                    cont=0;                         //zera contador de linha
                    document.newPage();             //adiciona nova pagina
                    cabecalho(linha+20,writer);     //imprime o cabeçalho
                    rodape(writer);                 //imprime  rodapé
                    pintaBorda(10, 810,584,20,writer);             //desenha a borda
                    FixText("____________________________________________________________________",10,790,writer,14,"");
                }
            }
        }
    } catch (SQLException ex) {
        Logger.getLogger(PrintRC1.class.getName()).log(Level.SEVERE, null, ex);          
    }

    //Fecha o documento
    document.close();
    
    //Abre o PDF gerado
    if (file.toString().endsWith(".pdf")) 
        Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + file);
    else {
        Desktop desktop = Desktop.getDesktop();
        desktop.open(file);
    }
}

//cabeçalho
private void cabecalho(int lines,PdfWriter writer){
    FixText("CÓDIGO",13,lines,writer,11,"Bold");
    FixText("CLIENTE",70,lines,writer,11,"Bold");
    FixText("TELEFONE",400,lines,writer,11,"Bold");            
    FixText("TELEFONE",500,lines,writer,11,"Bold");            
}

//Rodapé
private void rodape(PdfWriter writer){ 
    FixText("Relatório impresso por nome do usuario em " + pegaDataToString()+" "+pegaHora(),12,12,writer,8,"");
    FixText("Pag. "+ writer.getCurrentPageNumber(),550,12,writer,8,"");
}

//Desenha a borda
private void pintaBorda(int x, int y, int w, int h, PdfWriter writer) { 
    PdfContentByte contentByte = writer.getDirectContent();
    contentByte.setColorStroke(BaseColor.DARK_GRAY);
    com.itextpdf.text.Rectangle rectname = new com.itextpdf.text.Rectangle(x,y,w,h);
    rectname.setBorder(com.itextpdf.text.Rectangle.BOX);       
    rectname.setBorderWidth(0.05F);
    contentByte.rectangle(rectname);
}

//Configura o texto
private static void FixText(String text, int x, int y,PdfWriter writer,int size,String bold) {
    BaseFont bf=null;
    PdfContentByte cb = writer.getDirectContent();
    try {
        if(bold.equals("Bold")){
            bf = BaseFont.createFont(BaseFont.COURIER_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        }else{
            bf = BaseFont.createFont(BaseFont.COURIER, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 
        }
    } catch (DocumentException | IOException ex) {
        Logger.getLogger(PrintClientes.class.getName()).log(Level.SEVERE, null, ex);
    }
    cb.saveState();
    cb.beginText();
    cb.moveText(x, y);
    cb.setFontAndSize(bf, size);
    cb.showText(text);
    cb.endText();
    cb.restoreState();
}

}

Acho que é neste local. Deveria estar assim:
if (cont >= limite) {

Alterei, mas op problema persiste…Até 250 registros funciona normal, exibindo a primeira pagina corretamente e com mais registros some os dados da primeira página

Estranho que fiz com mais de 450 registros e gerou o arquivo sem problemas.
Lista de Clientes.PDF (60,1,KB)
Só alterei aquele ponto onde indiquei.

Complementando. Outra coisa que removi foi esta linha duplicada.

//Abre novo documento
Document document = new Document(); document.setPageSize(PageSize.A4);
// **PdfWriter.getInstance(document, new FileOutputStream(filename));**
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); document.open();

Biiiiiiiiiiiiingo…a linha duplicada era o problema…valeu garoto…muito obrigado!!! RESOLVIDO!!!

// **PdfWriter.getInstance(document, new FileOutputStream(filename));**

Disponha.