Report progress in pdf output engine

This commit is contained in:
Kovid Goyal 2012-12-24 08:28:36 +05:30
parent 52faba3c23
commit 4edf62a269
2 changed files with 9 additions and 3 deletions

View File

@ -215,6 +215,7 @@ class PDFOutput(OutputFormatPlugin):
def write(self, Writer, items, toc): def write(self, Writer, items, toc):
writer = Writer(self.opts, self.log, cover_data=self.cover_data, writer = Writer(self.opts, self.log, cover_data=self.cover_data,
toc=toc) toc=toc)
writer.report_progress = self.report_progress
close = False close = False
if not hasattr(self.output_path, 'write'): if not hasattr(self.output_path, 'write'):

View File

@ -7,7 +7,7 @@ __license__ = 'GPL v3'
__copyright__ = '2012, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2012, Kovid Goyal <kovid at kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import json import json, os
from future_builtins import map from future_builtins import map
from math import floor from math import floor
@ -141,23 +141,25 @@ class PDFWriter(QObject):
for x in (Qt.Horizontal, Qt.Vertical): for x in (Qt.Horizontal, Qt.Vertical):
self.view.page().mainFrame().setScrollBarPolicy(x, self.view.page().mainFrame().setScrollBarPolicy(x,
Qt.ScrollBarAlwaysOff) Qt.ScrollBarAlwaysOff)
self.report_progress = lambda x, y: x
def dump(self, items, out_stream, pdf_metadata): def dump(self, items, out_stream, pdf_metadata):
opts = self.opts opts = self.opts
self.outline = Outline(self.toc, items) self.outline = Outline(self.toc, items)
page_size = get_page_size(self.opts) page_size = get_page_size(self.opts)
dpi = min(self.opts.input_profile.dpi, 150) xdpi, ydpi = self.view.logicalDpiX(), self.view.logicalDpiY()
ml, mr = opts.margin_left, opts.margin_right ml, mr = opts.margin_left, opts.margin_right
margin_side = min(ml, mr) margin_side = min(ml, mr)
ml, mr = ml - margin_side, mr - margin_side ml, mr = ml - margin_side, mr - margin_side
self.doc = PdfDevice(out_stream, page_size=page_size, left_margin=ml, self.doc = PdfDevice(out_stream, page_size=page_size, left_margin=ml,
top_margin=0, right_margin=mr, bottom_margin=0, top_margin=0, right_margin=mr, bottom_margin=0,
xdpi=dpi, ydpi=dpi, errors=self.log.error, xdpi=xdpi, ydpi=ydpi, errors=self.log.error,
debug=self.log.debug, compress=not debug=self.log.debug, compress=not
opts.uncompressed_pdf) opts.uncompressed_pdf)
self.page.setViewportSize(QSize(self.doc.width(), self.doc.height())) self.page.setViewportSize(QSize(self.doc.width(), self.doc.height()))
self.render_queue = items self.render_queue = items
self.total_items = len(items)
self.first_page = True self.first_page = True
# TODO: Test margins # TODO: Test margins
@ -223,6 +225,9 @@ class PDFWriter(QObject):
self.logger.error('Document cannot be rendered.') self.logger.error('Document cannot be rendered.')
self.loop.exit(1) self.loop.exit(1)
return return
done = self.total_items - len(self.render_queue)
self.report_progress(done/self.total_items,
_('Rendered %s'%os.path.basename(self.current_item)))
self.render_book() self.render_book()
@property @property