修改测试的ckeditor版本如下图所示
配置过滤js文件
首先打开 \editor\plugins\pastefromword\filter\default.js 在文件的最后部分又如下代码(修改前的代码),也可以搜索CKEDITOR.cleanWord进行定位。
修改前
- CKEDITOR.cleanWord = function (a, c) {
- CKEDITOR.env.gecko && (a = a.replace(/(<\!--\[if[^<]*?\])--\>([\S\s]*?)<\!--(\[endif\]--\>)/gi, "$1$2$3")); CKEDITOR.env.webkit &&
- (a = a.replace(/(class="MsoListParagraph[^>]+><\!--\[if !supportLists\]--\>)([^<]+<span[^<]+<\/span>)(<\!--\[endif\]--\>)/gi, "$1<span>$2</span>$3")); var b = new G, f = b.dataFilter; f.addRules(CKEDITOR.plugins.pastefromword.getRules(c, f)); c.fire("beforeCleanWord", { filter: f }); try { a = b.toHtml(a) } catch (d) { alert(c.lang.pastefromword.error) } a = a.replace(/cke:.*?".*?"/g, ""); a = a.replace(/style=""/g, ""); return a = a.replace(/<span>/g, "")
- }
- })();
修改后
- CKEDITOR.cleanWord = function (a, c) {
- return a; CKEDITOR.env.gecko && (a = a.replace(/(<\!--\[if[^<]*?\])--\>([\S\s]*?)<\!--(\[endif\]--\>)/gi, "$1$2$3")); CKEDITOR.env.webkit &&
- (a = a.replace(/(class="MsoListParagraph[^>]+><\!--\[if !supportLists\]--\>)([^<]+<span[^<]+<\/span>)(<\!--\[endif\]--\>)/gi, "$1<span>$2</span>$3"));
- var b = new G, f = b.dataFilter; f.addRules(CKEDITOR.plugins.pastefromword.getRules(c, f)); c.fire("beforeCleanWord", { filter: f });
- try { a = b.toHtml(a) } catch (d) { alert(c.lang.pastefromword.error) }
- a = a.replace(/cke:.*?".*?"/g, ""); a = a.replace(/style=""/g, "");
- a = a.replace(/<span>/g, ""); return a; }
- })();
即在开始加上return a;另网上有讲解3.X版本的word样式保留解答,那个版本的参数是h,所以是return h;(有兴趣的百度吧,很好找)
配置config文件
其次在Config.js(和ckeditor.js在一个文件夹下)中
添加代码一:
- config.allowedContent = true;
如果没有配置上面的属性,复制word内容后,格式是保留的,但是样式没有保留,只有加了后才会保留!!!
添加代码二:
- //保证word导入格式
- config.pasteFromWordRemoveFontStyles = false;
- config.pasteFromWordRemoveStyles = false;
- //是否强制复制来的内容去除格式
- config.forcePasteAsPlainText =false; //不去除
通过验证,无需明确的设置,保持默认或者不设置即可。
最终效果
Word测试内容
最终显示效果