python mammoth linux,Mammoth官方文档翻译

用于.NET平台.docx转HTML的Mammoth

Mammoth可用于将.docx文档(比如由Microsoft Word创建的)转换为HTML。Mammoth致力于通过文档中的语义信息生成简洁的HTML,而忽略一些其他细节。例如,Mammoth会把带有“Heading 1”样式的所有段落转换为“h1”元素,而不是试图精确地复制标题的所有样式(字体、字号、颜色等)。

.docx使用的结构与HMTL的结构有很多不匹配的地方,这意味着复杂文档的转换很难达到完美。但如果你仅使用样式进行文档的语义化标记,Mammoth将会工作得很好。

当前支持如下特性:

标题。

列表。

自定义从.docx样式到HTML的映射。比如,通过提供合适的样式映射,可以把“WarningHeading”样式转换为“h1.warning”类。

表格。表格自身的样式——比如边框——目前会被忽略,但对文本格式的处理与文档的其余部分一致。

脚注和尾注。

图像。

粗体、斜体、下划线、删除线、上标和下标。

链接。

换行。

文本框。文本框中的内容作为一个单独的段落处理,放在包含该文本框的段落之后。

安装

可从Nuget上获取。

Install-Package Mammoth

支持的其他平台

JavaScript,包括浏览器和node.js。可从npm上获取。

Python。可从PyPI上获取。

WordPress。

Java/JVM。可从Maven Central上获取。

使用

基本转换

要将一个已经存在的.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();

粗体

默认情况下,粗体文本被包装在“”标签中。可以通过添加对“b”的样式映射改变这种行为。比如,要把粗体文本包装在“”标签中:

var converter = new DocumentConverter()

.AddStyleMap("b => em");

斜体

默认情况下,斜体文本被包装在“”标签中。可以通过添加对“i”的样式映射改变这种行为。比如,要把斜体文本包装在“”标签中:

var converter = new DocumentConverter()

.AddStyleMap("i => strong");

下划线

默认情况下,由于会与HTML文档中的链接引起混淆,所有文本的下划线均被忽略。可以通过添加对“u”的样式映射改变这种行为。比如,有一个源文档使用下划线表示强调。下面的代码会把所有带显式下划线的源文本包装在“”标签中:

var converter = new DocumentConverter()

.AddStyleMap("u => em");

删除线

默认情况下,带删除线的文本被包装在“”标签中。可以通过添加对“strike”的样式映射改变这种行为。比如,要把带删除线的文本包装在“”标签中:

var converter = new DocumentConverter()

.AddStyleMap("strike => del");

API

DocumentConverter

方法:

IResult ConvertToHtml(string path):将由path参数指定的文件转换为一个HTML字符串。

IResult ConvertToHtml(Stream stream):将由stream参数指定的流转换为一个HTML字符串。注意,使用这个方法,而不是convertToHtml(File file)方法意味着指向其他文件——比如图片——的相对路径将无法解析。

IResult ExtractRawText(string path):提取文档中的纯文本。这将忽略文档中的所有格式。每个段落后跟两个换行符。

IResult ExtractRawText(Stream stream):提取文档中的纯文本。 这将忽略文档中的所有格式。每个段落后跟两个换行符。

DocumentConverter AddStyleMap(string styleMap):添加用于指定Word样式到HTML的映射的样式映射。最后添加的样式映射具有最高的优先级。“编写样式映射配置”一节提供了对其语法的说明。

DocumentConverter DisableDefaultStyleMap():默认情况下,任何新添加的样式映射都会跟默认样式映射合并起来。调用这个方法可以停用默认样式映射。

DocumentConverter PreserveEmptyParagraphs():默认情况下,空段落将会被忽略。调用这个方法可以在输出中保留空段落。

DocumentConverter IdPrefix(string idPrefix):设置生成的任何ID的前缀,比如用于书签、脚注和尾注等的ID。默认为空字符串。

IResult

表示转换的结果。属性:

T Value:生成的文本。

ISet Warnings:转换期间生成的所有警告。

编写样式映射配置

一个样式映射配置由几个使用换行符分隔的样式映射组成。空行和由“#”开始的行会被忽略。

一个样式映射由两部分组成:

箭头左侧为文档元素匹配器。

箭头右侧为HTML路径。

每转换一个段落,Mammoth会查找文档元素匹配器匹配该段落的第一个样式映射,然后Mammoth确保满足HTML路径。

新建元素

当编写样式映射时,理解Mammoth中关于新建元素的概念是很有用的。在生成HTML的时候,Mammoth仅在必要的时候才会关闭一个HTML元素。否则,元素会被重用。

例如,有一个样式映射为“p[style-name='Heading 1'] => h1”。如果Mammoth遇到了一个包含名为“Heading 1”的样式的段落,这个段落会被转换为包含相同文本的“h1”元素。如果下一个段落也包含名为“Heading 1”的样式,那么这个段落的文本会被追加到已有的“h1”元素,而不是创建一个新的“h1”元素。

