Копирование текста из Microsoft Word в JTextPane

У меня есть текстовый редактор, который я создал с помощью JTextPane. Текст хранится в html, поэтому я использую HtmlEditorKit с JTextPane. Пользователь хочет иметь возможность копировать текст из документа Microsoft Word в текстовый редактор. Прямо сейчас, когда они пытаются скопировать текст в редактор, он просто ничего не делает, и текст не отображается. Но когда они копируют из Блокнота, это работает.

Есть ли что-то в JTextPane или HtmlEditorKit (или HtmlDocument), которое не позволяет вставлять текст из такой программы, как Word?
Есть ли способ обойти это?


person smith8ar    schedule 06.06.2014    source источник
comment
поиск по Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();   -  person mKorbel    schedule 06.06.2014
comment
Вы пробовали использовать selection объект Word? С его помощью вы можете программно выбирать диапазоны в документе и впоследствии копировать выделенный текст в буфер обмена. ссылка MSDN   -  person user3165438    schedule 08.06.2014
comment
См. Ответы на странице stackoverflow.com/questions/15611562/   -  person JasonPlutext    schedule 09.06.2014


Ответы (1)


Что ж, это сложный вопрос.

Word копирует текст в буфер обмена, используя разные форматы: text / plain, text / html, text / rtf и, возможно, внутренний формат Word. Все эти форматы одновременно находятся в буфере обмена. Таким образом, вы можете использовать каждый из них для вставки в текстовую область. Ваша текстовая панель пытается вставить текст из буфера обмена, используя формат HTML. Проблема в том, что HTMLEditorKit не может понять диалект HTML, созданный Word.

Что ты можешь сделать? Если вам не нужно поддерживать форматированный текст, вы можете реализовать собственное действие вставки, которое использует формат текста / плоскости. В другом случае у меня нет прямого решения, за исключением того, что вы можете написать свой собственный анализатор HTML (или RTF), который поддерживает HTML, сгенерированный Word.

person Sergiy Medvynskyy    schedule 06.06.2014