OFD 类型的发票文件在系统里在线预览时几乎全是乱码。第一眼看到截图我脑子里立刻蹦出三个字缺字体。第一坑我太相信“经验判断”了现场环境是Windows Server那问题就更合理了。于是我直接从公司测试环境打包了一份fonts目录让现场运维复制到 C:\Windows\Fonts 然后重启后端服务这个操作我以前用过不止一次成功率很高。结果呢运维回复还是不行。到这一步其实已经是个信号了 --如果真是字体问题不会一点改善都没有。第二坑跨平台表现迷惑性极强既然“玄学方案”不行那就要原始 OFD 文件自己跑一遍。结果非常有意思Mac 本地运行 只有两三处乱码公司 Windows Server 和现场一模一样大片乱码这一下直接把我绕进去了。同一份代码、同一份 OFD不同系统结果完全不同。如果你在这一步停下来大概率会继续死磕“系统字体”。我也差点。第三坑我把希望寄托在“字体映射”上项目里用的是ofdrw做 OFD → PDF 转换。我翻了一下 API很快锁定几个“看起来就很对”的方法addAliasMapping字体别名映射loadExternalFont加载外部字体于是开始各种组合尝试映射宋体映射 Courier New手动加载 ttf / ttc结论只有一个完全没用。这时候我才意识到一个问题也许问题根本不在“字体缺没缺”。真正的原因ofdrw 版本太老了没办法只能去翻ofdrw 官方仓库和 issues。结果在 issues 里看到一句话直接点醒了我升级到 2.x再一看项目当前使用ofdrw 1.x官方最新2.x老实说我当时是有点犹豫的。大版本升级谁心里不慌但继续往下翻看到了作者的这段说明这段真的很关键看到这句话我直接下定决心不折腾字体了升级。解决方案只改了一行依赖升级到当前最新版本2.3.7implementation (org.ofdrw:ofdrw-full:2.3.7) { exclude group: org.apache.logging.log4j, module: log4j-slf4j-impl }然后重启项目上传 OFD打开在线预览结果✅ 乱码消失✅ 无需额外字体✅ Mac / Windows Server 表现一致复盘一下这次我踩了哪几个坑如果你以后也遇到 OFD 预览乱码可以直接对照太相信“字体缺失”这个经验结论被 Mac 正常、Windows 异常的现象误导在 ofdrw 1.x 上浪费时间折腾字体映射忽略了库版本本身的历史问题真正有效的一句话总结是ofdrw 1.x 遇到乱码别折腾字体直接升 2.x。最后一句很多线上问题看起来是“环境问题”“配置问题”