ckeditor粘入word内容如何默认设置为保留样式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ckeditor粘入word内容如何默认设置为保留样式相关的知识,希望对你有一定的参考价值。
现在将word文档中的内容粘贴到ckeditor中好像默认了要去除内容样式,只保留了格式。。如何才能设置为保留样式啊,我现在用的是CKEditor3.6.2
参考技术A //保证word导入格式config.pasteFromWordRemoveFontStyles = false;
config.pasteFromWordRemoveStyles = false;
//是否强制复制来的内容去除格式
config.forcePasteAsPlainText =false; //不去除 参考技术B 保留不了的。追问
不是吧。。。我记得能保留啊
追答ckeditor编辑的内容其实就是html格式的文本,后台取到的也是包含html标签的文本,输出的时候原样输出就带格式了。
追问我的意思是我需要从MS word文档中复制内容粘贴到ckeditor编辑器中,并且要保留粘贴内容的样式,但是现在编辑器只能保留格式,而样式都被自动清除了,我想要的是不让编辑器清除粘贴内容的样式,我记得ckeditor好像有不清除粘贴样式的设置的,但是我却不知道在哪里设置
追答打开
\editor\plugins\pastefromword\filter\default.js
找到文件尾大概有这么一句代码
;CKEDITOR.cleanWord=function(h,i)if
(CKEDITOR.env.gecko)h=h.replace(/(([\S\s]*?))/gi,'$1$2$3');var j=new g
(),k=j.dataFilter;k.addRules
(CKEDITOR.plugins.pastefromword.getRules
(i));i.fire('beforeCleanWord',filter:k);try
h=j.toHtml(h,false);catch(l)alert
(i.lang.pastefromword.error);h=h.replace
(/cke:.*?".*?"/g,'');h=h.replace
(/style=""/g,'');h=h.replace
(//g,'');return h;;)();
这段JS代码正是清除word里的格式的作用,我们可以
修改为
;CKEDITOR.cleanWord=function(h,i)return h;if
(CKEDITOR.env.gecko)h=h.replace(/(([\S\s]*?))/gi,'$1$2$3');var j=new g
(),k=j.dataFilter;k.addRules
(CKEDITOR.plugins.pastefromword.getRules
(i));i.fire('beforeCleanWord',filter:k);try
h=j.toHtml(h,false);catch(l)alert
(i.lang.pastefromword.error);h=h.replace
(/cke:.*?".*?"/g,'');h=h.replace
(/style=""/g,'');h=h.replace
(//g,'');return h;;)();
已经测试过了,完全正确!
没有问题,现在能粘进去了,分是你的啦^_^
但是这样做有没有隐患啊,config有一个pasteFromWordRemoveStyles属性,我将
我再config.js中这样设置
CKEDITOR.editorConfig = function (config)
config.pasteFromWordRemoveStyles = false;
;
可貌似这个属性不起作用。。不知道为什么。。。
从MS Word复制并粘贴到CKEditor中
我有一个单词文档,只包含两个单词“Hello to”。这实际上是原始文档的简化版本。此文本的字体系列是Calibri(正文)。我没有注意到word文档中这两个单词之间格式的差异。
尝试将此文本复制并粘贴到ckeditor时,“Hello”的font-family被正确保存为Calibri,但单词“to”的字体系列错误地更改为Arial。我不明白为什么它也不保留“to”文本的字体系列。
这是我的config.js:
CKEDITOR.editorConfig = function( config ) {
config.pasteFromWordRemoveStyles = false;
config.pasteFromWordRemoveFontStyles = false;
};
这是粘贴文本时ckeditor中的源HTML:
<p><span style="font-size:10pt"><span style="font-family:calibri">Hello </span>to</span></p>
word文档可从以下链接下载:
http://s000.tinyupload.com/?file_id=00848535251570855827
使用IE 11,上述行为是显而易见的。请有人可以协助吗?
恕我直言,下面有一些修改会做。
config.forcePasteAsPlainText = false;
config.pasteFromWordRemoveFontStyles = false;
config.pasteFromWordRemoveStyles = false;
config.allowedContent = true;
config.extraAllowedContent = 'p(mso*,Normal)';
config.pasteFilter = null;
这肯定会奏效
CKEDITOR.config.forcePasteAsPlainText = false;
CKEDITOR.config.pasteFromWordRemoveFontStyles = false;
CKEDITOR.config.pasteFromWordRemoveStyles = false;
CKEDITOR.config.allowedContent = true;
CKEDITOR.config.extraAllowedContent = 'p(mso*,Normal)';
CKEDITOR.config.pasteFilter = null;
谢谢
以上是关于ckeditor粘入word内容如何默认设置为保留样式的主要内容,如果未能解决你的问题,请参考以下文章