我们已经阅读和书写的便笺/说明/评论pdf通过件控制我们应用了数年。我们最近已经升级到Delphi2009与Unicode支持。以下是造成问题。

当我们呼

CAcroPDAnnot.GetContents

结果似乎是相当奇怪并且我们失去我们的Unicode字符。它不喜欢的节省作为一个ansi串通常会导致回?????相反,我们得到一串如

'和'"→'É•—Ž×'●'Ð'¢'½'ç

一串的日本人物。

然而,如果我保存的意见pdf一个数据文件通过的菜单在pdf本身就写入文件,因为喜欢的东西

0kˆL0Oeå0kª0'0r0D0_0‰

后者可以出口和重新导入成acrobat pdf格式,并将重新创造正确的unicode符。然而一旦我呼CAcroPDAnnot.GetContents在我的代码这是回来为别的东西。

  1. 是CAcroPDAnnot.GetContents坏了吗?
  2. 是否有一个方案编码我应该知道的吗?
  3. 是否有一个替代我能做什么?

感谢

有帮助吗?

解决方案

'和'"→'É•—Ž×'●'Ð'¢'½'ç

那是串:

に行く日に風邪をひいたら

在CP-932aka Shift-JIS encoding,一个可怕的,但令人遗憾的是仍然十分流行的编码。

你目前解释它在为CP-1252(Windows西欧).如果你PDF-阅读成分不会转换为你自动的,你会需要找到一种方法以检测是什么编码文件是在和将其转换手动。

我不知道什么Delphi提供用于阅读的编码,但是你有编码为Shift-JIS安装在窗户,从控制面板->区域的选项-->"安装用于东亚语言文件"的选择?如果没有,那或许可以解释为什么它就无法自动转换,也许。

其他提示

你不是给我们提供了很多信息的工作。

我想你们在谈论"的杂技演员。CAcroPDAnnot"类方法GetContents在这里。哪个版本的杂技演员,你用?你也许交换的版本(或运行更新)周围的时候你开始编程用德尔菲2009年?

然后:你怎么化的对象?如果使用一种*_TLB.考绩制度文件产生的问题,你一定的它仍然相匹配?(试着重新产生,如果不确定的).

第三:你是怎么叫的方法?什么类型的变你的分配结果?

什么也可能会有帮助,是的,如果你能提供一个样本的注解(最好包括非ASCII chars);和注释:

  • 是什么 应该 看起来像(什么它看起来像内部读者)
  • 什么它返回时使用预先-2009年版本的德尔菲*
  • 什么它返回时使用德尔菲2009*

(*优选的六角字节的代码(ansi/wide)串;但是输出的Ctrl-F7检查员应该做的)

然后也许有人可以提供一个更有意义的答案。

Ok,其中一个主要差异之间的特尔斐2009年和此前的版本是默认的串的类型是unicode串。这意味着,如果使用同一件组件在以前的版本,你是穿unicode串ascii strings,通常不是一个好主意。

有一对夫妇的解决方案这样的问题:

  • 尝试如果你可以升级件组件,以便它支持全unicode串。
  • 使用AnsiString和不串通件组成部分。在这种情况下,可以仍然使用旧的接口,但是你仍然能以同样的限制。
  • 使用其他控制,创建pdf。有很多,但是准备着改变一大块的软件。(一些控制是基于XML和使用的编码。)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top