使用iText创建PDF而不将其保存到临时文件

时间:2013-04-02 08:30:29

标签: java itext

代码:

private String FILE = "e:/FirstPdf.pdf";

public void preparePDF() {
        try {
            Document document = new Document();
            PdfWriter.getInstance(document, pdfFile);
            document.open();
            addTitlePage(document);
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
}

一切正常但我想要的是不将pdf保存到临时文件夹中,而只是将其插入private File或其他东西。我正在创建一个具有下载PDF文件功能的Web应用程序,我只需要将pdf放在变量中。

3 个答案:

答案 0 :(得分:3)

如果您不想保存ByteArrayOutputStream,可以使用PDF。看看这个 example

答案 1 :(得分:1)

PdfWriter有一个静态方法getInstance(Document document, OutputStream os)。使用ByteArrayOutputStream将内容存储到字节数组中。稍后,使用此数组将文件发送给用户。也许你需要将数组包装成ByteArrayInputStream

这样,您就不需要将文件存储在文件系统上。

答案 2 :(得分:0)

您可以将document写入OutputStream而不是文件。如果您希望能够动态生成和下载PDF文件(例如,如果它不生成大约一秒钟左右),那么您可以创建一个servlet并写入HttpServletResponse.getOutputStream()

PdfWriter.getInstance(document, response.getOutputStream())