gpt4 book ai didi

java - 使用 JasperReports 呈现任意 XHTML

转载 作者:行者123 更新时间:2023-12-01 05:59:35 42 4
gpt4 key购买 nike

我们已经将 JasperReports 嵌入到我们的应用程序中来生成报告,但我对 JEditorPaneHtmlMarkupProcessor 处理编写任意 XHTML 的方式相当不满意。例如,我需要在某一点输出一个项目符号列表,它确实做到了,但因为它将其转换为实际的项目符号字符和换行符,所以具有相当长文本的项目符号会导致文本换行与项目符号对齐,而不是与项目符号对齐。文本的第一个字母。

由于这个问题和类似的问题,我想我可以尝试将 XHTML 内容渲染为图形(使用 Flyingsaucer XHTML 渲染器)。这让我可以更好地控制它的外观,但仍然存在一个问题。根据 JasperReports 权威指南,“JasperReports 模板和生成的文档中的所有定位和大小调整都是使用默认的 Java 分辨率 72 dpi 执行的。”看来要渲染的各个字母需要位于整数坐标处。在 72 dpi 下,这没什么大不了的,因为最坏的情况下它相当于子像素定位错误,不会产生任何重大后果。然而,在渲染为 PDF 时,JasperReports 将其分辨率提高到 300 dpi,导致某些字母的水平位置有时会偏离多个像素。

是否有某种方法可以更好地呈现任意 XHTML,或者是否有某种方法可以使 JasperReports 以 300 dpi 而不是 72 执行定位和调整大小?

最佳答案

我最终通过使用不坚持完整字符位置的渲染器解决了这个问题:来自 Swing 的 JEditorPane:

JEditorPane pane = new JEditorPane();
pane.setBorder(null);
pane.setSize(w, h);
pane.setContentType("text/html");
pane.setEditable(false);
pane.setText(html);
pane.paint(g2);

关于java - 使用 JasperReports 呈现任意 XHTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1461485/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com