Mammoth可用于将.docx文档(比如由Microsoft Word创建的)转换为HTML。Mammoth致力于通过文档中的语义信息生成简洁的HTML,而忽略一些其他细节。例如,Mammoth会把带有“Heading 1”样式的所有段落转换为“h1”元素,而不是试图精确地复制标题的所有样式(字体、字号、颜色等)。
.docx使用的结构与HMTL的结构有很多不匹配的地方,这意味着复杂文档的转换很难达到完美。但如果你仅使用样式进行文档的语义化标记,Mammoth将会工作得很好。
当前支持如下特性:
可从Nuget上获取。
Install-Package Mammoth
要将一个已经存在的.docx文件转换为HTML,只需创建DocumentConverter的一个实例,并将文件路径传递给ConvertToHtml方法。例如:
using Mammoth; var converter = new DocumentConverter(); var result = converter.ConvertToHtml("document.docx"); var html = result.Value; // 生成的HTML var warnings = result.Warnings; // 转换期间产生的所有警告
你也可以使用ExtractRawText方法提取文档的纯文本。这会忽略文档中的所有格式。每个段落后跟两个新行。
var converter = new DocumentConverter(); var result = converter.ExtractRawText("document.docx"); var html = result.Value; // 纯文本 var warnings = result.Warnings; // 转换期间产生的所有警告
默认情况下,Mammoth把一些普通的.docx样式映射为HTML元素。比如,带有名为“Heading 1”的样式的一个段落会被转换为一个“h1”元素。关于样式映射语法的描述包含在“编写样式映射”一节中。例如,将带有名为“Section Title”的样式的段落转换为“h1”元素,带有名为“Subsection Title”的样式的段落转换为“h2”元素:
var converter = new DocumentConverter() .AddStyleMap("p[style-name=‘Section Title‘] => h1:fresh") .AddStyleMap("p[style-name=‘Subsection Title‘] => h2:fresh");
也可以将整个样式映射作为一个字符串传递,当样式映射存储在文本文件中时,这会很有用:
var styleMap = "p[style-name=‘Section Title‘] => h1:fresh\n" + "p[style-name=‘Subsection Title‘] => h2:fresh"; var converter = new DocumentConverter() .AddStyleMap(styleMap);
后添加的样式映射拥有较高的优先级。用户定义的样式映射优于默认样式映射。如果要禁用所有的默认样式映射,可调用DisableDefaultStyleMap方法:
var converter = new DocumentConverter() .DisableDefaultStyleMap();
默认情况下,粗体文本被包装在“<strong>”标签中。可以通过添加对“b”的映射改变这种行为。比如,把粗体文本包装在“<em>”标签中:
var converter = new DocumentConverter() .AddStyleMap("b => em");
原文:http://www.cnblogs.com/zhuxinghan/p/6286070.html