jsf - 使用 OpenHTMLPdf 和 Primefaces 创建 PDF
问题描述
我想创建一个基于 Primefaces 和 OpenHTMLPDF 的 PDF:
我在转换为我的私有 org.primefaces.model.StreamedContent pdfTemplate 时遇到问题;
所以我猜想最后两行代码需要帮助:
ExternalContext externalContext = facesContext.getExternalContext();
String serverName = externalContext.getRequestServerName();
String port = String.valueOf(externalContext.getRequestServerPort());
String appName = externalContext.getRequestContextPath();
String protocol = externalContext.getRequestScheme();
String url = protocol + "://myurl.com";
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
response.reset();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"" + "pdfTemplate.pdf" + "\"");
OutputStream browserStream = response.getOutputStream();
PdfRendererBuilder builder = new PdfRendererBuilder();
builder.useFastMode();
builder.withUri(new URL(url).toString());
builder.toStream(browserStream);
builder.run();
FileInputStream fis = new FileInputStream(new File("C:\\samplexxx.pdf"));
pdfTemplate = new DefaultStreamedContent(fis, "application/pdf");
是否还需要增强?关闭流,例如等?我是否需要为 PdfRendererBuilder 做更多的事情(更改设置)?非常感谢
解决方案
推荐阅读
- ios - .xcodeproj 文件在 Xcode 中显示为红色是什么意思?
- c# - 应用程序中的数据库验证
- html - 添加/删除组件时某些 div 的 Flexbox 对齐“问题”
- php - 此代码对于最小和最大 int 是否足够安全
- javascript - 使用 const 在 puppeteer 测试中导入定位器
- angular - PrimeNG AutoComplete:选择特定条目后重新运行搜索
- node.js - 尝试使用 PUT 将 PDF 作为 blob 上传到 S3 存储桶时出现 403 禁止
- kubernetes - 如何将多个前缀路由到 istio 中的同一路由?
- visual-studio-code - VS Code 远程容器开发,自签名错误
- chef-infra - 接受版本 >= 14 的 Chef Infra Client 许可协议