Formatação de texto (em arquivo RTF) usando Itext

Bom dia galera do guj … estou com um código, que gera um arquivo RTF:


package br.com.esfera.control.relatorios.action;

import java.awt.Color;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.List;

import br.com.esfera.control.action.Action;
import br.com.esfera.model.leilao.vo.LeilaoVO;
import br.com.esfera.model.venda.vo.BemVO;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.rtf.RtfWriter2;



public class CatalogoDoLeilaoAction extends Action{
	
	public void gerarCatalogo(LeilaoVO leilao, List<BemVO> voList){
		
		Document document = new Document();
		try {			
			
			// diretório
			File dir = new File("C:\catalogos");
			if(!dir.isDirectory()){
				dir.mkdir() ;
			}
			
			
			// obtendo no nome do arquivo 
			SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");   
			String nomeDoArquivo = formatter.format( leilao.getData() );
			nomeDoArquivo = nomeDoArquivo.replace("/", "-");
			nomeDoArquivo = "CatalogoDoLeilaoDe"+nomeDoArquivo + ".rtf";
			// criando o arquivo			
			RtfWriter2.getInstance(document,
					new FileOutputStream("C:\catalogos\"+nomeDoArquivo));
			document.open();			
			// criando tabela
			PdfPTable table = new PdfPTable(2);// tabela com duas colunas
			
			// Fontes
			Color preto = new Color(1, 1, 1);  
			Font fonteNormal = FontFactory.getFont(FontFactory.TIMES_ROMAN, 10,Font.NORMAL, preto);  
			Font fonteNegrito = FontFactory.getFont(FontFactory.TIMES_ROMAN, 12,Font.BOLD, preto);
			
			// populando os dados de bens 
			for(BemVO bem: voList){         
				// lote
				Phrase lote = new Phrase(alteraFormatoNumeroLote(bem.getNumLote()), fonteNegrito);
				// descricao do bem 
				Phrase desc = new Phrase(
										  ((bem.getVeicMarca() != null )? bem.getVeicMarca()+ " / "  : "" )+
									      ((bem.getVeicModelo() != null )? bem.getVeicModelo()+ " / " : "" )+
									      ((bem.getVeicCor() != null )  ? bem.getVeicCor()+ " / "   : "")+
									      (( bem.getVeicAnoFabric() != null )  ?  bem.getVeicAnoFabric()+ "/"   : "")+						      
									      (( bem.getVeicAnoModelo() != null )  ?  bem.getVeicAnoModelo()+ " / "   : "")+
									      (( bem.getVeicCombustivel() != null )  ?  bem.getVeicCombustivel()+ " / "   : "")+
									      (( bem.getVeicNumPortas() != null )  ?  bem.getVeicNumPortas()+ "P     / "   : "")+
									      (( bem.getDscOutroBem() != null )  ?  bem.getDscOutroBem()  : "")+
									      "\n"+
									      (( bem.getObsDespachante() != null )  ?  "("+bem.getObsDespachante()+ ")   "   : "")
					      
								         , fonteNormal);
				
				// adicionando frases aos paragrafos
				Paragraph p1 = new Paragraph();  
				Paragraph p2 = new Paragraph();
				p1.add(lote);
				p2.add(desc);
				
				
				// adicionando cada um em uma celula
				table.addCell(p1);
				table.addCell(p2);
			}
			
			document.add(table);
			
			
			
			
			
			document.close();
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * Recebe uma String no formato LOTE EXTRA 1 / LOTE EXTRA 15 ou LOTE 1 / LOTE 15
	 * e retona no formato : LOTE EXTRA 001 / LOTE EXTRA 015 OU LOTE 001 / LOTE 015
	 * @param nLote
	 * @return
	 */
	public static String alteraFormatoNumeroLote(String nLote){
		if(nLote.contains("EXTRA")){ // lote extra
			nLote = nLote.substring(11);
			nLote = "000" + nLote;
			nLote = nLote.substring(nLote.length()-3, nLote.length());
			nLote = "LOTE EXTRA " + nLote;			
		}else{			
			nLote = nLote.substring(5);
			nLote = "000" + nLote;
			nLote = nLote.substring(nLote.length()-3, nLote.length());
			nLote = "LOTE " + nLote;						
		}
		return nLote;
	}

}

No entanto a formataçao não está funcionando, e o texto não está ficando em negrito no arquivo . Alguém tem alguma idéia do que posso fazer ?

Tenho uma outra dúvida quanto a larqura das colunas da tabela. Tenho duas colunas e cada uma ocupa 50% da largura da tabela. Mas uma deveria usas 80% da largura e outra 20 %. Já tentei usar o método table.setWidths(arg0). Mas não obtive sucesso . alguem pode me ajudar ?

Que vergonha em ningém respondeu !!! :cry:

bem … aqui vai o código resolvido caso alguém tenha e mesma dúvida


// Pra formatar as fontes fiz assim :
       // Fonte para o lote 
	FontFactory.register("c:\windows\fonts\arial.ttf");			
	fonteLote = new Font(FontFactory.getFont("arial"));
        fonteLote.setSize(8);
        fonteLote.setColor(Color.BLACK);
        fonteLote.setStyle(RtfParagraphStyle.STYLE_BOLD);
        
        // Fonte para a Descriçao 
	FontFactory.register("c:\windows\fonts\arial.ttf");			
	fonteDescricao = new Font(FontFactory.getFont("arial"));
        fonteDescricao.setSize(8);
        fonteDescricao.setColor(Color.BLACK);		

// para criar o arquivo:
     document = new Document();
     // cria o diretório caso não exista 
	diretorio();	
	// cria o documento
	RtfWriter2.getInstance(document,
			new FileOutputStream(this.getCaminhoCatalogo()+ this.nomeiaArquivoCatalogo(leilao.getData())));
			document.open();	

//sendo que 
this.getCaminhoCatalogo()+ this.nomeiaArquivoCatalogo(leilao.getData() retorna uma String

// o código abaixo formata a tabela 
	int[] larguras = new int[]{15, 85}; //  largura		
	table = new Table(larguras.length);
        table.setBackgroundColor(Color.WHITE);
        table.setSpacing(3);
        table.setBorderWidth(1);
        table.setBorderColor(Color.BLACK);
        table.setWidth(100);
        table.setWidths(larguras);

// e esse insere as celulas
paragraph = new Paragraph(lote, fonteLote);
        cell = new Cell(paragraph);
        cell.setBorder(0);
        cell.setBackgroundColor(Color.WHITE);
        cell.setVerticalAlignment(Cell.ALIGN_BOTTOM);
        cell.setBorderWidth(1);
        cell.setBorderColor(Color.BLACK);
        table.addCell(cell);

        paragraph = new Paragraph(desc, fonteDescricao);
        cell = new Cell(paragraph);
        cell.setBorder(0);
        cell.setBackgroundColor(Color.WHITE);
        cell.setVerticalAlignment(Cell.ALIGN_BOTTOM);
        cell.setBorderWidth(1);
        cell.setBorderColor(Color.BLACK);
        table.addCell(cell);