From 3ddf545ccdbaad8a74710b964730c701f4668e3b Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Sat, 12 May 2018 01:21:19 -0700 Subject: [PATCH] optimize: leptonica can fail to open PNG ERROR - Info in pixReadStreamPng: converting (cmap + alpha) ==> RGBA Error in pixReadStreamPng: spp == 1, cmap, trans array, invalid depth: 4 To investigate later.... --- src/ocrmypdf/_optimize.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/ocrmypdf/_optimize.py b/src/ocrmypdf/_optimize.py index 0b2c91d6..e94fc59f 100644 --- a/src/ocrmypdf/_optimize.py +++ b/src/ocrmypdf/_optimize.py @@ -339,7 +339,7 @@ def transcode_jpegs(pike, jpegs, root, log, options): ) -def transcode_pngs(pike, pngs, root, options): +def transcode_pngs(pike, pngs, root, log, options): if options.optimize >= 2: with concurrent.futures.ThreadPoolExecutor( max_workers=options.jobs) as executor: @@ -353,8 +353,14 @@ def transcode_pngs(pike, pngs, root, options): im_obj = pike._get_object_id(xref, 0) # Open, transcode (!), package for PDF - pix = leptonica.Pix.open(png_name(root, xref)) - compdata = pix.generate_pdf_ci_data(leptonica.lept.L_FLATE_ENCODE, 0) + try: + pix = leptonica.Pix.open(png_name(root, xref)) + compdata = pix.generate_pdf_ci_data( + leptonica.lept.L_FLATE_ENCODE, 0 + ) + except leptonica.LeptonicaError as e: + log.error(e) + continue # This is what we should be doing: open the compressed data without # transcoding. However this shifts each pixel row by one for some @@ -420,7 +426,7 @@ def optimize( convert_to_jbig2(pike, jbig2_groups, root, log, options) transcode_jpegs(pike, jpegs, root, log, options) - transcode_pngs(pike, pngs, root, options) + transcode_pngs(pike, pngs, root, log, options) # Not object_stream_mode + preserve_pdfa generates noncompliant PDFs target_file = output_file + '_opt.pdf'