You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jasper Report HTML列表导出PDF时对齐异常问题求助

问题描述

我有一个HTML列表,在Jaspersoft Studio预览中显示完全正常:
Jaspersoft Studio预览效果
但使用JasperReports 6.16.0版本从Java导出为PDF文件时,对齐完全混乱,甚至编号之间都无法对齐:
PDF导出后的错误效果

以下是我的代码:

<staticText>
    <reportElement x="33" y="30" width="517" height="270" forecolor="#010203" uuid="095f9844-3f02-4ec3-a807-0ae4a57ff5ea"/>
    <textElement textAlignment="Justified" markup="html">
        <font fontName="DejaVu Sans Mono" size="12" isBold="false" isItalic="false"/>
    </textElement>
    <text><![CDATA[
        <ol>
        <li>...</li>
        <li>...:
        <ol>
        <li>...</li>
        <li>...</li>
        <li>...</li>
        <li>...</li>
        </ol>
        </li>
        </ol>
        ]]></text>
</staticText>

我尝试过相关缩进解决方案但没有效果,请问有什么建议吗?

解决方案建议

1. 确保字体一致性与可用性

PDF导出时若字体被替换,很可能导致排版错乱。可以:

  • 在导出配置中明确指定字体文件路径,避免JasperReports自动替换字体:
HashMap<String, Object> exportParams = new HashMap<>();
exportParams.put(JRPdfExporterParameter.FONT_MAP, new HashMap<String, String>() {{
    put("DejaVu Sans Mono", "path/to/DejaVuSansMono.ttf");
}});
  • 更换为PDF排版兼容性更好的字体,比如Arial Unicode MS,测试是否解决对齐问题。

2. 给HTML列表添加显式CSS样式

在CDATA的HTML代码中直接定义缩进样式,覆盖JasperReports的默认处理逻辑:

<ol style="margin-left: 2.5em; padding-left: 0;">
    <li style="margin-left: 0; padding-left: 0;">...</li>
    <li style="margin-left: 0; padding-left: 0;">...:
        <ol style="margin-left: 2em; padding-left: 0;">
            <li style="margin-left: 0; padding-left: 0;">...</li>
            <!-- 其他子列表项 -->
        </ol>
    </li>
</ol>

3. 调整导出参数与文本对齐方式

  • 关闭两端对齐,将textAlignment从Justified改为Left,测试是否是两端对齐导致的布局偏移:
<textElement textAlignment="Left" markup="html">
  • 开启PDF标签化导出,帮助结构化内容的排版对齐:
exportParams.put(JRPdfExporterParameter.PDF_TAGGED, Boolean.TRUE);

4. 升级JasperReports版本

6.16.0版本存在HTML转PDF的已知排版问题,升级到6.20.0及以上的稳定版本,新版本通常会修复这类兼容性问题。

内容的提问来源于stack exchange,提问作者Accollativo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:45:37