2011-01-19 18 views
1

Я обнаружил проблемы с Adobe Reader и Drag & Функция Drop для простого текста.Adobe Reader Text Drag & Drop issue

Когда я просто выбираю текст и переношу его в некоторые из моих приложений .NET (или любого текстового редактора, например блокнота ++ или VisualStudio), текст получает случайные символы, прикрепленные к нему.

я старался и наблюдал эту проблему и, насколько мое наблюдение идет, я могу сказать следующее:

  1. Это не случилось дважды ти и того же текста, выбранного для перетаскивания.
  2. Прилагаемый текст всегда имеет длину всего несколько символов (по крайней мере, десять)
  3. Иногда кажется, что прикрепленные символы являются фрагменты текста dargged и упал ранее
  4. Некоторые другие времена, прикрепленные символы не алфавитно-цифровой символы, что делает его трудно распознать
  5. Выделенный текст может быть где угодно (не только целый абзац)

Я сравниваю сброшенный текста с другими текстами в моем приложении, и это явно не удается, так как есть некоторые символы, которые Я не тащил д.

На стороне .NET я использую стандартный интерфейс IDataObject и пробовал несколько форматов, но поведение всегда одно и то же. Его можно воспроизвести, но это не предсказуемо, потому что оно происходит случайным образом.

Так что мои вопросы: Является ли это проблемой для заполнения буфера Adobe Reader (кстати, это происходит в версии 8,9, X с отключенным безопасным режимом)? Эта зависимость зависит от того, какая программа сторонних разработчиков создала PDF-файл? У кого-то было такое же поведение (так как я ничего не могу найти на этом)?

Заранее, я не должен говорить, что другой PDF-Reader не является вариантом, потому что здесь существует бизнес-политика :).

Большое спасибо заранее за того, кто мог ответить на эти вопросы.

+0

Возможно, ваш файл PDF просто закодирован? –

+0

Спасибо за ответ, но это не предмет кодирования/декодирования, потому что весь текст похож на его перетаскивание, за исключением прикрепленных символов, и это было бы предсказуемо каждый раз, когда я перетаскиваю, я думаю. –

+0

Это с 95% -ной ошибкой в ​​Adobe Reader. Нет никаких достойных способов испортить это с помощью IDataObject.Когда предприятие блокируется в конкретную версию определенного продукта, тогда им лучше получить контракт на поддержку с продавцом. –

ответ

2

дни и дни исследующие привели меня к следующему выводу:

Это ошибка с обеих сторон (самана/.Net). Сначала строка, содержащаяся в OleDataObject, вытащила Adobe Reader, не имеет нулевого конца, что является очень небезопасным способом обмена данными. Неудивительно, что эта функция отключена в стандартной конфигурации adobe reader X (но вы можете ее разблокировать). На стороне .Net каждая строка должна быть завершена для правильной работы. Ну, вы получаете указатель, и создается новый экземпляр строки, который пробегает память до тех пор, пока не найдет символ «\ 0» и добавит неправильные символы (или символы ранее перетаскиваемого текста). Решение этой проблемы состоит в том, чтобы запросить размер текстовой части, содержащейся в OleDataObject. Этот размер (очевидно, меньший или равный размеру строки результата) может использоваться для выполнения операции подстроки в исходной строке. Со всем этим в palce строка не имеет больше неправильных символов, прикрепленных к ней. -solved