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

iText lowagie 2.1.7版本PDF导出时简繁体中文无法转换问题咨询

iText 2.1.7(lowagie)PDF导出中文不显示问题解决方案

问题根因

iText 2.1.7内置的默认字体仅支持拉丁字符集,法语、西班牙语、意大利语等西欧语言字符都属于该集合可直接渲染,而简体中文、繁体中文属于CJK字符集,默认没有绑定适配的字体,因此导出后中文会显示为空白或方框。

具体解决步骤

  • 第一步:准备适配中文的字体文件
    可以选用开源可商用的中文字体,比如思源黑体、思源宋体,也可使用系统自带的宋体、黑体、微软雅黑(商用需确认版权),获取字体的.ttf或.ttc格式文件即可。
  • 第二步:代码中引入自定义中文字体
    不要使用iText默认的无字体参数的FontFactory.getFont调用方式,显式加载你准备好的中文字体,示例代码如下:
    // 第二个参数BaseFont.IDENTITY_H是CJK字符渲染必填参数,代表使用Unicode横向编码
    // 第三个参数设为true代表嵌入字体,可保证PDF在任意设备打开都能正常显示中文
    BaseFont baseFont = BaseFont.createFont("你的字体文件存储路径/SourceHanSansCN-Regular.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    Font cnFont = new Font(baseFont, 12, Font.NORMAL);
    // 后续所有包含中文的文本,都绑定这个cnFont渲染即可
    Paragraph paragraph = new Paragraph("待导出的简体/繁体中文内容", cnFont);
    document.add(paragraph);
    
  • 第三步:繁体中文适配
    无需单独做特殊配置,只要选用的字体文件覆盖了需要的繁体字符,即可同时正常渲染简繁中文内容。

注意事项

  • 如果是web项目打包部署,建议把字体文件放到项目资源目录下,加载时用类路径读取,避免部署后路径找不到的问题。
  • 字体嵌入设为true会略微增加PDF文件的体积,如果确定打开PDF的设备都安装了对应字体,可设为false减小文件体积。
  • 2.1.7属于lowagie版本的iText,已经停止维护多年,有条件的话建议升级到社区维护分支OpenPDF或更高版本的iText 7,后续CJK字符适配会更便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 19:39:03