java - ITextRenderer 无法识别 xhtml 中定义的页面大小
问题描述
我正在使用一个xhtml
文件来创建一个 html 页面,然后以 pdf 格式呈现。html 头中的文件包含:
<style>
page {
background: white;
display: block;
margin: 0 auto;
margin-bottom: 0.5cm;
padding: 0.5cm 2cm;
}
page[size="A4"] {
width: 21cm;
height: 29.7cm;
}
</style>
在我的java文件中,我有:
String XHTMLstyle = new String(Files
.readAllBytes(Paths.get(getServletContext().getRealPath("/WEB-INF/xhtmlStyle.xhtml"))));
StringBuffer XHTML = new StringBuffer(XHTMLstyle);
XHTML.append("<body>");
XHTML.append("<page size=\"A4\">\r\n" +
" <div class=\"col-1\">\r\n" +
" <img src=\"logo.png\" style=\"width: 100%;\" />\r\n" +
" </div>\r\n" +
" </page>");
XHTML.append("</body>");
XHTML.append("</html>");
生成的 xhtml 格式良好。然后我使用以下方法创建 pdf 文件:
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(XHTML.toString());
renderer.layout();
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
renderer.createPDF(baos);
} catch (DocumentException e) {
setErrorMessage(response, 500, "Internal Server Error",
"Could not create the PDF base54 version of the eP.");
return;
}
// convert PDF to base64
String base64PDF = Base64.encodeBytes(baos.toByteArray());
// remove new line escape character
base64PDF = base64PDF.replaceAll("\\n", "");
编码的base64PDF没有页面大小A4所有的html头结构都没有呈现。
有任何想法吗?
解决方案
推荐阅读
- swift - Swift 编译器可以为我的应用程序创建一个可执行文件吗?
- c++ - 通过字符串获取类成员
- python-sphinx - Python Sphinx 验证和更新架构
- node.js - NodeJs/Powershell 下载问题
- javascript - 为什么弹出窗口不显示滑块的值
- python - time.time() 或 time.perf_counter() — 哪个更快?
- java - 我在使用带有图的递归时遇到了很多麻烦。爪哇
- python - Python For Loop 执行意外数量的循环
- c# - 如何在 Unity 中使用 Q#?
- html - 网格结果水平呈现,而不是垂直呈现