UnrecognizedImageError - Image Insertion Error - Python-docx
I am trying to insert an wmf file to docx using
python-docx which is producing the following traceback.
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
The image file is in
Any help or suggestion appreciated.
python-docx identifies the type of an image-file by "recognizing" its distinctive header. In this way it can distinguish JPEG from PNG, from TIFF, etc. This is much more reliable than mapping a filename extension and much more convenient than requiring the user to tell you the type. It's a pretty common approach.
This error indicates
python-docx is not finding a header it recognizes. Windows Metafile format (WMF) can be tricky this way, there's a lot of leeway in the proprietary spec and variation in file specimens in the field.
To fix this, I recommend you read the file with something that does recognize it (I would start with Pillow) and have it "convert" it into the same or another format, hopefully correcting the header in the process.
First I would try just reading it and saving it as WMF (or perhaps EMF if that's an option). This might be enough to do the trick. If you have to change to an intermediate format and then back, that could be lossy, but maybe better than nothing.
ImageMagick might be another good choice to try because it probably has better coverage than Pillow does.
- → What are the pluses/minuses of different ways to configure GPIOs on the Beaglebone Black?
- → Django, code inside <script> tag doesn't work in a template
- → React - Django webpack config with dynamic 'output'
- → GAE Python app - Does URL matter for SEO?
- → Put a Rendered Django Template in Json along with some other items
- → session disappears when request is sent from fetch
- → Python Shopify API output formatted datetime string in django template
- → Shopify app: adding a new shipping address via webhook
- → Shopify + Python library: how to create new shipping address
- → shopify python api: how do add new assets to published theme?
- → Access 'HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT' with Python Shopify Module