def Book(options, logger, font_delta=0, header=None, profile=PRS500_PROFILE, **settings): from uuid import uuid4 ps = {} ps['topmargin'] = options.top_margin ps['evensidemargin'] = options.left_margin ps['oddsidemargin'] = options.left_margin ps['textwidth'] = profile.screen_width - (options.left_margin + options.right_margin) ps['textheight'] = profile.screen_height - (options.top_margin + options.bottom_margin) \ - profile.fudge if header: hdr = Header() hb = TextBlock(textStyle=TextStyle(align='foot', fontsize=int( profile.header_font_size * 10)), blockStyle=BlockStyle(blockwidth=ps['textwidth'])) hb.append(header) hdr.PutObj(hb) ps['headheight'] = profile.header_height ps['headsep'] = options.header_separation ps['header'] = hdr ps['topmargin'] = 0 ps['textheight'] = profile.screen_height - (options.bottom_margin + ps['topmargin']) \ - ps['headheight'] - ps['headsep'] - profile.fudge fontsize = int(10 * profile.font_size + font_delta * 20) baselineskip = fontsize + 20 fonts = find_custom_fonts(options, logger) tsd = dict(fontsize=fontsize, parindent=int(10 * profile.parindent), linespace=int(10 * profile.line_space), baselineskip=baselineskip, wordspace=10 * options.wordspace) if fonts['serif'] and 'normal' in fonts['serif']: tsd['fontfacename'] = fonts['serif']['normal'][1] book = _Book(textstyledefault=tsd, pagestyledefault=ps, blockstyledefault=dict(blockwidth=ps['textwidth']), bookid=uuid4().hex, **settings) for family in fonts.keys(): if fonts[family]: for font in fonts[family].values(): book.embed_font(*font) FONT_FILE_MAP[font[1]] = font[0] for family in ['serif', 'sans', 'mono']: if not fonts[family]: fonts[family] = {'normal': (None, profile.default_fonts[family])} elif 'normal' not in fonts[family]: raise ConversionError('Could not find the normal version of the ' + family + ' font') return book, fonts
def Book(options, logger, font_delta=0, header=None, profile=PRS500_PROFILE, **settings): from uuid import uuid4 ps = {} ps['topmargin'] = options.top_margin ps['evensidemargin'] = options.left_margin ps['oddsidemargin'] = options.left_margin ps['textwidth'] = profile.screen_width - (options.left_margin + options.right_margin) ps['textheight'] = profile.screen_height - (options.top_margin + options.bottom_margin) \ - profile.fudge if header: hdr = Header() hb = TextBlock(textStyle=TextStyle(align='foot', fontsize=int(profile.header_font_size*10)), blockStyle=BlockStyle(blockwidth=ps['textwidth'])) hb.append(header) hdr.PutObj(hb) ps['headheight'] = profile.header_height ps['headsep'] = options.header_separation ps['header'] = hdr ps['topmargin'] = 0 ps['textheight'] = profile.screen_height - (options.bottom_margin + ps['topmargin']) \ - ps['headheight'] - ps['headsep'] - profile.fudge fontsize = int(10*profile.font_size+font_delta*20) baselineskip = fontsize + 20 fonts = find_custom_fonts(options, logger) tsd = dict(fontsize=fontsize, parindent=int(10*profile.parindent), linespace=int(10*profile.line_space), baselineskip=baselineskip, wordspace=10*options.wordspace) if fonts['serif'] and fonts['serif'].has_key('normal'): tsd['fontfacename'] = fonts['serif']['normal'][1] book = _Book(textstyledefault=tsd, pagestyledefault=ps, blockstyledefault=dict(blockwidth=ps['textwidth']), bookid=uuid4().hex, **settings) for family in fonts.keys(): if fonts[family]: for font in fonts[family].values(): book.embed_font(*font) FONT_FILE_MAP[font[1]] = font[0] for family in ['serif', 'sans', 'mono']: if not fonts[family]: fonts[family] = { 'normal' : (None, profile.default_fonts[family]) } elif not fonts[family].has_key('normal'): raise ConversionError, 'Could not find the normal version of the ' + family + ' font' return book, fonts