将EMF/WMF文件转换为PNG/JPG

Dan*_*ure 7 python python-imaging-library

我收到带有Word docx文档的表单上传.我成功完成了所有解析.然后我必须在网上显示该Word文档.

我现在遇到的问题是我已经嵌入了EMF文件(PIL库识别为WMF格式),我无法想象如何将它们转换为可以在Web上显示的内容(任意选择的PNG).

代码有点简单:

im = PIL.Image.open(StringIO.StringIO(data))
fmt = im.format
if (fmt == 'WMF'):
  fmt = 'PNG'
  output = StringIO.StringIO()
  im.save(output, format=fmt)
  data = output.getvalue()
  output.close()
return '''<img src="data:image/{0};base64,{1}" />'''.format(fmt, base64.encodestring(data))

我得到的错误是:

IOError: cannot find loader for this WMF file
Run Code Online (Sandbox Code Playgroud)

这些Word文档来自普通用户,可能只是从Web上剪切粘贴图像或从文件插入.

在linux系统上有解决方案吗?

谢谢.

编辑:

为了我的辩护,我试图将该文档上传到谷歌驱动器,图像也不显示.也许没有简单的解决方案?

zha*_*zhi 7

pip install Pillow
Run Code Online (Sandbox Code Playgroud)
from PIL import Image

Image.open("xxx.wmf").save("xxx.png")
Run Code Online (Sandbox Code Playgroud)


Mic*_*ski 1

您可以使用libwmf将图像转换为 SVG,然后pyrsvg转换为 PNG (在另一个问题中描述)

我还没有找到libwmf项目网站,但 Debian(和 Ubuntu)有libwmf-bin包含wmf2svg实用程序的软件包。