@
mw2c #15 @
tabris17 我刚才做了几个实验,猜测找到了原因:
我使用 WPS 先生成 word ,再将 word 转成 PDF 。使用的是思源宋体:
然后使用 Python 脚本读取 PDF 内容和 Unicode 编码值:
发现 WPS 生成 PDF 的文字是正常的「 4e59 」编码!
对比之下,我之前使用 itext 生成的 PDF 。使用的是思源宋体:
使用 Python 脚本读取 PDF 内容和 Unicode 编码值:
这个 PDF 的文字是异常的「 2f04 」编码!
所以猜测可能就是 itext 的 bug:
1. 对于共用字型的字体,如:2f04 和 4e59 ,字型为「⼄」和「乙」。
2. itext 程序的 bug ,导致了在使用 html 生成 PDF 的过程中
3. 首先 html 文本传入的是 4e59 ,然后 itext 根据 4e59 找到了字体「乙-2f04/4e59 」
4. 然后写入生成 PDF 的过程中,使用了「乙」的字型,但错误的使用了 2f04 的 Unicode 编码!
a. 对于 WPS 来说没有这个问题,会使用 4e59 的 Unicode 编码。
5. 所以原因,还是 itext 的问题! [至于具体的原因,还得 debug 去看了;看了半天没看出来逻辑在哪里...] !
a. 初步推测,itext 根据 4e59 找到了字体「乙-2f04/4e59 」,然后写入 PDF 时写入了「乙-2f04 」,很可能就是获取了第一个 Unicode 编码值!而 WPS 可能是写入了「乙」,然后 Unicode 编码值则从原始文本获取,这样就关联正确了!