def unpack(self, book_id, fmt): ''' Unpack the book in a temporary directory :param book_id: The book identifier :param fmt: The format to unpack ''' from calibre.constants import DEBUG from calibre.ptempfile import PersistentTemporaryDirectory from calibre.ebooks.tweak import get_tools from calibre.ebooks.oeb.base import OEBBook from calibre.ebooks.oeb.reader import OEBReader from calibre.utils.logging import default_log from calibre_plugins.prince_pdf.dummy_preprocessor import dummy_preprocessor book_file = self.db.format(book_id, fmt, index_is_id=True, as_path=True) if DEBUG: print(_('Unpacking book...')) tdir = PersistentTemporaryDirectory('_unpack') exploder = get_tools(fmt)[0] if (exploder == None): return (None, None) opf = exploder(book_file, tdir) html_preprocessor = dummy_preprocessor() css_preprocessor = dummy_preprocessor() oeb = OEBBook(default_log, html_preprocessor, css_preprocessor) OEBReader()(oeb, opf) return (opf, oeb)
def CreateOeb(log, path_or_stream, opts, encoding='utf-8'): from calibre.ebooks.conversion.preprocess import HTMLPreProcessor from calibre.ebooks.oeb.base import OEBBook html_preprocessor = HTMLPreProcessor(log, opts) if not encoding: encoding = None pretty_print = opts.pretty_print if opts else False return OEBBook(log, html_preprocessor, pretty_print=pretty_print, input_encoding=encoding)
def main(argv=sys.argv): reader = OEBReader() for arg in argv[1:]: oeb = reader(OEBBook(), arg) for name, doc in oeb.to_opf1().values(): print etree.tostring(doc, pretty_print=True) for name, doc in oeb.to_opf2(page_map=True).values(): print etree.tostring(doc, pretty_print=True) return 0
def CreateOeb(log, path_or_stream, opts, encoding='utf-8'): """创建一个空的OEB书籍 """ html_preprocessor = HTMLPreProcessor(log, opts) if not encoding: encoding = None return OEBBook(log, html_preprocessor, pretty_print=opts.pretty_print, input_encoding=encoding)
def add_page_map(opfpath, opts): oeb = OEBBook(opfpath) selector = XPath(opts.page, namespaces=NSMAP) name_for = build_name_for(opts.page_names) idgen = ("calibre-page-%d" % n for n in count(1)) for item in oeb.spine: data = item.data for elem in selector(data): name = name_for(elem) id = elem.get('id', None) if id is None: id = elem.attrib['id'] = next(idgen) href = '#'.join((item.href, id)) oeb.pages.add(name, href) writer = None # DirWriter(version='2.0', page_map=True) writer.dump(oeb, opfpath)
if x > SCREEN_X or y > SCREEN_Y: xScale = float(x) / SCREEN_X yScale = float(y) / SCREEN_Y scale = max(xScale, yScale) # TODO : intelligent image rotation # img = img.rotate(90) # x,y = y,x img = resize_image(img, x // scale, y // scale) with lopen(imagePath, 'wb') as f: f.write(image_to_data(img, fmt=imagePath.rpartition('.')[-1])) if __name__ == '__main__': from calibre.ebooks.oeb.reader import OEBReader from calibre.ebooks.oeb.base import OEBBook from calibre.ebooks.conversion.preprocess import HTMLPreProcessor from calibre.customize.profiles import HanlinV3Output class OptionValues: pass opts = OptionValues() opts.output_profile = HanlinV3Output(None) html_preprocessor = HTMLPreProcessor(None, None, opts) from calibre.utils.logging import default_log oeb = OEBBook(default_log, html_preprocessor) reader = OEBReader reader()(oeb, '/tmp/bbb/processed/') SNBOutput(None).convert(oeb, '/tmp/test.snb', None, None, default_log)