许多情况下,你可能希望生成一个新的“h1”元素。你可以通过使用“:fresh”修饰符指明这么做:

p[style-name='Heading 1'] => h1:fresh

然后两个连续的“Heading 1”段落会被转换为两个独立的“h1”元素。

当生成较为复杂的HTML结构的时候,重用元素就比较有用。例如,假设你的.docx文档包含旁注。每个旁注可能包含一个标题和一些正文文本,它们应该被包含在一个单独的“div.aside”元素中。这种情况下,类似于“p[style-name='Aside Heading'] => div.aside > h2:fresh”和“p[style-name='Aside Text'] => div.aside > p:fresh”的样式映射可能会有帮助。

文档元素匹配器

段落和内联文本

匹配所有段落:

p

匹配所有内联文本:

r

要匹配带有指定样式的段落和内联文本,你可以通过名称引用样式,即显示在Microsoft Word或LibreOffice中的样式名称。比如,要匹配一个带有样式名“Heading 1”的段落:

p[style-name='Heading 1']

也可以通过样式ID引用样式,即在.docx文件内部使用的ID。要匹配一个带有指定样式ID的段落或内联文本,追加一个点,后跟样式ID即可。比如,要匹配一个带有样式ID“Heading1”的段落:

p.Heading1

粗体

匹配显式的粗体文本:

b

注意,这只会匹配显式地应用了粗体样式的文本,而不会匹配由于其所属段落或内联文本的样式而显示为粗体的文本。

斜体

匹配显式的斜体文本:

i

注意,这只会匹配显式地应用了斜体样式的文本,而不会匹配由于其所属段落或内联文本的样式而显示为斜体的文本。

下划线

匹配显式的下划线文本:

u

注意,这只会匹配显式地应用了下划线样式的文本,而不会匹配由于其所属段落或内联文本的样式而带有下划线的文本。

删除线

匹配显式的删除线文本:

strike

注意,这只会匹配显式地应用了删除线样式的文本,而不会匹配由于其所属段落或内联文本的样式而带有删除线的文本。

HTML路径

单一元素

最简单的HTML路径只指定单一元素。比如,要指定一个“h1”元素:

h1

要给元素指定一个CSS类,追加一个点,后跟类名即可:

h1.section-title

如果要求新建元素,使用“:fresh”:

h1:fresh

必须按正确顺序使用修饰符:

h1.section-title:fresh

嵌套元素

使用“>”指定嵌套元素。比如,要指定“h2”在“div.aside”中:

div.aside > h2

你可以嵌套任意深度的元素。

缺失的特性

与Mammoth的JavaScript和Python实现相比,如下特性暂缺:

自定义图片处理程序

CLI

对嵌入样式映射配置的支持

Markdown支持

文档变换

WORD转HTML-python第三方包Mammoth(官方文档翻译)

Mammoth 官方 Mammoth可用于将.docx文档(比如由Microsoft Word创建的)转换为HTML.Mammoth致力于通过文档中的语义信息生成简洁的HTML,而忽略一些其他细节.例 ...

Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)中一些知识点

Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Flume官方文档翻译--Flume 1.7.0 User Guide (unr ...

Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(二)

Flume官方文档翻译--Flume 1.7.0 User Guide (unreleased version)(一) Logging raw data(记录原始数据) Logging the raw ...

蓝牙4.0——Android BLE开发官方文档翻译

ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...

GreenDao官方文档翻译(上)

笔记摘要: 上一篇博客简单介绍了SQLite和GreenDao的比较,后来说要详细介绍下GreenDao的使用,这里就贴出本人自己根据官网的文档进行翻译的文章,这里将所有的文档分成上下两部分翻译,只为 ...

Aircrack-ng官方文档翻译[中英对照]---Airdecap-ng

Aircrack-ng官方文档翻译---Airdecap-ng   Description[简介] With airdecap-ng you can decrypt WEP/WPA/WPA2 capt ...

Aircrack-ng官方文档翻译[中英对照]---Airmon-ng

Aircrack-ng官方文档翻译---Airmon-ng Description[简介] This script can be used to enable monitor mode on wire ...

Aircrack-ng官方文档翻译[中英对照]---Aireplay-ng

Aircrack-ng官方文档翻译---Aireplay-ng[90%] Description[简介] Aireplay-ng is used to inject frames. Aireplay- ...

Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET

OSNIT_百度百科 Salt Stack 官方文档翻译 - 一个想做dba的sa - 博客频道 - CSDN.NET Salt Stack 官方文档翻译 分类: 自动运维 2013-04-02 11 ...

随机推荐

Java基本语法练习

1.编写程序,求100以内的全部素数. 实验源码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class F ...

MySQL单表最大限制

想把一个项目的数据库导出来,然后倒入到自己熟悉的MySQL数据库中进行运行和调试.导出来后,发现sql文件整整有12G多大,忽然想起来,MySQL好像有个叫做容量限制的神奇特性,但是忘了上限是多少了, ...

SQL Server 调优:set statistics profile on

进行set statistics profile on 设置后 将会返回执行计划表,通过该表,可以理解语句执行的过程,了解SQL Server是否选择了正确的执行计划,进而确定调优方向! 1.返回表字 ...

Android WebView 开发详解(一)

转载请注明出处  http://blog.csdn.net/typename/article/details/39030091 powered by meichal zhao 概览: Android ...

DATASNAP复杂中间件的一些处理方法

1.中间件需要连接SQL SERVER\ORACLE\MYSQL多种数据库,怎么办? [解决]:可以搞多种数据模块池对应多种数据库,一种数据模块池对应一种数据库 2.中间件业务对象多,在一个单元里面定 ...

FTP 上传文件

有时候需要通过FTP同步数据文件,除了比较稳定的IDE之外,我们程序员还可以根据实际的业务需求来开发具体的工具,具体的开发过程就不细说了,这里了解一下通过C#实现FTP上传文件到指定的地址. /// ...

svn基本操作和图标介绍

注意事项:    .svn这个隐藏目录记录着两项关键信息:工作文件的基准版本和一个本地副本最后更新的时间戳,千万不要手动修改或者删除这个.svn隐藏目录和里面的文件!!,否则将会导致你本地的工作拷贝( ...

JVM学习九:JVM之GC算法和种类

我们前面说到了JVM的常用的配置参数,其中就涉及了GC相关的知识,趁热打铁,我们今天就学习下GC的算法有哪些,种类又有哪些,让我们进一步的认识GC这个神奇的东西,帮助我们解决了C 一直挺头疼的内存回收 ...

Jumbo frame与MTU

最近有测试问我Jumbo和MTU分别限制的是什么把我问住了,网上查了一些资料,发现大部分是百科上copy下来的,都没有说到点子上,关键时刻还是同事靠谱,现在根据自己的理解整理一下.   首先了解一下二 ...

pt-table-checksum 使用方法【转】

27. pt-table-checksum27.1 pt-table-checksum 作用 主要用来检查主从数据是否一致,原理即在主库执行把表每行的列通过concat函数进行拼接,然后对拼接的值进行 ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "nonetype" object has no attribute 'children' 是一个常见的 Python 错误信息。 这个错误通常发生在使用父对象的属性或方法时,这个父对象却为空或为 None。 在这种情况下,错误的原因可能是你的代码中没有正确地初始化或设置父对象,导致它为 None。当你试图访问父对象的属性或方法时,Python 就会抛出 "nonetype" object has no attribute 'children' 错误。 通常解决这个问题的方法是确保你的父对象被正确地实例化或初始化。检查你的代码,确保所有的父对象都被正确地声明和初始化。如果你在使用外部库或框架,确保你按照正确的方式来使用它们的方法和属性。 以下是一个代码示例,说明 "nonetype" object has no attribute 'children' 错误和解决方法: ```python class Parent: def __init__(self): self.children = [] parent = None # 错误示例 - 没有实例化父对象 # parent.children 会抛出 "nonetype" object has no attribute 'children' parent = Parent() # 正确示例 - 实例化父对象 # 现在可以安全地访问 parent.children ``` 在这个示例中,我们创建了一个 Parent 类,并在其中初始化了一个 children 列表属性。在正确示例中,我们正确地实例化了父对象,所以可以安全地访问 parent.children。而在错误的示例中,我们没有实例化父对象 parent,导致访问 parent.children 时出现 "nonetype" object has no attribute 'children' 错误。 总结来说,当你遇到 "nonetype" object has no attribute 'xxx' 错误时,检查你的代码,确保父对象被正确地实例化或初始化。 ### 回答2: "nonetype" object has no attribute 'children" 是Python中的一个错误提示信息,意思是'NoneType'对象没有属性'children'。 这个错误发生的原因通常是你试图在一个空对象上调用一个没有定义的属性。在Python中,当一个对象没有被赋予任何值,默认值为None,被视为'NoneType'。 在这个特定的错误信息中,你试图在一个为None的对象上调用'children'属性。实际上,None对象并没有'children'属性,因此Python会抛出一个错误。 为了解决这个错误,你需要确定在调用'children'属性之前,确保对象不是None。你可以使用条件语句例如if语句来检查对象是否为None,如果是None,则不调用'children'属性,以避免发生错误。 以下是一个示例代码,演示了如何避免这个错误: if obj is not None: obj.children 通过这种方法,你可以在调用'children'属性之前检查对象是否为空,以避免出现'NoneType' object has no attribute 'children'错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值