From 2fb6ab39396bc171f7196caad8cea153e9557cf9 Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 16 Apr 2018 17:29:10 -0700 Subject: [PATCH] Trap writePNG error --- src/ocrmypdf/_optimize.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/ocrmypdf/_optimize.py b/src/ocrmypdf/_optimize.py index 1c959899..b93e1e5f 100644 --- a/src/ocrmypdf/_optimize.py +++ b/src/ocrmypdf/_optimize.py @@ -35,7 +35,7 @@ def make_img_name(root, xref): return str(root / '{:08d}.png'.format(xref)) -def extract_images(doc, pike, root): +def extract_images(doc, pike, root, log): # Extract images we can improve changed_xrefs = set() jbig2_groups = defaultdict(lambda: []) @@ -51,7 +51,12 @@ def extract_images(doc, pike, root): if bpc == 1 and filt != 'JBIG2Decode': # Monochrome: convert to JBIG2 if not already pix = fitz.Pixmap(doc, xref) - pix.writePNG(make_img_name(root, xref), savealpha=False) + try: + pix.writePNG(make_img_name(root, xref), savealpha=False) + except RuntimeError as e: + log.error('page {} xref {}'.format(pageno, xref)) + log.error(e) + continue changed_xrefs.add(xref) jbig2_groups[group].append(xref) elif filt == 'DCTDecode' and cs in SIMPLE_COLORSPACES: @@ -70,7 +75,12 @@ def extract_images(doc, pike, root): # raw_png_data = raw_png.read_raw_bytes() # (root / '{:08d}.png'.format(xref)).write_bytes(raw_png_data) pix = fitz.Pixmap(doc, xref) - pix.writePNG(make_img_name(root, xref), savealpha=False) + try: + pix.writePNG(make_img_name(root, xref), savealpha=False) + except RuntimeError as e: + log.error('page {} xref {}'.format(pageno, xref)) + log.error(e) + continue changed_xrefs.add(xref) pngs.append(xref) return changed_xrefs, jbig2_groups, jpegs, pngs @@ -179,7 +189,8 @@ def optimize( root = Path(output_file).parent / 'images' root.mkdir() - changed_xrefs, jbig2_groups, jpegs, pngs = extract_images(doc, pike, root) + changed_xrefs, jbig2_groups, jpegs, pngs = extract_images( + doc, pike, root, log) convert_to_jbig2(pike, jbig2_groups, root, log, options)