我基于 thymeleaf 模板创建了一个 pdf 文件,我实际上使用模板解析器、 Flying Saucer ,将文件写入输出流 但由于我无法访问前端来定义客户端需要时不时生成的概要内容,我认为最好在服务器端生成 pdf 文件。所以我的问题是:
有没有办法获取写入数据的输出流并将其转换为 动态写入,因此不会在本地存储中创建
这是我的业务逻辑的一部分:
os = new FileOutputStream(pdf);
ITextRenderer renderer = new ITextRenderer();
renderer.layout();
renderer.createPDF(os);
我在我的 Controller 中使用它,并在响应实体中使用附件内容属性
除此之外我愿意接受任何建议 提前致谢
最佳答案
不久前,我在一个简单的 Java EE + JSF 项目中完成了类似的任务,以下是我的做法:
byte[] asPdf = .... (your pdf data)
String filename = "demo.pdf";
HttpServletResponse response = Faces.getResponse(); // Using Omnifaces in this example, but that is irrelevant
// Details: https://stackoverflow.com/a/9394237/7598851
response.reset();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
response.setContentLength(asPdf.length);
response.setCharacterEncoding("UTF-8");
try (OutputStream output = response.getOutputStream()) {
output.write(asPdf);
} catch (IOException e) {
// ...
}
关于java - 即时生成 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58884991/