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内容如何默认设置为保留样式的主要内容,如果未能解决你的问题,请参考以下文章

CKEditor导出为word文档

如何在 CKEditor 所见即所得编辑器中保留换行符

WORD表格复制到excel中,如何保留小数点后最后的零

从MS Word复制并粘贴到CKEditor中

怎么实现将word中的公式导入(或粘贴)到编辑中ckeditor

我可以从Word粘贴纯文本并在CKEditor中启用粗体,斜体按钮吗?