java - 即时生成 PDF 文件

标签 java spring-boot thymeleaf flying-saucer

我基于 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) {
    // ...
}

完整的项目是here ,相关代码在这个file

关于java - 即时生成 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58884991/

相关文章:

java - 在数据库中存储和搜索集(具有许多可能的值)(来自 Java)

java - 无法在 NetBeans 或 Eclipse 中从 wsdl 生成代理类

java - Containing 可以用在 Spring Data 中的列表上吗?

java - 为单个服务配置多个端点

java - 如何使用 Android 设备从 localhost (Mac) 中的服务访问 api

java - 发送 GET 方法而不是 DELETE

java - Web 服务连接被拒绝

java - 面试前准备Java专业工作环境

java - 在 Thymeleaf 和 Spring Boot 的嵌套类中使用枚举

spring-mvc - 带有 Thymeleaf 和 Tomcat 8 UTF-8 编码问题的 Spring MVC