Bueno, yo estoy pegado con un problema,

Necesito crear un PDF con un código html y lo hice de esta manera:

File pdf = new File("/home/wrk/relatorio.pdf");
OutputStream out = new FileOutputStream(pdf);
InputStream input = new ByteArrayInputStream(build.toString().getBytes());//Build is a StringBuilder obj
Tidy tidy = new Tidy();
Document doc = tidy.parseDOM(input, null);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(out);
out.flush();
out.close();

bueno, yo estoy usando JSP, así que hay que descargar este archivo para que el usuario no escribir en el servidor…

¿Cómo puedo transformar este Outputstream salida a un archivo en java sin escribir en este archivo en el disco duro ?

  • Quieres escribir en un archivo y no tiene este archivo en el disco duro? No entiendo tu pregunta
  • Necesito descargar el pdf no escribir en el disco duro.
  • la descarga de un archivo de almacenamiento en disco duro…
  • stackoverflow.com/questions/9268165/…

3 Comentarios

  1. 2

    Si usted está usando VRaptor 3.3.0+ puede utilizar el ByteArrayDownload clase. A partir de su código, puede utilizar este:

    @Path("/download-relatorio")
    public Download download() {
        //Everything will be stored into this OutputStream
        ByteArrayOutputStream out = new ByteArrayOutputStream();
    
        InputStream input = new ByteArrayInputStream(build.toString().getBytes());
        Tidy tidy = new Tidy();
        Document doc = tidy.parseDOM(input, null);
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(doc, null);
        renderer.layout();
        renderer.createPDF(out);
        out.flush();
        out.close();
    
        //Now that you have finished, return a new ByteArrayDownload()
        //The 2nd and 3rd parameters are the Content-Type and File Name
        //(which will be shown to the end-user)
        return new ByteArrayDownload(out.toByteArray(), "application/pdf", "Relatorio.pdf");
    }
  2. -1

    el uso de archivos temporales.

    File temp = File.createTempFile(prefix ,suffix);

    prefijo — El prefijo de la cadena define el nombre de los archivos; debe tener al menos tres caracteres.

    sufijo — El sufijo de la cadena define la extensión del archivo; si es null el sufijo «.tmp» va a ser utilizado.

Dejar respuesta

Please enter your comment!
Please enter your name here