Wrap a proxy around pdfinfo block so it can be passed around processes

This commit is contained in:
Jim Barlow
2015-07-23 03:49:30 -07:00
parent 7fd172e41e
commit 5df187c086
+17 -7
View File
@@ -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'])