UnrecognizedImageError - 图像插入错误 - python-docx

2024-01-04

我正在尝试使用将 wmf 文件插入 docxpython-docx它产生以下回溯。

Traceback (most recent call last):
  File "C:/Users/ADMIN/PycharmProjects/ppt-to-word/ppt_reader.py", line 79, in <module>
    read_ppt(path, file)
  File "C:/Users/ADMIN/PycharmProjects/ppt-to-word/ppt_reader.py", line 73, in read_ppt
    write_docx(ppt_data, False)
  File "C:/Users/ADMIN/PycharmProjects/ppt-to-word/ppt_reader.py", line 31, in write_docx
    document.add_picture(slide_data.get('picture_location'), width=Inches(5.0))
  File "C:\Python34\lib\site-packages\docx\document.py", line 72, in add_picture
    return run.add_picture(image_path_or_stream, width, height)
  File "C:\Python34\lib\site-packages\docx\text\run.py", line 62, in add_picture
    inline = self.part.new_pic_inline(image_path_or_stream, width, height)
  File "C:\Python34\lib\site-packages\docx\parts\story.py", line 56, in new_pic_inline
    rId, image = self.get_or_add_image(image_descriptor)
  File "C:\Python34\lib\site-packages\docx\parts\story.py", line 29, in get_or_add_image
    image_part = self._package.get_or_add_image_part(image_descriptor)
  File "C:\Python34\lib\site-packages\docx\package.py", line 31, in get_or_add_image_part
    return self.image_parts.get_or_add_image_part(image_descriptor)
  File "C:\Python34\lib\site-packages\docx\package.py", line 74, in get_or_add_image_part
    image = Image.from_file(image_descriptor)
  File "C:\Python34\lib\site-packages\docx\image\image.py", line 55, in from_file
    return cls._from_stream(stream, blob, filename)
  File "C:\Python34\lib\site-packages\docx\image\image.py", line 176, in _from_stream
    image_header = _ImageHeaderFactory(stream)
  File "C:\Python34\lib\site-packages\docx\image\image.py", line 199, in _ImageHeaderFactory
    raise UnrecognizedImageError
docx.image.exceptions.UnrecognizedImageError

图像文件位于.wmf format.

任何帮助或建议表示赞赏。


python-docx通过“识别”其独特的标头来识别图像文件的类型。通过这种方式,它可以区分 JPEG 和 PNG、TIFF 等。这比映射文件扩展名更可靠,也比要求用户告诉您类型更方便。这是一种非常常见的方法。

该错误表明python-docx没有找到它识别的标头。 Windows 图元文件格式 (WMF) 在这种情况下可能会很棘手,专有规范和现场文件样本的变化有很大的余地。

要解决此问题,我建议您阅读包含以下内容的文件does识别它(我将从 Pillow 开始)并将其“转换”为相同或另一种格式,希望在此过程中纠正标头。

首先,我会尝试读取它并将其另存为 WMF(或者可能是 EMF,如果可以的话)。这可能足以达到目的。如果您必须更改为中间格式然后再返回,这可能会造成损失,但也许总比没有好。

ImageMagick 可能是另一个不错的选择,因为它的覆盖范围可能比 Pillow 更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UnrecognizedImageError - 图像插入错误 - python-docx 的相关文章

随机推荐