Galera eu estou tentanto gerar passagens para onibus, carrego um arquivo de template seto todos os dados nos campos e pego os bytes e jogo para um ByteArrayOutputStream, as 3 vias da passagem porem quando gero um arquivo com esse objeto do ByteArrayOutputStream, sai so a primeira via da passagem alguem ai sabe porque, vou postar o codigo
package com.estagio.passagem;
import com.estagio.entidade.Passagem;
import com.estagio.utils.ObjectUtils;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
/**
* @author Cristian Urbainski
* @since 03/07/2012
*/
public class GeracaoPassagem {
/**
* Variaveis da privadas da classe
*/
private static final String TXT_LINHA = "txtLinha";
private static final String TXT_NUMERO = "txtNumero";
private static final String TXT_DE = "txtDe";
private static final String TXT_PARA = "txtPara";
private static final String TXT_DATAVIAGEM = "txtDataViagem";
private static final String TXT_HORARIO = "txtHorario";
private static final String TXT_SEGURO = "txtSeguro";
private static final String TXT_PEDAGIO = "txtPedagio";
private static final String TXT_TAXAEMBARQUE = "txtTaxaEmbarque";
private static final String TXT_TARIFA = "txtTarifa";
private static final String TXT_OBSERVACAO = "txtObservacao";
private static final String TXT_MOTIVO = "txtMotivo";
private static final String TXT_VALORPASSAGEM = "txtValorPassagem";
private static final String TXT_VIA = "txtVia";
public static ByteArrayOutputStream gerarPassagem(Passagem passagem) throws Exception
{
int numeroDeVias = 3;
int numeroViasCriadas = 0;
ByteArrayOutputStream listaPassagem = new ByteArrayOutputStream();
try {
while(numeroViasCriadas < numeroDeVias)
{
//TODO trocar caminho de carregamento do arquivo de pdf
File f = new File("E:/Desenvolvimento/projetoEstagio/web/template/layout_passagem.pdf");
PdfReader reader = new PdfReader(f.getCanonicalPath());
ByteArrayOutputStream out = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, out);
AcroFields form = stamper.getAcroFields();
setFieldsInPassagem(form, passagem, (numeroViasCriadas + 1) + "ª Via");
reader.consolidateNamedDestinations();
stamper.setFormFlattening(Boolean.TRUE);
stamper.setRotateContents(Boolean.TRUE);
reader.removeFields();
stamper.setFullCompression();
reader.eliminateSharedStreams();
out.flush();
out.close();
reader.close();
stamper.close();
listaPassagem.write(out.toByteArray());
numeroViasCriadas++;
}
return listaPassagem;
} catch (NullPointerException e) {
System.out.println("Alguma propriedade do objeto do tipo passagem esta nula, por favor verficar.");
e.printStackTrace();
throw e;
}
catch (IOException ex) {
System.out.println("Não foi possivel localizar o arquivo de template da passagem, por favor verificar.");
ex.printStackTrace();
throw ex;
}
catch (DocumentException doc) {
System.out.println("Problema com documento, por favor verificar.");
doc.printStackTrace();
throw doc;
}
}
private static void setFieldsInPassagem(AcroFields form, Passagem passagem, String via) throws IOException, DocumentException
{
form.setField(TXT_NUMERO, passagem.getIdPassagem().toString());
form.setField(TXT_DATAVIAGEM, new SimpleDateFormat("dd/MM/yyyy").format(passagem.getDsHoraSaida()));
form.setField(TXT_DE, passagem.getMunicipioDe().getDsMunicipio());
form.setField(TXT_HORARIO, new SimpleDateFormat("HH:mm").format(passagem.getDsHoraSaida()));
form.setField(TXT_LINHA, passagem.getRota().getDsRota());
form.setField(TXT_MOTIVO, passagem.getDsMotivo());
form.setField(TXT_OBSERVACAO, passagem.getDsObservacao());
form.setField(TXT_PARA, passagem.getMunicipioPara().getDsMunicipio());
form.setField(TXT_PEDAGIO, passagem.getNrPedagio().toString());
form.setField(TXT_SEGURO, passagem.getNrSeguro().toString());
form.setField(TXT_TARIFA, passagem.getNrTarifa().toString());
form.setField(TXT_TAXAEMBARQUE, passagem.getNrTaxaEmbarque().toString());
form.setField(TXT_VALORPASSAGEM, passagem.getNrValor().toString());
form.setField(TXT_VIA, via);
}
}