如何生成 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,则会出现可伸缩性问题。
希望对您有所帮助。
我正在创建一个 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,则会出现可伸缩性问题。
希望对您有所帮助。