我收到带有Word docx文档的表单上传。我成功完成了所有解析。然后我必须在网上显示该Word文档。
我现在遇到的问题是我有嵌入的EMF文件(PIL库识别为WMF格式),我无法想象如何将它们转换为可在网络上显示的内容(任意选择) 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
这些Word文档来自普通用户,可能只是从网上剪切并粘贴图像或从文件中插入。
在linux系统上有解决方案吗?
感谢。
修改
为了我的辩护,我试图将该文档上传到谷歌驱动器,图像也不显示。也许没有简单的解决方案?
答案 0 :(得分:2)
pip install Pillow
来自PIL导入图像
Image.open( “xxx.wmf”)。保存( “xxx.png”)
答案 1 :(得分:2)
我发现使用Wand包进行此类转换更容易。我尝试了以前的建议没有成功。所以这就是我所做的: (顺便说一下,我想把所有&#39; .wmf&#39;文件转换成pdf文件)
import os
from wand.image import Image as wima
folder='C:/Users/PythonLover/Pictures/pics'
for oldfilename in os.listdir(folder):
if oldfilename.endswith(".wmf"):
with wima(filename=folder+'/'+oldfilename) as img:
newfilename = oldfilename.split('.')[0]+'.pdf'
newfilename = folder+'/'+newfilename
img.format = 'pdf'
img.save(filename=newfilename)
答案 2 :(得分:1)
您可以使用libwmf
将图片转换为SVG,然后pyrsvg
转换为PNG (described in another question)。
我没有找到libwmf
项目网站,但Debian(和Ubuntu)的包libwmf-bin
包含wmf2svg
实用程序。
答案 3 :(得分:1)