iText 7 使用相同的 CSS 样式表生成具有两种页面大小的报告,具有最小宽度和最大宽度功能



我正在尝试使用iText 7将HTML报告转换为两种不同的页面大小,这很方便,因为我可以使用以下设置页面大小:

PageSize pageSize = PageSize.A3; 
pdf.setDefaultPageSize(pageSize);

但我试图在CSS样式上应用一个技巧,因为我需要根据页面大小覆盖一些类,例如A3>>表的字体大小为12pt,而LETTER>>表的字号为6pt。这份报告包含了大量的数据,我必须将它们放在两种尺寸内。LETTER大小确实很有挑战性,我使用%作为字体大小,但由于内容是动态的,有时显示的结果报告会从右侧修剪,甚至忽略@Page选择器中的边距指定,这就是为什么我需要在没有%的情况下指定它以避免此类问题。此外,我正试图通过仅用一张纸覆盖样式来完成这项任务。经过搜索,我发现了一个@media最酷的功能,使用最小宽度和最大宽度功能如下:

@media only print and (min-width: 500px) and (max-width: 700px){
body {
background-color: yellow;
}
.box-table td, th {
font-size: 6pt;
}
} 
@media only print and (min-width: 800px) and (max-width: 900px){
body {
background-color: green;
}
.box-table td, th {
font-size: 12pt;
}
} 

酷!!它作为IF语句工作,其中一个语句应该在此时启动。我用screen元素测试了它,它应用得很好,但在iText 7中,只有最后一句话适用于两种尺寸。那么,我错过了什么?我正在尝试使它与iText 7 PDF一起工作?有什么想法或建议吗?

谢谢。

媒体设备和媒体设备描述不是由pdfHTML自动创建或拾取的,因此需要使用ConverterProperties:手动配置

MediaDeviceDescription deviceDescription = new MediaDeviceDescription(MediaType.PRINT)
.setWidth(PageSize.A3.getWidth());
ConverterProperties properties = new ConverterProperties().setMediaDeviceDescription(deviceDescription);
HtmlConverter.convertToPdf(..., ..., properties);

最新更新