Delphi acrobat如何对添加为PDF便笺的注释进行编码?
多年来,我们一直在应用程序中通过activex控件向PDF阅读和撰写便笺/注释/评论。我们最近升级到Delphi2009,支持Unicode。以下是导致问题的原因 当我们打电话时 CAcroPDAnnot.GetContents 结果似乎很奇怪,我们丢失了Unicode字符。这不像保存为ansi字符串,通常会导致返回?????相反,我们得到一个字符串,比如 ÉsÉÉÉ•-Ž×ðÐ 对于一个日语字符字符串 但是,如果我通过pdf本身的菜单将pdf中的注释保存到数据文件中,它会像这样写入文件中 0kˆL0Oeå0k¨0'r0d0_0€ 后者可以导出并重新导入到acrobat pdf中,并将重新创建正确的unicode字符。但是,一旦我在代码中调用CAcroPDAnnot.GetContents,它就会以其他形式返回Delphi acrobat如何对添加为PDF便笺的注释进行编码?,delphi,delphi-2009,acrobat,Delphi,Delphi 2009,Acrobat,多年来,我们一直在应用程序中通过activex控件向PDF阅读和撰写便笺/注释/评论。我们最近升级到Delphi2009,支持Unicode。以下是导致问题的原因 当我们打电话时 CAcroPDAnnot.GetContents 结果似乎很奇怪,我们丢失了Unicode字符。这不像保存为ansi字符串,通常会导致返回?????相反,我们得到一个字符串,比如 ÉsÉÉÉ•-Ž×ðÐ 对于一个日语字符字符串 但是,如果我通过pdf本身的菜单将pdf中的注释保存到数据文件中,它会像这样写入文件中 0k
谢谢好的,Delphi 2009和早期版本之间的主要区别之一是默认字符串类型是unicode字符串。这意味着如果您使用与早期版本相同的ActiveX组件,则将unicode字符串传递给ascii字符串,这通常不是一个好主意 此问题有两种解决方案:
- 如果可以升级activeX组件以使其支持完整的unicode字符串,请尝试
- 使用AnsiString和not string与activeX组件通信。在这种情况下,您仍然可以使用旧的接口,但仍然受到相同的限制
- 使用另一个创建pdf的控件。有很多东西需要查找,但要准备好更改软件的大部分内容。(有些控件是基于XML的,并且使用编码。)
- 它应该是什么样子(以及它在读卡器内部看起来是什么样子)
- 使用2009年以前版本的Delphi时返回的内容*
- 使用Delphi 2009时返回的内容*
- 您并没有给我们提供很多信息
我想你在这里谈论的是“Acrobat.CAcroPDAnnot”类的GetContents方法。你使用的是哪一版本的Acrobat?在开始使用Delphi 2009编程时,你是否切换过版本(或运行更新)
然后:您是如何实例化该对象的?如果使用从DLL生成的*\u TLB.pas文件,您确定它仍然匹配吗?(如果不确定,请尝试重新生成它)
第三:您如何调用该方法?您将结果分配给哪种类型的变量
如果您可以提供注释的示例(最好包括非ASCII字符),那么也可能有所帮助;对于该注释:
我不知道Delphi为读取编码提供了什么,但是您是否已经从“控制面板”->“区域选项”->“东亚语言安装文件”中获得了Windows中安装的Shift JIS编码选项?如果没有,这也许可以解释为什么它无法自动转换。只是暗中猜测。CAcroPDAnnot.GetContents上的返回类型是什么,您以前是如何管理的?ansi便笺是否仍然有效?我想知道这些便笺是否以UTF-8的形式返回,因此您必须稍微不同地处理它们在Delphi 2009中。我们以前不需要管理它,因为它是ascii字符和未编码的。我可能在2009年必须以不同的方式处理它,但到目前为止,我不知道如何处理它。