From 354647965893d6803c32f69fe21767ec8397cebf Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Fri, 18 Feb 2022 23:36:53 -0800 Subject: [PATCH] optimize: don't deflate JPEGs with fancy DecodeParms settings This is overly cautious but will do for now. --- src/ocrmypdf/optimize.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/ocrmypdf/optimize.py b/src/ocrmypdf/optimize.py index 4bfc0d69..ec9f8423 100644 --- a/src/ocrmypdf/optimize.py +++ b/src/ocrmypdf/optimize.py @@ -93,9 +93,11 @@ def extract_image_filter( first_filtdp = pim.filter_decodeparms[0] second_filtdp = pim.filter_decodeparms[1] if ( - first_filtdp[0] == Name.FlateDecode + len(pim.filter_decodeparms) == 2 + and first_filtdp[0] == Name.FlateDecode and first_filtdp[1].get(Name.Predictor, 1) == 1 and second_filtdp[0] == Name.DCTDecode + and not second_filtdp[1] ): log.debug( f"xref {xref}: found image compressed as /FlateDecode /DCTDecode, " @@ -466,7 +468,7 @@ def _find_deflatable_jpeg( return None pim, filtdp = result - if filtdp[0] == Name.DCTDecode and options.optimize >= 1: + if filtdp[0] == Name.DCTDecode and not filtdp[1] and options.optimize >= 1: return XrefExt(xref, '.memory') return None