diff --git a/src/libprs500/lrf/html/convert_from.py b/src/libprs500/lrf/html/convert_from.py index 51126e69d1..8141976c27 100644 --- a/src/libprs500/lrf/html/convert_from.py +++ b/src/libprs500/lrf/html/convert_from.py @@ -570,6 +570,29 @@ class HTMLConverter(object): elif isinstance(c, NavigableString): self.add_text(c, pcss) + def process_alignment(self, css): + ''' + Create a new TextBlock only if necessary as indicated by css + @type css: dict + ''' + align = 'head' + if css.has_key('text-align'): + val = css['text-align'] + if val in ["right", "foot"]: + align = "foot" + elif val == "center": + align = "center" + css.pop('text-align') + if align != self.current_block.textStyle.attrs['align']: + self.current_para.append_to(self.current_block) + self.current_block.append_to(self.current_page) + ts = self.book.create_text_style(**self.current_block.textStyle.attrs) + ts.attrs['align'] = align + self.current_block = self.book.create_text_block( + blockStyle=self.current_block.blockStyle, + textStyle=ts) + self.current_para = Paragraph() + def add_text(self, tag, css): ''' Add text to the current paragraph taking CSS into account. @@ -584,23 +607,7 @@ class HTMLConverter(object): if not src.strip(): self.current_para.append(' ') else: - align = 'head' - if css.has_key('text-align'): - val = css['text-align'] - if val in ["right", "foot"]: - align = "foot" - elif val == "center": - align = "center" - css.pop('text-align') - if align != self.current_block.textStyle.attrs['align']: - self.current_para.append_to(self.current_block) - self.current_block.append_to(self.current_page) - ts = self.book.create_text_style(**self.current_block.textStyle.attrs) - ts.attrs['align'] = align - self.current_block = self.book.create_text_block( - blockStyle=self.current_block.blockStyle, - textStyle=ts) - self.current_para = Paragraph() + self.process_alignment(css) try: self.current_para.append(Span(src, self.sanctify_css(css), self.memory,\ font_delta=self.font_delta)) @@ -761,13 +768,18 @@ class HTMLConverter(object): self.current_para.append(Plot(im, xsize=ceil(width*factor), ysize=ceil(height*factor))) elif height <= self.page_height/1.5: - self.end_current_para() + pb = self.current_block + self.end_current_para() + self.process_alignment(tag_css) im = Image(self.images[path], x0=0, y0=0, x1=width, y1=height,\ xsize=width, ysize=height) self.current_para.append(Plot(im, xsize=width*factor, ysize=height*factor)) self.current_block.append(self.current_para) - self.current_block.append(CR()) + self.current_page.append(self.current_block) + self.current_block = self.book.create_text_block( + textStyle=pb.textStyle, + blockStyle=pb.blockStyle) self.current_para = Paragraph() else: self.current_block.append(self.current_para) @@ -832,13 +844,6 @@ class HTMLConverter(object): self.process_children(tag, tag_css) if self.in_ol: self.in_ol += 1 - elif False and tagname in ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']: - self.end_current_para() - if self.current_block.contents: - self.current_block.append(CR()) - self.process_children(tag, tag_css) - self.end_current_para() - self.current_block.append(CR()) elif tagname == 'blockquote': self.current_para.append_to(self.current_block) self.current_block.append_to(self.current_page) @@ -863,6 +868,8 @@ class HTMLConverter(object): if tag_css.has_key('text-indent'): indent = Span.unit_convert(tag_css['text-indent']) tag_css.pop('text-indent') + if not indent: + indent=0 else: indent = self.book.defaultTextStyle.attrs['parindent'] if indent != self.current_block.textStyle.attrs['parindent']: