【问题标题】:Adobe Reader Text Drag&Drop issueAdobe Reader 文本拖放问题
【发布时间】:2011-01-19 13:26:34
【问题描述】:

我发现 Adob​​e Reader 和简单文本的拖放功能存在问题。

当我简单地选择一些文本并将其放入我的一些 .NET 应用程序(或任何文本编辑器,如 notepad++ 或 VisualStudio)中时,文本会附加随机字符。

我很努力地观察了这个问题,就我的观察而言,我可以说以下几点:

  1. 选择相同的文本进行拖动不会发生两次。
  2. 附加的文字总是只有几个字符(至少十个)
  3. 有时,附加的字符似乎是较早删除和删除的文本片段
  4. 有时附加的字符不是字母数字字符,因此难以识别
  5. 所选文本可以在任何地方(不仅仅是整个段落)

我将删除的文本与我的应用程序中的其他文本进行比较,这显然失败了,因为有些字符我没有拖动。

在 .NET 方面,我使用标准 IDataObject 接口并尝试了多种格式,但行为始终相同。它可以被复制,但它是不可预测的,因为它是随机发生的。

所以我的问题是: 这是 Adob​​e Reader 的缓冲区填充问题(顺便说一句,它发生在版本 8,9 中,X 关闭了安全模式)? 这是否取决于哪个第三方程序创建了 pdf? 有人经历过同样的行为吗(因为我对此一无所知)?

我必须提前说没有其他 pdf-Reader 是一个选项,因为它是这里的商业政策:)。

非常感谢能回答这个问题的人。

【问题讨论】:

  • 也许您的 PDF 文件只是被编码了?
  • 感谢您的回复,但它不是一个编码/解码的东西,因为整个文本就像它已被拖动,除了附加的字符外,我猜每次拖动时这都是可以预测的。
  • 这是 95% 的概率是 Adob​​e Reader 中的错误。没有像样的方法可以用 IDataObject 来解决这个问题。当企业将自己锁定在特定产品的特定版本中时,他们最好与供应商签订支持合同。
  • 那太糟糕了。我想我可以在不去业务关系或支持人员的情况下解决这个问题。
  • 经过日复一日的研究,我得出以下结论:

标签: c# .net drag-and-drop adobe-reader acrobat


【解决方案1】:

日复一日的研究让我得出以下结论:

这是双方的错误 (adobe/.Net)。起初,从 Adob​​e Reader 拖出的 OleDataObject 中包含的字符串不是以空结尾的,这是一种非常不安全的数据交换方式。难怪adobe reader X的标准配置中关闭了这个功能(不过可以解锁)。在.Net 端,每个字符串都必须终止才能正常工作。好吧,您会得到一个指针,并创建一个新的字符串实例,该实例在内存中运行,直到找到“\ 0”字符并添加错误的字符(或先前拖动的文本的字符)。解决这个问题的方法是查询 OleDataObject 中包含的文本部分的大小。这个大小(显然小于或等于结果字符串大小)可用于对原始字符串进行子字符串操作。有了所有这些,字符串就没有附加的错误字符了。 - 解决了

【讨论】:

    猜你喜欢
    • 2012-09-24
    • 1970-01-01
    • 2021-02-21
    • 2012-02-13
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多