代码之家  ›  专栏  ›  技术社区  ›  Robert J. Walker

使用JasperReports呈现任意XHTML

  •  1
  • Robert J. Walker  · 技术社区  · 15 年前

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

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

    1 回复  |  直到 15 年前
        1
  •  0
  •   Robert J. Walker    15 年前

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