跳转到主要内容

docx (OOXML) 到 html 转换器

项目描述

将docx (OOXML)文件转换为语义HTML。所有Word格式化混乱都被去除,留下干净格式化的内容版本。

用法

>>> from docx2html import convert
>>> html = convert('path/to/docx/file')

运行开发测试

$ virtualenv path/to/new/virtualenv
$ source path/to/new/virtualenv/bin/activate
$ cd path/to/workspace
$ git clone git://github.com/PolicyStat/docx2html.git
$ cd docx2html
$ pip install .
$ pip install -r test_requirements.txt
$ ./run_tests.sh

描述

docx2html被设计用来从一个docx文件中提取内容,并将其转换为HTML。它不关心样式或字体或任何改变内容显示方式的东西(有少数例外)。以下是目前支持的功能列表

  • 段落
    • 粗体

    • 斜体

    • 下划线

    • 超链接

  • 列表
    • 嵌套列表

    • 列表样式(字母、罗马数字等)

    • 表格

    • 段落

  • 表格
    • 行跨度

    • 列跨度

    • 嵌套表格

    • 列表

  • 图片
    • 调整大小

    • 转换为较小的格式(用于位图和tiffs)

    • 有一个钩子允许在上下文之外设置图片标签的src,稍后详细介绍

  • 标题
    • 简单标题

    • 根级列表(大写罗马数字)被转换为h2标签

处理嵌入式图片

docx2html允许您指定如何处理图片上传。例如,您可能正在上传图片到Amazon S3等:注意:此文档很糟糕,您可能需要阅读源代码。

import os.path
from shutil import copyfile

from docx2html import convert

def handle_image(image_id, relationship_dict):
    image_path = relationship_dict[image_id]
    # Now do something to the image. Let's move it somewhere.
    _, filename = os.path.split(image_path)
    destination_path = os.path.join('/tmp', filename)
    copyfile(image_path, destination_path)

    # Return the `src` attribute to be used in the img tag
    return 'file://%s' % destination

html = convert('path/to/docx/file', image_handler=handle_image)

命名约定

在docx2html的源代码中存在两种主要的命名约定,包括build函数,这些函数将返回表示HTML的etree元素。还有get_content函数,这些函数返回HTML的字符串表示形式。

变更日志

  • 0.2.3
    • 存在一个bug,即带有换行标签的超链接会导致文档无法转换。这个问题已经修复。

  • 0.2.2
    • 存在一个bug,即缺少文本的超链接会导致文档无法转换。这个问题已经修复。

  • 0.2.1
    • 如果一个列表在ilvls中存在不一致性,则不一致的ilvl的内容将丢失。现在我们将那个不一致的列表滚动到根目录,不再丢失内容。

  • 0.2.0
    • 如果一个列表的numId不在编号字典中存储,则将抛出键错误。现在,如果给定列表标签的numId或ilvl无效,则默认返回十进制类型的列表。

  • 0.1.11
    • 有时在OOXML中,一个图像的高度或宽度为0。如果发生这种情况,我们现在将忽略OOXML中的高度和宽度,并使用完整的图像。

  • 0.1.10
    • 添加了面向用户的版本

  • 0.1.9
    • 一些列表存在问题,如果列表ID表现不佳,会导致内容丢失。这个问题已经得到解决。

  • 0.1.8
    • 修复了带有多个run标签和smartTags的超链接的丢失内容问题。

    • 现在正在忽略某些图像类型。这些包括:emf、wmf和svg。

  • 0.1.7
    • 如果一组列表(具有相同的列表ID)的缩进级别被破坏(从较高的缩进级别开始,然后是较低的缩进级别),则整个子列表(具有较低缩进级别的列表)将不会添加到根列表。这会导致从最终输出中删除损坏的列表。这个问题已经得到解决。

  • 0.1.6
    • 标题检测依赖于大小写。但是,标题的小写版本也可能出现。现在这些都将被正确处理。

  • 0.1.4
    • 添加了一个用于删除标签的函数,同时清除“sectPr”标签,因为它们与页眉和页脚有关。

  • 0.1.3
    • 没有文本的超链接不再抛出错误

    • 修复了使用不完整的styles字典确定字体大小的问题

  • 0.1.2
    • 修复了确定段落标签的字体大小的问题

  • 0.1.1
    • 添加了变更日志

    • 现在从超链接中删除了样式

    • jinja2现在用于渲染测试xml

  • 0.1.0
    • 正确处理列表中的表格和段落。在此之前,如果列表中有一个表格,它将使列表分为两半,表格之前的一半和表格之后的一半(表格位于它们之间)。现在如果列表中有一个表格或段落,这些元素将滚动到列表中。

项目详细信息


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

docx2html-0.2.3.tar.gz (242.7 kB 查看散列)

上传时间

由...

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页