导出事件
com.fr.js.ExportJavaScript#actionJS
富文本导出
com.fr.report.core.Html2ImageUtils#html2PdfContainer
换行逻辑
内置换行 DefaultAutoChangeLine
DefaultRotationTextDrawProvider
- 分行内容
- 修正行高 - 计算时
com.fr.report.core.cal.SE.Box2DCase#dealWithShrink
- 绘制逻辑
字体配置
-
com.fr.io.exporter.PDFExporter.MyFontMapper#awtToPdf
覆写的方法。查找字体
-
com.fr.io.exporter.PDFExporter#prepareFontMapper
插入字体
-
com.fr.io.exporter.PDFExporter#getDocument
创建文档
字体绘制
java.awt.FontMetrics#getAscent
获取字体基线往上的部分高度
java.awt.Font#pointSize
是实际上打印出来的高度,精度比较高为 float
java.awt.Font#size
精度比较低未 int
根据参数分 Sheet
将多个 Reportlet 合并成 com.fr.web.reportlet.GroupTemplateReportlet,然后进行导出
- ReportRequestService
- com.fr.web.factory.WebletFactory#createWebletByRequest
- com.fr.web.reportlet.GroupReportletCreator#createWebletByRequest
- OldWeblet 将处理参数,将 reportlets 转换成 viewlets , 并转发一次请求
- GroupTemplate 将组合每一个 Reportlets, 计算后,将结果表保存下来。
- com.fr.web.reportlet.GroupTemplateReportlet#createReport
问题
通过 scale 方式放大/缩小字体的效果
不同的行,宽度不一样?
需要研究一下。
FontMetrics 计算宽度差异
- chromius
- JDK 计算宽度
就很尴尬,都不完全一样。甚至 javafx
和 awt
算出来都不一样。就离谱。
那理论上肯定是要往高了算,这样才能不遮挡吧。
如果想要完全和前端一致的方案,那么是否可以用 j2v8 然后使用 前端字体方案 来展示呢