使用带有动态页眉和页脚的 itext7 将 HTML 模板转换为 PDF
Convert HTML Template to PDF using itext7 with dynamic header & footer
我尝试使用下面的 HTML 模板通过 iText7 将其转换为 PDF,但页眉和页脚都没有绑定到它们的预期位置。
used example
我试图避免 @Page 页眉和页脚属性,因为我试图在两个部分中完成适合动态内容,每个部分扩展 space 超过 3 行。
iText代码和结果:
ConverterProperties properties = new ConverterProperties();
//properties.setFontProvider(fontProvider);
properties.setMediaDeviceDescription(new MediaDeviceDescription(MediaType.PRINT));
PdfWriter writer = new PdfWriter("out.pdf");
PdfDocument pdf = new PdfDocument(writer);
pdf.setTagged();
PageSize pageSize = PageSize.LETTER;
pdf.setDefaultPageSize(pageSize);
OutlineHandler outlineHandler = OutlineHandler.createStandardHandler();
properties.setOutlineHandler(outlineHandler);
//html template (templateOutput)
HtmlConverter.convertToPdf(templateOutput, pdf, properties);
byte[] pdfData = byteArrayOutputStream.toByteArray();
pdf.close();
请问有什么解决问题的建议吗?
谢谢
这是 pdfHTML
正确处理的 HTML 示例,多行 header 按预期完全显示在页面顶部:
<!DOCTYPE html>
<html>
<head>
<style>
#header {
position: running(header);
}
@page {
margin-top: 100px;
@top-center {
content: element(header);
}
}
</style>
</head>
<body>
<div id="header">Header line 1<br/>Header line 2<br/>Header line 3</div>
<p>Content of the page</p>
</body>
</html>
生成的 PDF 中的页面如下所示:
我尝试使用下面的 HTML 模板通过 iText7 将其转换为 PDF,但页眉和页脚都没有绑定到它们的预期位置。 used example 我试图避免 @Page 页眉和页脚属性,因为我试图在两个部分中完成适合动态内容,每个部分扩展 space 超过 3 行。
iText代码和结果:
ConverterProperties properties = new ConverterProperties();
//properties.setFontProvider(fontProvider);
properties.setMediaDeviceDescription(new MediaDeviceDescription(MediaType.PRINT));
PdfWriter writer = new PdfWriter("out.pdf");
PdfDocument pdf = new PdfDocument(writer);
pdf.setTagged();
PageSize pageSize = PageSize.LETTER;
pdf.setDefaultPageSize(pageSize);
OutlineHandler outlineHandler = OutlineHandler.createStandardHandler();
properties.setOutlineHandler(outlineHandler);
//html template (templateOutput)
HtmlConverter.convertToPdf(templateOutput, pdf, properties);
byte[] pdfData = byteArrayOutputStream.toByteArray();
pdf.close();
请问有什么解决问题的建议吗? 谢谢
这是 pdfHTML
正确处理的 HTML 示例,多行 header 按预期完全显示在页面顶部:
<!DOCTYPE html>
<html>
<head>
<style>
#header {
position: running(header);
}
@page {
margin-top: 100px;
@top-center {
content: element(header);
}
}
</style>
</head>
<body>
<div id="header">Header line 1<br/>Header line 2<br/>Header line 3</div>
<p>Content of the page</p>
</body>
</html>
生成的 PDF 中的页面如下所示: