我正在开发一个文本编辑器,我想提供一个名为“从Word粘贴”的选项。
关于我正在使用的文字编辑器:
文本编辑器完全基于HTML 5,CSS和Javascript。现在我想提供一个名为“从Word粘贴”的选项。
我使用的是什么:
我在GitHub上找到了一些解决方案,下面是我试图删除所有与MS-Word相关的类(如 MSoNormal )和与MS-Word相关的标签(如 w:sdt < /强>):
我试过的代码:
function CleanWordHTML(str) {
str = str.replace(/<o:p>\s*<\/o:p>/g, "");
str = str.replace(/<o:p>.*?<\/o:p>/g, " ");
str = str.replace(/\s*mso-[^:]+:[^;"]+;?/gi, "");
str = str.replace(/\s*MARGIN: 0cm 0cm 0pt\s*;/gi, "");
str = str.replace(/\s*MARGIN: 0cm 0cm 0pt\s*"/gi, "\"");
str = str.replace(/\s*TEXT-INDENT: 0cm\s*;/gi, "");
str = str.replace(/\s*TEXT-INDENT: 0cm\s*"/gi, "\"");
str = str.replace(/\s*TEXT-ALIGN: [^\s;]+;?"/gi, "\"");
str = str.replace(/\s*PAGE-BREAK-BEFORE: [^\s;]+;?"/gi, "\"");
str = str.replace(/\s*FONT-VARIANT: [^\s;]+;?"/gi, "\"");
str = str.replace(/\s*tab-stops:[^;"]*;?/gi, "");
str = str.replace(/\s*tab-stops:[^"]*/gi, "");
str = str.replace(/\s*face="[^"]*"/gi, "");
str = str.replace(/\s*face=[^ >]*/gi, "");
str = str.replace(/\s*FONT-FAMILY:[^;"]*;?/gi, "");
str = str.replace(/<(\w[^>]*) class=([^ |>]*)([^>]*)/gi, "<$1$3");
str = str.replace(/<(\w[^>]*) style="([^\"]*)"([^>]*)/gi, "<$1$3");
str = str.replace(/\s*style="\s*"/gi, '');
str = str.replace(/<SPAN\s*[^>]*>\s* \s*<\/SPAN>/gi, ' ');
str = str.replace(/<SPAN\s*[^>]*><\/SPAN>/gi, '');
str = str.replace(/<(\w[^>]*) lang=([^ |>]*)([^>]*)/gi, "<$1$3");
str = str.replace(/<SPAN\s*>(.*?)<\/SPAN>/gi, '$1');
str = str.replace(/<FONT\s*>(.*?)<\/FONT>/gi, '$1');
str = str.replace(/<\\?\?xml[^>]*>/gi, "");
str = str.replace(/<\/?\w+:[^>]*>/gi, "");
str = str.replace(/<H\d>\s*<\/H\d>/gi, '');
str = str.replace(/<H1([^>]*)>/gi, '');
str = str.replace(/<H2([^>]*)>/gi, '');
str = str.replace(/<H3([^>]*)>/gi, '');
str = str.replace(/<H4([^>]*)>/gi, '');
str = str.replace(/<H5([^>]*)>/gi, '');
str = str.replace(/<H6([^>]*)>/gi, '');
str = str.replace(/<\/H\d>/gi, '<br>'); //remove this to take out breaks where Heading tags were
str = str.replace(/<(U|I|STRIKE)> <\/\1>/g, ' ');
str = str.replace(/<(B|b)> <\/\b|B>/g, '');
str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
str = str.replace(/<([^\s>]+)[^>]*>\s*<\/\1>/g, '');
//some RegEx code for the picky browsers
var re = new RegExp("(<P)([^>]*>.*?)(<\/P>)", "gi");
str = str.replace(re, "<div$2</div>");
var re2 = new RegExp("(<font|<FONT)([^*>]*>.*?)(<\/FONT>|<\/font>)", "gi");
str = str.replace(re2, "<div$2</div>");
str = str.replace(/size|SIZE = ([\d]{1})/g, '');
return str;
}
我想要实现的目标:
在从MS-Word粘贴到我的文本编辑器中时,我需要将以下内容替换为相应的HTML样式和标记:
从元素中删除类(如下所示):
风格=“MSO的元件:对 - 边界的div;边界:无;边界底部:实心 #EA4E4E 6.0pt; mso-border-bottom-themecolor:accent1; padding:0cm 0cm 1.0pt 0cm“
将粘贴的内容从与MS-Word相关的样式中解放出来,但是格式化应由HTML保留,并具有相应的替换。
注意:
我尝试过查看很多网站,但找不到任何插件或任何解决方案。 即使开始使用我自己的javascript来实现此功能,我也不知道MS-Word使用的所有类和标签是什么。
总的来说,我需要将MS-Word相关标签和样式替换为HTML内容的功能,并删除与MS-Word相关的标签和样式。
提前致谢。