PDF Output: Handle input epub documents with filenames starting with a dot. Also do not hang if there is an unhandled error. Fixes #1040603 (Hangs when converting from epub to pdf)

This commit is contained in:
Kovid Goyal 2012-08-23 19:28:56 +05:30
parent 755d262b67
commit 259ea7b4c6
2 changed files with 14 additions and 5 deletions

View File

@ -35,6 +35,8 @@ def load_html(path, view, codec='utf-8', mime_type=None,
from PyQt4.Qt import QUrl, QByteArray
if mime_type is None:
mime_type = guess_type(path)[0]
if not mime_type:
mime_type = 'text/html'
if path_is_html:
html = path
else:

View File

@ -151,16 +151,22 @@ class PDFWriter(QObject): # {{{
self.combine_queue = []
self.out_stream = out_stream
self.render_succeeded = False
QMetaObject.invokeMethod(self, "_render_book", Qt.QueuedConnection)
self.loop.exec_()
if not self.render_succeeded:
raise Exception('Rendering HTML to PDF failed')
@QtCore.pyqtSignature('_render_book()')
def _render_book(self):
if len(self.render_queue) == 0:
self._write()
else:
self._render_next()
try:
if len(self.render_queue) == 0:
self._write()
else:
self._render_next()
except:
self.logger.exception('Rendering failed')
self.loop.exit(1)
def _render_next(self):
item = unicode(self.render_queue.pop(0))
@ -252,6 +258,7 @@ class PDFWriter(QObject): # {{{
for page in inputPDF.pages:
outPDF.addPage(page)
outPDF.write(self.out_stream)
self.render_succeeded = True
finally:
self._delete_tmpdir()
self.loop.exit(0)