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 ],
测试前清除浏览器缓存。
我想去掉大多数从 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 ],
测试前清除浏览器缓存。