From c61b5dcb62c4d3e8d7e5ddd1b02fa8d4c34b795a Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Sat, 14 Apr 2018 01:36:46 -0700 Subject: [PATCH] Fix PDF/A validation error from setting /Predictor 0 --- src/ocrmypdf/pipeline.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/ocrmypdf/pipeline.py b/src/ocrmypdf/pipeline.py index 6329d76b..ea522892 100644 --- a/src/ocrmypdf/pipeline.py +++ b/src/ocrmypdf/pipeline.py @@ -1159,15 +1159,20 @@ def optimize_pdf( pikepdf.Null() ) + # from ocrmypdf.exec import pngquant + # for xref in pngs: + # pngquant.quantize(make_img_name(xref), make_img_name(xref), 65, 80) + for xref in pngs: im_obj = pike._get_object_id(xref, 0) - pix = leptonica.Pix.read((root / '{:08d}.png'.format(xref))) + pix = leptonica.Pix.read(make_img_name(xref)) compdata = pix.generate_pdf_ci_data(leptonica.lept.L_FLATE_ENCODE, 0) + predictor = pikepdf.Null() + if compdata.predictor > 0: + predictor = pikepdf.Dictionary({'/Predictor': compdata.predictor}) + im_obj.write( - compdata.read(), pikepdf.Name('/FlateDecode'), - pikepdf.Dictionary({ - '/Predictor': compdata.predictor - }) + compdata.read(), pikepdf.Name('/FlateDecode'), predictor )