为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁花不似锦 2023-10-24 19:40:21
我正在尝试使用 iText 7 将 HTML 报告转换为两种不同的页面大小,这很方便,因为我可以使用以下方法设置页面大小:PageSize pageSize = PageSize.A3; pdf.setDefaultPageSize(pageSize);但我试图在 CSS 样式上应用一个技巧,因为我需要根据页面大小重写一些类,例如 A3 >> 表格字体大小 = 12pt,而在 LETTER >> 表格字体大小 = 6pt。该报告包含大量数据,我必须将它们放入两种尺寸中。字母大小确实具有挑战性,我使用 % 作为字体大小,但由于内容是动态的,有时显示的结果报告会从右侧修剪,甚至忽略 @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 一起使用?有什么想法或建议吗?
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

媒体设备和媒体设备描述不会自动创建或获取pdfHTML,因此您需要使用以下命令手动配置它ConverterProperties:


MediaDeviceDescription deviceDescription = new MediaDeviceDescription(MediaType.PRINT)

        .setWidth(PageSize.A3.getWidth());

ConverterProperties properties = new ConverterProperties().setMediaDeviceDescription(deviceDescription);

HtmlConverter.convertToPdf(..., ..., properties);


查看完整回答
反对 回复 2023-10-24
  • 1 回答
  • 0 关注
  • 81 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信