我发现了Adobe Reader的问题以及简单文本的拖放功能。
当我只选择一些文本并将其放入我的一些.NET应用程序(或任何texteditor,如notepad ++或VisualStudio)时,文本会附加随机字符。
我努力并观察了问题,就我的观察而言,我可以说以下内容:
我将删除的文本与我的应用程序中的其他文本进行比较,这显然是失败的,因为有些字符我没有被拖动。
在.NET方面,我使用标准的IDataObject接口并尝试了多种格式,但行为始终是相同的。它可以复制,但不可预测,因为它是随机发生的。
所以我的问题是: 这是Adobe Reader的缓冲区填充问题(顺便说一句,它发生在版本8,9,X是否已关闭安全模式)? 这取决于哪个第三方程序创建了pdf? 是否有人经历过相同的行为(因为我对此没有任何反应)?
事先我必须说没有其他pdf-Reader是一个选项,因为这是一个商业政策:)。
非常感谢能够回答这个问题的人。
答案 0 :(得分:2)
研究的日子和日子使我得出以下结论:
这是双方的一个错误(adobe / .Net)。首先,从Adobe Reader拖出的OleDataObject中包含的字符串不会以空终止,这是一种非常不安全的交换数据的方式。难怪这个功能在adobe reader X的标准配置中被关闭(但你可以解锁它)。在.Net端,必须终止每个字符串才能正常工作。好吧,你得到一个指针,并创建一个新的字符串实例,它贯穿内存,直到找到'\ 0'字符并添加错误的字符(或以前拖动的文本的字符)。这个混乱的解决方案是查询OleDataObject中包含的文本部分的大小。此大小(显然小于或等于结果字符串大小)可用于对原始字符串执行子字符串操作。在所有这些中,字符串不再附加错误的字符。 -solved