ckeditor 'paste from Word': 如果不是黑色则保留字体颜色

ckeditor 'paste from Word': retain font color if not black

我想去掉大多数从 Word 粘贴的字体样式,但如果字体颜色不是默认颜色(黑色),我有办法保留它们。这样,如果我的 Word 文档中的文本有一行红色文本,我就不会丢失它。

PasteFromWord 插件的配置选项包括一种在粘贴时保留 Word 字体样式的方法 (pasteFromWordRemoveFontStyles = false),但这为大量字体问题打开了大门。我只想让任何非默认字体颜色通过。

通过在 Word 中使用 H1-H6 样式,可以在很大程度上保留字体大小,但我不知道如何在 Word 中为红色文本设置样式并将其粘贴到 CKEditor。任何帮助或想法表示赞赏。谢谢

这里有一个小技巧,可以通过修改“从 Word 粘贴”插件来保留颜色样式。

首先,在您的 ckeditor 配置中打开样式过滤器:

config.pasteFromWordRemoveFontStyles = true;

现在,在 "ckeditor/plugins/pastefromword" 文件夹下,打开 "default.js"。

找到这段代码(撰写本文时为第 956 行):

// Assume MS-Word mostly carry font related styles on <span>,
// adapting them to editor's convention.
if ( styleText ) {
    attrs.style = stylesFilter( [
        // Drop 'inline-height' style which make lines overlapping.
        [ 'line-height' ],
        [ ( /^font-family$/ ), null, !removeFontStyles ? styleMigrateFilter( config.font_style, 'family' ) : null ],
        [ ( /^font-size$/ ), null, !removeFontStyles ? styleMigrateFilter( config.fontSize_style, 'size' ) : null ],
        [ ( /^color$/ ), null, !removeFontStyles ? styleMigrateFilter( config.colorButton_foreStyle, 'color' ) : null ],
        [ ( /^background-color$/ ), null, !removeFontStyles ? styleMigrateFilter( config.colorButton_backStyle, 'color' ) : null ]
    ] )( styleText, element ) || '';
}

在以 /^color$/ 开头的行中,将 !removeFontStyles 更改为 removeFontStyles 因此新行现在是:

[ ( /^color$/ ), null, removeFontStyles ? styleMigrateFilter( config.colorButton_foreStyle, 'color' ) : null ],

测试前清除浏览器缓存。