diff --git a/src/calibre/ebooks/oeb/polish/cover.py b/src/calibre/ebooks/oeb/polish/cover.py index 1db4d4d685..6049df26dd 100644 --- a/src/calibre/ebooks/oeb/polish/cover.py +++ b/src/calibre/ebooks/oeb/polish/cover.py @@ -294,7 +294,7 @@ def create_epub_cover(container, cover_path, existing_image, options=None): templ = CoverManager.NONSVG_TEMPLATE.replace('__style__', style) else: if callable(cover_path): - templ = CoverManager.SVG_TEMPLATE + templ = (options or {}).get('template', CoverManager.SVG_TEMPLATE) else: width, height = 600, 800 try: diff --git a/src/calibre/srv/render_book.py b/src/calibre/srv/render_book.py index eff1f7a4aa..6f231ba134 100644 --- a/src/calibre/srv/render_book.py +++ b/src/calibre/srv/render_book.py @@ -16,6 +16,7 @@ from urllib import quote from cssutils import replaceUrls from cssutils.css import CSSRule +from calibre import prepare_string_for_xml from calibre.ebooks import parse_css_length from calibre.ebooks.oeb.base import ( OEB_DOCS, OEB_STYLES, rewrite_links, XPath, urlunquote, XLINK, XHTML_NS, OPF, XHTML, EPUB_NS) @@ -134,12 +135,18 @@ class Container(ContainerBase): f.write(json.dumps(self.book_render_data, ensure_ascii=False).encode('utf-8')) def create_cover_page(self, input_fmt): + templ = ''' + + + ''' if input_fmt == 'epub': def cover_path(action, data): if action == 'write_image': data.write(BLANK_JPEG) - return set_epub_cover(self, cover_path, (lambda *a: None)) - from calibre.ebooks.oeb.transforms.cover import CoverManager + return set_epub_cover(self, cover_path, (lambda *a: None), options={'template':templ}) raster_cover_name = find_cover_image(self, strict=True) if raster_cover_name is None: item = self.generate_item(name='cover.jpeg', id_prefix='cover') @@ -148,8 +155,7 @@ class Container(ContainerBase): dest.write(BLANK_JPEG) item = self.generate_item(name='titlepage.html', id_prefix='titlepage') titlepage_name = self.href_to_name(item.get('href'), self.opf_name) - templ = CoverManager.SVG_TEMPLATE - raw = templ % self.name_to_href(raster_cover_name, titlepage_name) + raw = templ % prepare_string_for_xml(self.name_to_href(raster_cover_name, titlepage_name), True) with self.open(titlepage_name, 'wb') as f: f.write(raw.encode('utf-8')) spine = self.opf_xpath('//opf:spine')[0] diff --git a/src/pyj/read_book/resources.pyj b/src/pyj/read_book/resources.pyj index 75981e8f6d..b6605ed6c3 100644 --- a/src/pyj/read_book/resources.pyj +++ b/src/pyj/read_book/resources.pyj @@ -39,14 +39,9 @@ def load_resources(db, book, root_name, previous_resources, proceed): db.get_file(book, name, got_one) def got_one(data, name, mimetype): - if name is book.manifest.title_page_name: - w = book.manifest.cover_width or 600 - h = book.manifest.cover_height or 800 - ar = 'xMidYMid meet' # or 'none' - data = data.replace('__ar__', ar) - data = data.replace('__viewbox__', '0 0 ' + w + ' ' + h) - data = data.replace('__width__', w + '') - data = data.replace('__height__', h + '') + if False and name is book.manifest.title_page_name: + # Enable to have cover image not preserve aspect ratio + data = data.replace('width: auto', 'width: 100%') ans[name] = v'[data, mimetype]' if type(data) is 'string': find_virtualized_resources(data)