Fix bug with SVG rasterizer. Remove some unneeded voodoo.

This commit is contained in:
Marshall T. Vandegrift 2009-01-13 08:50:18 -05:00
parent 8cd38455f2
commit 16dba58dca
3 changed files with 10 additions and 9 deletions

View File

@ -731,9 +731,7 @@ def oeb2lit(opts, inpath):
mangler = CaseMangler() mangler = CaseMangler()
mangler.transform(oeb, context) mangler.transform(oeb, context)
fbase = context.dest.fbase fbase = context.dest.fbase
fkey = context.dest.fnames.values() flattener = CSSFlattener(fbase=fbase, unfloat=True, untable=True)
flattener = CSSFlattener(
fbase=fbase, fkey=fkey, unfloat=True, untable=True)
flattener.transform(oeb, context) flattener.transform(oeb, context)
rasterizer = SVGRasterizer() rasterizer = SVGRasterizer()
rasterizer.transform(oeb, context) rasterizer.transform(oeb, context)

View File

@ -66,8 +66,7 @@ class HTMLTOCAdder(object):
element(head, XHTML('link'), rel='stylesheet', type=CSS_MIME, element(head, XHTML('link'), rel='stylesheet', type=CSS_MIME,
href=css_href) href=css_href)
body = element(contents, XHTML('body'), body = element(contents, XHTML('body'),
attrib={'id': 'calibre_toc', attrib={'class': 'calibre_toc'})
'class': 'calibre_toc'})
h1 = element(body, XHTML('h1'), h1 = element(body, XHTML('h1'),
attrib={'class': 'calibre_toc_header'}) attrib={'class': 'calibre_toc_header'})
h1.text = 'Table of Contents' h1.text = 'Table of Contents'
@ -75,7 +74,7 @@ class HTMLTOCAdder(object):
id, href = oeb.manifest.generate('contents', 'contents.xhtml') id, href = oeb.manifest.generate('contents', 'contents.xhtml')
item = oeb.manifest.add(id, href, XHTML_MIME, data=contents) item = oeb.manifest.add(id, href, XHTML_MIME, data=contents)
oeb.spine.add(item, linear=False) oeb.spine.add(item, linear=False)
oeb.guide.add('toc', 'Table of Contents', href + '#calibre_toc') oeb.guide.add('toc', 'Table of Contents', href)
def add_toc_level(self, elem, toc): def add_toc_level(self, elem, toc):
for node in toc: for node in toc:

View File

@ -26,6 +26,7 @@ from calibre.ebooks.oeb.base import xml2str, xpath, namespace, barename
from calibre.ebooks.oeb.stylizer import Stylizer from calibre.ebooks.oeb.stylizer import Stylizer
IMAGE_TAGS = set([XHTML('img'), XHTML('object')]) IMAGE_TAGS = set([XHTML('img'), XHTML('object')])
KEEP_ATTRS = set(['class', 'style', 'width', 'height', 'align'])
class SVGRasterizer(object): class SVGRasterizer(object):
def __init__(self): def __init__(self):
@ -172,12 +173,15 @@ class SVGRasterizer(object):
self.images[key] = href self.images[key] = href
elem.tag = XHTML('img') elem.tag = XHTML('img')
for attr in elem.attrib: for attr in elem.attrib:
del elem.attrib[attr] if attr not in KEEP_ATTRS:
del elem.attrib[attr]
elem.attrib['src'] = item.relhref(href) elem.attrib['src'] = item.relhref(href)
elem.text = None if elem.text:
elem.attrib['alt'] = elem.text
elem.text = None
for child in elem: for child in elem:
elem.remove(child) elem.remove(child)
def rasterize_cover(self): def rasterize_cover(self):
covers = self.oeb.metadata.cover covers = self.oeb.metadata.cover
if not covers: if not covers: