如何生成 pdf 到变量而不是文件?

How to generate a pdf to a variable instead of a file?

我正在创建一个 pdf 文件并将其存储在一个目录中。我现在想传回 pdf 数据,以便用户可以将其下载到他们的首选目录(即,不再在目录中创建文件)。请问如何创建 "pdfData" 传回?

我知道这将涉及用存储数据的变量名称替换 "new FileOutputStream(FILE)";但是,我无法解决或在网上找到示例。

我有:

String filePath = System.getProperty("user.home") + "\Documents\"+fileName; //Test use
Document document = new Document(PageSize.A4, 72f, 72f, 72f, 72f);
try {
    PdfWriter.getInstance(document, new FileOutputStream(FILE));
    document.open();
    addMetaData(document);
    addImages(document);
    addTitlePage(document, recipeDetails, recipeName, servings, servingSize);
    document.close();
} catch (Exception e) {
  e.printStackTrace();
}
//return pdfData;

显示 mkl 建议合并到您的代码中的内容:

String filePath = System.getProperty("user.home") + "\Documents\"+fileName; //Test use
Document document = new Document(PageSize.A4, 72f, 72f, 72f, 72f);
try {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfWriter.getInstance(document, baos);
    document.open();
    addMetaData(document);
    addImages(document);
    addTitlePage(document, recipeDetails, recipeName, servings, servingSize);
    document.close();

    byte[] pdfData = baos.toByteArray();
    return pdfData;

} catch (Exception e) {
  e.printStackTrace();
}

pdfData 是一个 byte[](字节数组)。这可以直接 streamed/stored 在任何地方作为实际的 pdf。请记住,这是将 PDF 写入内存,因此如果同时处理大量大型 PDF,则会出现可伸缩性问题。

希望对您有所帮助。