多年来,我们一直在通过应用程序中的 activex 控件读取和写入 pdf 便笺/注释/注释。我们最近升级到了支持 Unicode 的 Delphi2009。以下内容引起了问题。
当我们打电话时
CAcroPDAnnot.GetContents
结果似乎相当奇怪,我们丢失了 Unicode 字符。它不像保存为 ansi 字符串,通常会导致返回 ??????相反,我们得到一个字符串,例如
‚És‚‚ú‚É•—Ž×‚ð‚Ђ‚‚½‚ç
对于日语字符的字符串。
但是,如果我通过 pdf 本身的菜单将 pdf 中的注释保存到数据文件中,则会将其写入文件,如
0kˆL0Oeå0k~ª0’0r0D0_0‰
后者可以导出并重新导入到 acrobat pdf 中,并将重新创建正确的 unicode 字符。但是,一旦我在代码中调用 CAcroPDAnnot.GetContents,它就会以其他形式返回。
- CAcroPDAnnot.GetContents 是否损坏?
- 有我应该注意的编码方案吗?
- 我可以做其他选择吗?
谢谢
最佳答案
‚És‚“ú‚É•—Ž×‚ð‚Ђ¢‚½‚ç
这就是字符串:
に行く日に风邪をひいたら
采用 CP-932 又名 Shift-JIS 编码,这是一种糟糕但遗憾的是在日本仍然流行的编码。
您当前将其解释为 CP-1252(Windows 西欧)。如果您的 PDF 阅读组件无法自动转换,您需要找到一种方法来检测文档的编码并手动转换。
我不知道Delphi提供了哪些读取编码的方法,但是您是否通过“控制面板”->“区域选项”->“安装东亚语言文件”选项在Windows中安装了Shift-JIS的编码?如果没有,这也许可以解释为什么它无法自动转换。
关于delphi - acrobat 如何对作为便笺添加到 pdf 的注释进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/375321/