如何通过保留已定义的样式将Word中的文本粘贴到纯文本?

时间:2011-07-27 16:34:52

标签: javascript ckeditor wysiwyg

我想让用户将文本粘贴到编辑器(当前是CKEditor)。通过粘贴文本,必须删除所有未列入白名单的样式和元素,包括图像,表格等。因此,90%应转换为纯文本或删除,同时应保留粗体,斜体或下划线等简单样式。

没想到那么复杂。但是我在文档和CKEditor的示例中找到的只是粘贴完整的纯文本或粘贴Word中的清理内容而无法配置白名单(即使我删除了所有与表相关的插件,它仍然可能从MS WorD粘贴表格。

我真的非常感谢任何提示。

感谢。

3 个答案:

答案 0 :(得分:3)

你不能不写自己的解析器。另一个问题是MS word使用Windows-1252字符编码,大多数网络使用UTF-8编码,所以如果你从WORD粘贴并通过AJAX传输这些数据,它将会出现乱码。

虽然Dreamweaver有一个非常好的“粘贴词”功能,但你不太可能找到一个在线等效词。这是一个巨大而复杂的问题,本身就是一个应用程序。即使WORD的“另存为HTML”也无法做得不错。

可悲的是,最需要做的是将它全部删除到ASCII(粘贴到记事本中),将它放在编辑器中并将其标记回来。

答案 1 :(得分:1)

您可以在编辑器实例中为“粘贴”事件添加侦听器:http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#event:paste

通过这种方式,您可以获得要粘贴的HTML,并且可以执行所需的任何清理(例如,基于将该html插入div,然后使用DOM,或使用字符串上的regexp)。 / p>

答案 2 :(得分:0)

找到解决方案:

  1. 在AlfonsoML写道时收听粘贴事件。
  2. 将粘贴的Word内容发送到服务器。
  3. 使用HTML Agility Pack解析它。
  4. 将其发回给客户。
  5. 将其插入编辑器中。