无法使用 pypandoc 将图像从 docx 文件添加到 html 文件

Posted

技术标签:

【中文标题】无法使用 pypandoc 将图像从 docx 文件添加到 html 文件【英文标题】:Cannot add image from docx file to html file using pypandoc 【发布时间】:2021-11-30 18:43:09 【问题描述】:

我正在尝试使用 python 中的 pypandoc 包将 docx 文件转换为 html 文件。这是我的代码(删除了文件路径)-

import pypandoc
filename = <filepath>
output=pypandoc.convert(filename,to='html',extra_args=['--extract-media=<foldername>'])
filename=os.path.splitext(filename)[0]
filename="0.html".format(filename)
with open(filename,'w') as f:
  if type(output) is not str: 
     output=output.encode("utf-8")
  f.write(output)

它不会插入 docx 文件中存在的图像,并且文本的颜色全部更改为黑白。我应该怎么做才能将所有图像放在 html 文件中并保持所有文本格式不变?

【问题讨论】:

【参考方案1】:

也许你可以试试 docx2html。代码如下:

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 在 python 3 上存在安装问题。任何其他解决方案都同样有帮助。【参考方案2】:

也许你可以试试下面这个组件。

pip install mammoth
import mammoth

with open("document.docx", "rb") as docx_file:
    result = mammoth.convert_to_html(docx_file)
    html = result.value # The generated HTML
    messages = result.messages # Any messages, such as warnings during conversion

【讨论】:

以上是关于无法使用 pypandoc 将图像从 docx 文件添加到 html 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP DOMDocument::loadXML 从 docx 文件导入数学方程和图像

如何将库作为docker容器服务运行?

Ruby:从 docx 文件中解析/提取图像和对象

如何将图像动态插入 docx 模板?

将 Docx 文件转换为图像

Python-docx - 从 URL 将图片插入 docx