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 ?