From 5df187c086ad306347b5e221dc6ee0bed1aea231 Mon Sep 17 00:00:00 2001 From: Jim Barlow Date: Thu, 23 Jul 2015 03:49:30 -0700 Subject: [PATCH] Wrap a proxy around pdfinfo block so it can be passed around processes --- src/ocrmypdf.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/ocrmypdf.py b/src/ocrmypdf.py index 7b4378b6..181966be 100755 --- a/src/ocrmypdf.py +++ b/src/ocrmypdf.py @@ -22,6 +22,7 @@ from ruffus import transform, suffix, merge, active_if, regex, jobs_limit, \ mkdir, formatter, follows, subdivide import ruffus.cmdline as cmdline import warnings +import multiprocessing from .hocrtransform import HocrTransform from .pageinfo import pdf_get_all_pageinfo @@ -180,7 +181,10 @@ def re_symlink(input_file, soft_link_name, log=_log): # ------------- # The Pipeline -_pdfinfo = [] +manager = multiprocessing.Manager() +_pdfinfo = manager.list() +_pdfinfo_lock = manager.Lock() + if options.temp_folder == '': options.temp_folder = 'tmp' @@ -191,19 +195,22 @@ if options.temp_folder == '': filter=suffix('.pdf'), output='.cleaned.pdf', output_dir=options.temp_folder, - extras=[_pdfinfo, _log]) + extras=[_log, _pdfinfo, _pdfinfo_lock]) def clean_pdf( input_file, output_file, + log, pdfinfo, - log): + pdfinfo_lock): args_mutool = [ 'mutool', 'clean', input_file, output_file ] check_call(args_mutool) - pdfinfo.extend(pdf_get_all_pageinfo(output_file)) + with pdfinfo_lock: + pdfinfo.extend(pdf_get_all_pageinfo(output_file)) + log.info(pdfinfo) # pageno, width_pt, height_pt = map(int, options.page_info.split(' ', 3)) @@ -249,19 +256,20 @@ def clean_pdf( formatter(), "{path[0]}/*.page.pdf", "{path[0]}/", + _log, _pdfinfo, - _log) + _pdfinfo_lock) def split_pages( input_file, output_files, output_file_name_root, + log, pdfinfo, - log): + pdfinfo_lock): for oo in output_files: with suppress(FileNotFoundError): os.unlink(oo) - log.info(output_file_name_root) args_pdfseparate = [ 'pdfseparate', input_file, @@ -269,6 +277,8 @@ def split_pages( ] check_call(args_pdfseparate) + log.info(pdfinfo[0]['width_inches']) +