@@ -24,11 +24,11 @@ return r, g, b class HTML2FPDF(HTMLParser): "Render basic HTML to FPDF" - def __init__(self, pdf, image_map): + def __init__(self, pdf, image_map, **kwargs): HTMLParser.__init__(self) self.image_map = image_map self.style = {} self.pre = False self.href = '' @@ -37,11 +37,13 @@ self.font_list = ("times","courier", "helvetica") self.pdf = pdf self.r = self.g = self.b = 0 self.indent = 0 self.bullet = [] - self.set_font("times", 12) + self.font_face="times" # initialize font + self.color=0 # initialize font color + self.set_font(kwargs.get("font","times"), kwargs.get("fontsize",12)) self.table = None # table attributes self.table_col_width = None # column (header) widths self.table_col_index = None # current column index self.td = None # cell attributes self.th = False # header enabled @@ -213,12 +215,12 @@ if 'face' in attrs and attrs['face'].lower() in self.font_list: face = attrs.get('face').lower() self.pdf.set_font(face) self.font_face = face if 'size' in attrs: - face = attrs.get('size') - self.pdf.set_font('', size) + size = int(attrs.get('size')) + self.pdf.set_font(self.font_face, size=int(size)) self.font_size = size if tag=='table': self.table = dict([(k.lower(), v) for k,v in attrs.items()]) if not 'width' in self.table: self.table['width'] = '100%' @@ -323,13 +325,13 @@ self.th = False if tag=='font': if self.color: self.pdf.set_text_color(0,0,0) self.color = None - if self.font: - self.SetFont('Times','',12) - self.font = None + if self.font_face: + self.set_font('Times',12) + if tag=='center': self.align = None def set_font(self, face=None, size=None): if face: @@ -378,13 +380,13 @@ self.pdf.ln(2) self.pdf.line(self.pdf.get_x(),self.pdf.get_y(),self.pdf.get_x()+187,self.pdf.get_y()) self.pdf.ln(3) class HTMLMixin(): - def write_html(self, text, image_map=lambda x:x): + def write_html(self, text, image_map=lambda x:x, **kwargs): "Parse HTML and convert it to PDF" - h2p = HTML2FPDF(self,image_map=image_map) + h2p = HTML2FPDF(self,image_map=image_map,**kwargs) h2p.feed(text) if __name__=='__main__': html="""

html2fpdf

@@ -451,6 +453,7 @@ pdf.write_html(html) pdf.output('html.pdf','F') import os os.system("evince html.pdf") +