From 63eea9fa35b4d6ada5ff2d032872ed108cb825ea Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 20 Apr 2020 08:41:34 +0530 Subject: [PATCH] DOCX Output: Fix images that use URL unsafe characters in their filenames being dropped during conversion. Fixes #1873571 [remove pic when i chang ebook to docx](https://bugs.launchpad.net/calibre/+bug/1873571) --- src/calibre/ebooks/docx/writer/images.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/docx/writer/images.py b/src/calibre/ebooks/docx/writer/images.py index bf5c293a1f..54b62d611f 100644 --- a/src/calibre/ebooks/docx/writer/images.py +++ b/src/calibre/ebooks/docx/writer/images.py @@ -14,7 +14,7 @@ from polyglot.builtins import iteritems, itervalues, map, unicode_type from lxml import etree from calibre import fit_image -from calibre.ebooks.oeb.base import urlunquote +from calibre.ebooks.oeb.base import urlunquote, urlquote from calibre.ebooks.docx.images import pt_to_emu from calibre.utils.filenames import ascii_filename from calibre.utils.imghdr import identify @@ -50,8 +50,9 @@ class ImagesManager(object): def read_image(self, href): if href not in self.images: - item = self.oeb.manifest.hrefs.get(href) + item = self.oeb.manifest.hrefs.get(href) or self.oeb.manifest.hrefs.get(urlquote(href)) if item is None or not isinstance(item.data, bytes): + self.log.warning('Failed to find image:', href) return try: fmt, width, height = identify(item.data)