diff --git a/src/calibre/ebooks/lrf/lrfparser.py b/src/calibre/ebooks/lrf/lrfparser.py index a80e06d8e3..d74841515c 100644 --- a/src/calibre/ebooks/lrf/lrfparser.py +++ b/src/calibre/ebooks/lrf/lrfparser.py @@ -77,7 +77,7 @@ class LRFDocument(LRFMetaFile): for obj in self.image_map.values() + self.font_map.values(): open(obj.file, 'wb').write(obj.stream) - def to_xml(self): + def to_xml(self, write_files=True): bookinfo = u'\n\n\n' bookinfo += u'%s\n'%(self.metadata.title_reading, self.metadata.title) bookinfo += u'%s\n'%(self.metadata.author_reading, self.metadata.author) @@ -91,7 +91,8 @@ class LRFDocument(LRFMetaFile): if th: prefix = sanitize_file_name(self.metadata.title, as_unicode=True) bookinfo += u'\n'%(prefix+'_thumbnail.'+self.doc_info.thumbnail_extension,) - open(prefix+'_thumbnail.'+self.doc_info.thumbnail_extension, 'wb').write(th) + if write_files: + open(prefix+'_thumbnail.'+self.doc_info.thumbnail_extension, 'wb').write(th) bookinfo += u'%s\n'%(self.doc_info.language,) bookinfo += u'%s\n'%(self.doc_info.creator,) bookinfo += u'%s\n'%(self.doc_info.producer,) @@ -127,12 +128,16 @@ class LRFDocument(LRFMetaFile): objects += unicode(obj) styles += '\n' objects += '\n' - self.write_files() + if write_files: + self.write_files() return '\n' + bookinfo + pages + styles + objects + '' def option_parser(): parser = OptionParser(usage=_('%prog book.lrf\nConvert an LRF file into an LRS (XML UTF-8 encoded) file')) parser.add_option('--output', '-o', default=None, help=_('Output LRS file'), dest='out') + parser.add_option('--dont-output-resources', default=True, action='store_false', + help=_('Do not save embedded image and font files to disk'), + dest='output_resources') parser.add_option('--verbose', default=False, action='store_true', dest='verbose') return parser @@ -154,7 +159,7 @@ def main(args=sys.argv, logger=None): d = LRFDocument(open(args[1], 'rb')) d.parse() logger.info(_('Creating XML...')) - o.write(d.to_xml()) + o.write(d.to_xml(write_files=opts.output_resources)) logger.info(_('LRS written to ')+opts.out) return 0