From c26d35e25bc7f2b8c35f6505f50dae08186da7c2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 14 Jan 2008 18:00:01 +0000 Subject: [PATCH] Various improvements to lrs2lrf --- src/libprs500/ebooks/lrf/lrs/convert_from.py | 16 +++++++-- src/libprs500/ebooks/lrf/pylrs/pylrf.py | 4 +-- src/libprs500/ebooks/lrf/pylrs/pylrs.py | 34 ++++++++++++++++++-- 3 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/libprs500/ebooks/lrf/lrs/convert_from.py b/src/libprs500/ebooks/lrf/lrs/convert_from.py index abbd257056..20eb12153d 100644 --- a/src/libprs500/ebooks/lrf/lrs/convert_from.py +++ b/src/libprs500/ebooks/lrf/lrs/convert_from.py @@ -161,7 +161,9 @@ class LrsParser(object): newstyle = None # # yuck - headers and footers really mess this up - # + # until then, there were no objid pointers in any + # style object. + # hmm, so maybe we push them always into the page if stylename == 'pagestyle': for e in self.pagestyles: if self.equal_attrib(e, style): @@ -171,7 +173,11 @@ class LrsParser(object): if newstyle == None: #print "making pagestyle %s"%id self.pagestyles.append(style) - newstyle = self.book.create_page_style(**self.process_attrib(style)) + attrib = self.process_attrib(style) + for name in ['evenfooter', 'evenheader', 'footer', 'header', 'oddfooter', 'oddheader' ]: + if name+'id' in style.attrib: + attrib[name] = self.fetch_header_footer(style, name+'id') + newstyle = self.book.create_page_style(**attrib) elif stylename == 'blockstyle': for e in self.blockstyles: if self.equal_attrib(e, style): @@ -191,6 +197,8 @@ class LrsParser(object): if newstyle == None: #print "making textstyle %s"%id self.textstyles.append(style) + #if 'textlinewidth' in style.attrib: + # print "creating new TextStyle with textlinewidth='%s'"%style.attrib['textlinewidth'] newstyle = self.book.create_text_style(**self.process_attrib(style)) else: raise LrsError, "no handler for %s style name" @@ -303,7 +311,9 @@ class LrsParser(object): for element in draw_char: if element.tag == "Span": - obj.append(self.process_draw_char(element, Span(**self.process_attrib(element)))) + span = self.process_draw_char(element, Span(**self.process_attrib(element))) + if not span.isEmpty(): + obj.append(span) elif element.tag == "Plot": obj.append(self.process_text(element, self.process_Plot(element))) elif element.tag == "CR": diff --git a/src/libprs500/ebooks/lrf/pylrs/pylrf.py b/src/libprs500/ebooks/lrf/pylrs/pylrf.py index c8242abcd7..58418db3c3 100644 --- a/src/libprs500/ebooks/lrf/pylrs/pylrf.py +++ b/src/libprs500/ebooks/lrf/pylrs/pylrf.py @@ -110,7 +110,7 @@ def writeColor(f, color): f.write(struct.pack(">I", int(color, 0))) def writeLineWidth(f, width): - writeWord(f, int(width)//5) + writeWord(f, int(width)) def writeUnicode(f, string, encoding): if isinstance(string, str): @@ -292,7 +292,7 @@ TAG_INFO = dict( ParentPageTree = (0xF57C, " + # if self.hasFollowingContent(): for name in self.attrs.keys(): container.appendLrfTag(LrfTag(name, oldTextStyle.attrs[name]))