diff --git a/src/calibre/ebooks/oeb/display/webview.py b/src/calibre/ebooks/oeb/display/webview.py index 8b89f54176..d42d6ae545 100644 --- a/src/calibre/ebooks/oeb/display/webview.py +++ b/src/calibre/ebooks/oeb/display/webview.py @@ -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: diff --git a/src/calibre/ebooks/pdf/writer.py b/src/calibre/ebooks/pdf/writer.py index 7e179cef48..41cdc5e498 100644 --- a/src/calibre/ebooks/pdf/writer.py +++ b/src/calibre/ebooks/pdf/writer.py @@ -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)