Relatório com iText

Olá galera, gostaria de uma grande ajuda de vocês. Estou desenvolvendo um relatório com o itext e tenho algumas dúvidas e gostaria de me comunicar com pessoas que trabalham ou já trabalaharam com o iText para que caso surgem outras dúvidas eu possa me comunicar.

O código está ai abaixo, por enquando não tem dados para ser exibidos, somente estou montando o layout.

package br.com.ctis.examples.itext;

import java.awt.Color;
import java.io.*;

import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfTable;
import com.lowagie.text.pdf.PdfPCell;

import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;

import java.util.Date;
import java.text.SimpleDateFormat;

import javax.swing.plaf.TabbedPaneUI;

public class DemonstrativoPagamentos {
    
    private static Document document;
    private static StringBuffer texto;
    private static Paragraph paragrafo;
    private static Chunk linhaTexto;
    
    public static void main(String args[]){
        
        document = new Document(PageSize.A4.rotate());
        
        try {
            PdfWriter.getInstance(document, new FileOutputStream("C:\\DemonstrativoPagamento.pdf"));
            document.open();
            
            // tabela de Imagens
            float[] widthImagens = {0.30f, 0.30f};
            PdfPTable tableImages = new PdfPTable(widthImagens);
            
            
            Image imagemLogo = Image.getInstance("C://ImagesPDF//banco_real.gif") ;
            //  imagemLogo.setAbsolutePosition(,760);
            imagemLogo.setAlignment(Element.ALIGN_LEFT);
            document.add(imagemLogo);
            
            Image imagemLogo2 = Image.getInstance("C://ImagesPDF//logo_banco_bgtop.gif") ;
            imagemLogo2.setAbsolutePosition(150,530);
            document.add(imagemLogo2);
            
            texto = new StringBuffer();
            // Título do PDF
            texto.append("\nDEMONSTRATIVO DE PAGAMENTOS\n\n");
            linhaTexto = new Chunk(texto.toString(),FontFactory.getFont(FontFactory.HELVETICA_BOLD,14));
            paragrafo = new Paragraph(linhaTexto);
            paragrafo.setAlignment(Element.ALIGN_CENTER);
            document.add(paragrafo);
            
            float[] widthsInfo ={0.10f,0.10f};
            PdfPTable tableInfo = new PdfPTable(widthsInfo);
            tableInfo.setSpacingAfter(15f);
            
            texto = new StringBuffer();
            texto.append("Ordem de Apresentação :");
            linhaTexto = new Chunk(texto.toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,12));
            paragrafo = new Paragraph(linhaTexto);
            paragrafo.setAlignment(Element.ALIGN_LEFT);
            tableInfo.addCell(paragrafo);
            
            texto = new StringBuffer();
            texto.append("Forma de Pagamento");
            linhaTexto = new Chunk(texto.toString(),FontFactory.getFont(FontFactory.TIMES,12));
            paragrafo = new Paragraph(linhaTexto);
            paragrafo.setAlignment(Element.ALIGN_LEFT);
            tableInfo.addCell(paragrafo);
            
            texto = new StringBuffer();
            texto.append("Gerado em :");
            linhaTexto = new Chunk(texto.toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,12));
            paragrafo = new Paragraph(linhaTexto);
            paragrafo.setAlignment(Element.ALIGN_CENTER);
            tableInfo.addCell(paragrafo);
            
            
            Date dataAtual = new Date();
            SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
            texto = new StringBuffer();
            texto.append(sdf.format(dataAtual));
            linhaTexto = new Chunk(texto.toString(),FontFactory.getFont(FontFactory.TIMES,12));
            paragrafo = new Paragraph(linhaTexto);
            paragrafo.setAlignment(Element.ALIGN_CENTER);
            tableInfo.addCell(paragrafo);
            document.add(tableInfo);
            
            
            //float[] widths = {0.75f, 0.75f, 0.75f, 0.75f,0.75f,0.75f,0.55f,0.65f,0.65f};
            PdfPTable table1 = new PdfPTable(1);
            PdfPCell colunas1 = null;
            
            linhaTexto = new Chunk("Doc",FontFactory.getFont(FontFactory.TIMES,10));
            colunas1 = new PdfPCell(new Paragraph(linhaTexto));
            colunas1.setBorder(Rectangle.NO_BORDER);
            colunas1.setColspan(9);
            colunas1.setBackgroundColor(Color.GRAY);
            table1.addCell(colunas1);
            table1.setWidthPercentage(100);
            document.add(table1);
            
            PdfPTable table = new PdfPTable(9);
            PdfPCell colunas = null;
            
            linhaTexto = new Chunk("Favorecido".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,9));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.getBorderWidthBottom();
            colunas.setBorder(Rectangle.NO_BORDER);
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            // CNPJ/CPF/Código
            linhaTexto = new Chunk("CNPJ/CPF/Código".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,9));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            // Número do Cliente
            linhaTexto = new Chunk("Número do Cliente".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,9));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            // Número do Banco
            linhaTexto = new Chunk("Número do Banco".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,9));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            // Data de pagamento
            linhaTexto = new Chunk("Data de pagamento".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,8));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            // Forma de Pagamento
            linhaTexto = new Chunk("Forma de Pagamento".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,8));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            // Valor em (R$)
            linhaTexto = new Chunk("Valor em (R$)".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,9));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            // Liberação
            linhaTexto = new Chunk("Liberação".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,9));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            // Identificação
            linhaTexto = new Chunk("Identificação".toString(),FontFactory.getFont(FontFactory.TIMES_BOLD,9));
            colunas = new PdfPCell(new Paragraph(linhaTexto));
            colunas.setBorderColorTop(Color.BLACK);
            colunas.setBorderColorBottom(Color.BLACK);
            table.addCell(colunas);
            
            table.setWidthPercentage(100);
            
            
            document.add(table);
            
        } catch(DocumentException de){
            System.out.println(de.getMessage());
        }catch (IOException ioe) {
            System.err.println(ioe.getMessage());
        }
        document.close();
    }
}

Minhas dúvida são o seguinte :
1ª Onde estão os Labels Favorecido até Identificação eu não gostaria que tivesse borda, somente uma linha que passa por cima como por exemplo:


Favorecido__

2º Como centralizar as labels Favorecido, CNPJ/CPF/Código, etc.

questionamento 2:

texto = new StringBuffer();
texto.append(“CPF/CNPJ:”);
linhaTexto = new Chunk(texto.toString(), FontFactory.getFont(
helv.toString(), 10));
paragrafo = new Paragraph(linhaTexto);
paragrafo.setAlignment(Element.ALIGN_RIGHT);
tableInfo.addCell(paragrafo);

questionamento 2:

texto = new StringBuffer();
texto.append(“CPF/CNPJ:”);
linhaTexto = new Chunk(texto.toString(), FontFactory.getFont(
helv.toString(), 10));
paragrafo = new Paragraph(linhaTexto);
paragrafo.setAlignment(Element.ALIGN_CENTER);
tableInfo.addCell(paragrafo);