我们已将 JasperReports 嵌入到我们的应用程序中以生成报告,但我对 JEditorPaneHtmlMarkupProcessor 处理编写任意 XHTML 的方式相当不满意。例如,我需要在某一点输出一个项目符号列表,它确实这样做了,但是因为它将它转换为实际的项目符号字符和换行符,具有相当长文本的项目符号导致文本换行以与项目符号对齐,而不是与文本的第一个字母。
由于这个问题和类似的问题,我想我可以尝试将 XHTML 内容渲染为图形(使用 flysaucer XHTML 渲染器)。这让我可以更好地控制它的外观,但仍然存在一个问题。根据JasperReports 权威指南,“JasperReports 模板和生成的文档中的所有定位和调整大小都是使用默认的 Java 分辨率 72 dpi 执行的。” 看来要渲染的单个字母需要定位在整数坐标上。在 72 dpi 时,这没什么大不了的,因为它在最坏的情况下相当于亚像素定位错误,没有任何重大后果。但是,当呈现为 PDF 时,JasperReports 将其放大到 300 dpi,导致某些字母的水平位置有时会偏离多个像素。
有什么方法可以更好地呈现任意 XHTML,还是有什么方法可以让 JasperReports 以 300 dpi 而不是 72 dpi 执行其定位和调整大小?