iText 7 使用具有最小宽度和最大宽度功能的相同 CSS 样式 sheet 生成具有两种页面大小的报告
iText 7 generate report with two page sizes using the same CSS Styling sheet with min-width & max-width features
我正在尝试使用 iText 7 将 HTML 报告转换为两种不同的页面大小,这很方便,因为我可以使用以下方法设置页面大小:
PageSize pageSize = PageSize.A3;
pdf.setDefaultPageSize(pageSize);
但我正在尝试在 CSS 样式上应用一个技巧,因为我需要根据页面大小覆盖一些 类,例如 A3 >> table 字体大小 = 12pt 而在 LETTER >> 中 table 字体大小 = 6pt。该报告包含大量数据,我必须将它们放入两种尺寸中。 LETTER 大小真的很有挑战性,我使用 % 作为字体大小,但由于内容是动态的,有时显示的结果报告从右侧修剪,甚至忽略了 @Page 选择器中的边距规范,这就是为什么我需要在没有 % 的情况下指定它避免这样的问题。此外,我试图通过仅使用一个 sheet 覆盖样式来完成此任务。搜索后,我通过使用 min-width 和 max-width 功能遇到了一个@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 语句工作,其中一个应该在当时触发。我用屏幕元素测试了它,它完美地应用了,但是对于 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);
我正在尝试使用 iText 7 将 HTML 报告转换为两种不同的页面大小,这很方便,因为我可以使用以下方法设置页面大小:
PageSize pageSize = PageSize.A3;
pdf.setDefaultPageSize(pageSize);
但我正在尝试在 CSS 样式上应用一个技巧,因为我需要根据页面大小覆盖一些 类,例如 A3 >> table 字体大小 = 12pt 而在 LETTER >> 中 table 字体大小 = 6pt。该报告包含大量数据,我必须将它们放入两种尺寸中。 LETTER 大小真的很有挑战性,我使用 % 作为字体大小,但由于内容是动态的,有时显示的结果报告从右侧修剪,甚至忽略了 @Page 选择器中的边距规范,这就是为什么我需要在没有 % 的情况下指定它避免这样的问题。此外,我试图通过仅使用一个 sheet 覆盖样式来完成此任务。搜索后,我通过使用 min-width 和 max-width 功能遇到了一个@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 语句工作,其中一个应该在当时触发。我用屏幕元素测试了它,它完美地应用了,但是对于 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);