diff --git a/cps/book_formats.py b/cps/book_formats.py index 93febb4b..5ed8d29c 100644 --- a/cps/book_formats.py +++ b/cps/book_formats.py @@ -35,6 +35,7 @@ logger = logging.getLogger("book_formats") try: from wand.image import Image from wand import version as ImageVersion + from wand.exceptions import PolicyError use_generic_pdf_cover = False except (ImportError, RuntimeError) as e: logger.warning('cannot import Image, generating pdf covers for pdf uploads will not work: %s', e) @@ -130,12 +131,18 @@ def pdf_preview(tmp_file_path, tmp_dir): if use_generic_pdf_cover: return None else: - cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.jpg" - with Image(filename=tmp_file_path + "[0]", resolution=150) as img: - img.compression_quality = 88 - img.save(filename=os.path.join(tmp_dir, cover_file_name)) - return cover_file_name - + try: + cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.jpg" + with Image(filename=tmp_file_path + "[0]", resolution=150) as img: + img.compression_quality = 88 + img.save(filename=os.path.join(tmp_dir, cover_file_name)) + return cover_file_name + except PolicyError as ex: + logger.warning('Pdf extraction forbidden by Imagemagick policy: %s', ex) + return None + except Exception as ex: + logger.warning('Cannot extract cover image, using default: %s', ex) + return None def get_versions(): if not use_generic_pdf_cover: