From 18cd7839134fdf60ae9db6ee1099f82d3ca05ff5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 17 Apr 2012 22:35:55 +0530 Subject: [PATCH] KF8 Output: Extract svg into flows --- src/calibre/ebooks/mobi/writer8/main.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/calibre/ebooks/mobi/writer8/main.py b/src/calibre/ebooks/mobi/writer8/main.py index e0447da16e..532a03be69 100644 --- a/src/calibre/ebooks/mobi/writer8/main.py +++ b/src/calibre/ebooks/mobi/writer8/main.py @@ -36,6 +36,7 @@ class KF8Writer(object): self.replace_resource_links() self.extract_css_into_flows() + self.extract_svg_into_flows() def dup_data(self): ''' Duplicate data so that any changes we make to markup/CSS only @@ -139,4 +140,20 @@ class KF8Writer(object): for link in elems: link.set('href', 'kindle:flow:%s?mime=text/css'%idx) + def extract_svg_into_flows(self): + for item in self.oeb.spine: + root = self.data(item) + if not hasattr(root, 'xpath'): continue + + for svg in XPath('//svg:svg')(root): + raw = etree.tostring(svg, encoding=unicode, with_tail=False) + self.flows.append(raw) + p = svg.getparent() + pos = p.index(svg) + img = etree.Element(XHTML('img'), + src="kindle:flow:%s?mime=image/svg+xml"%to_ref( + len(self.flows))) + p.insert(pos, img) + extract(svg) +