【问题标题】:why both pdfbox and pdfrenderer can not support "Additional fonts"?为什么 pdfbox 和 pdfrenderer 都不能支持“附加字体”?
【发布时间】:2026-02-04 11:05:02
【问题描述】:

我有一个包含“UniCNS-UCS2-H”字体的 pdf, 我尝试了 pdfbox 和 pdfrenderer,它们都抛出异常: 'UniCNS-UCS2-H' 的未知编码

并且这个字体被包含在一个字体文件中:mingliu.ttc(它是一个真正的类型集合文件,我不知道这有关系吗?

我该怎么做才能让这两个库支持额外的字体?

【问题讨论】:

  • 我从没用过 pdfbox ,但是用 iText 添加新字体很容易

标签: java fonts pdfbox pdfrenderer


【解决方案1】:

PDF 文档中字体的编码在字体字典对象中指定。您遇到的字体是使用“UniCNS-UCS2-H”编码的,据我所知是中文编码的变体。

PDFBox 仅支持 4 种编码:

  1. PDFDocEncoding
  2. MacRomanEncoding
  3. 标准编码
  4. WinAnsiEncoding

这些是在 pdf 流内的字体字典对象中定义的
(例如.../Encoding/WinAnsiEncoding/...

当PDFBox遇到未知编码时,会显示您报告的异常。

有关 PDF 文档中字体的更多信息,请参阅PDF Specification 的第 9.5 至 9.8 节

【讨论】: