iText, criar arquivo na memória?

2 respostas
M

Pessoal, tenho um método que gera um arquivo pdf utilizando o iText, acontece que ele cria este arquivo em DISCO e eu gostaria que ele fosse criado em memória.

public void writeToFile(String path){
        ByteArrayOutputStream byte = generator.getBaos();
        try{        
            FileOutputStream file = new FileOutputStream(path);
            file.write(byte.toByteArray());
            file.flush();
        }
        catch (Exception e) {
            e.printStackTrace();
        } 
}

Método usado no Servlet para recuperar o arquivo em DISCO:

URL url = request.getSession().getServletContext().getResource("/file.pdf");
BufferedInputStream leitor    = new BufferedInputStream(url.openStream(), 4*1024);				
ServletOutputStream escritor = response.getOutputStream();				
				
byte[]buffer = new byte[4 * 1024];
int size;
				
while((size = leitor.read(buffer, 0, buffer.length)) != -1 ){
	escritor.write(buffer, 0, size);
}

Alguém saberia me dizer como alterar meu método de criação do arquivo para ele gravar em MEMÓRIA ?

Valeu.

2 Respostas

P

Use dessa forma:

Document documento = new Document();
PdfWriter.getInstance(documento, response.getOutputStream());
documento.open();
...
//criacao do seu documento


ByteArrayOutputStream baos = new ByteArrayOutputStream();
response.setHeader("Expires", "0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
response.setContentLength(baos.size());
ServletOutputStream out = response.getOutputStream();
baos.writeTo(out);
out.flush();
baos.close();
out.close();

http://itextdocs.lowagie.com/tutorial/general/webapp/index.php

G

Dessa forma foi que uma beleza !!!
Tente e me diga !!

Att,

ByteArrayOutputStream baos = new ByteArrayOutputStream();

Document documento = new Document();

PdfWriter.getInstance(documento, baos);

documento.open();//criacao do seu documento
response.setHeader(“Expires”, “0”);

response.setHeader(“Pragma”, “public”);

response.setContentType(“application/pdf”);

OutputStream out = response.getOutputStream();

baos.writeTo(out);

out.flush();

baos.close();

out.close();
Criado 7 de dezembro de 2007
Ultima resposta 23 de set. de 2014
Respostas 2
Participantes 3