From 9bb6fa04cb0e2cc64fcd15d291fa97b81ad9bb9a Mon Sep 17 00:00:00 2001 From: "James R. Barlow" Date: Mon, 8 Feb 2016 00:09:31 -0800 Subject: [PATCH] Return logging to a semblance of normalcy --- ocrmypdf/main.py | 29 ++++++++++++++++++++++++----- ocrmypdf/qpdf.py | 11 ++++++++--- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/ocrmypdf/main.py b/ocrmypdf/main.py index 56506465..62e301a4 100755 --- a/ocrmypdf/main.py +++ b/ocrmypdf/main.py @@ -12,6 +12,7 @@ import multiprocessing import atexit import textwrap import img2pdf +import logging import PyPDF2 as pypdf from PIL import Image @@ -105,7 +106,7 @@ parser = cmdline.get_argparse( ignored_args=[ 'touch_files_only', 'recreate_database', 'checksum_file_name', 'key_legend_in_graph', 'draw_graph_horizontally', 'flowchart_format', - 'forced_tasks', 'target_tasks', 'use_threads', 'jobs']) + 'forced_tasks', 'target_tasks', 'use_threads', 'jobs', 'log_file']) parser.add_argument( 'input_file', @@ -122,7 +123,7 @@ parser.add_argument( metadata = parser.add_argument_group( "Metadata options", - "Set output PDF/A metadata (default: use input document's title)") + "Set output PDF/A metadata (default: use input document's metadata)") metadata.add_argument( '--title', type=str, help="set document title (place multiple words in quotes)") @@ -131,7 +132,7 @@ metadata.add_argument( help="set document author") metadata.add_argument( '--subject', type=str, - help="set document") + help="set document subject description") metadata.add_argument( '--keywords', type=str, help="set document keywords") @@ -259,8 +260,20 @@ if options.pdf_renderer == 'hocr': # Logging -_logger, _logger_mutex = cmdline.setup_logging(__name__, options.log_file, - options.verbose) +# Let ruffus configure logging +_logger, _logger_mutex = cmdline.setup_logging(__name__, log_file_name=None, + verbose=True) + +# Hijack the root logger it configures +root_logger = logging.getLogger(__name__) + +# Find the stderr handler and ensure it produces sane output +for handler in root_logger.handlers: + if isinstance(handler, logging.StreamHandler): + formatter_ = logging.Formatter("%(message)s") + handler.setFormatter(formatter_) + if not options.verbose: + handler.setLevel(logging.WARNING) class WrappedLogger: @@ -429,6 +442,12 @@ def split_pages( with suppress(FileNotFoundError): os.unlink(oo) + # If no files were repaired the input will be empty + if not input_file: + log.error("{0}: file not found or invalid argument".format( + options.input_file)) + sys.exit(ExitCode.input_file) + npages = qpdf.get_npages(input_file) qpdf.split_pages(input_file, work_folder, npages) diff --git a/ocrmypdf/qpdf.py b/ocrmypdf/qpdf.py index 7d88e1f0..b17b88c4 100644 --- a/ocrmypdf/qpdf.py +++ b/ocrmypdf/qpdf.py @@ -63,9 +63,14 @@ def repair(input_file, output_file, log): def get_npages(input_file): - pages = check_output( - [get_program('qpdf'), '--show-npages', input_file], - universal_newlines=True, close_fds=True) + try: + pages = check_output( + [get_program('qpdf'), '--show-npages', input_file], + universal_newlines=True, close_fds=True) + except CalledProcessError as e: + if e.returncode == 2 and e.output.find('No such file'): + log.error(e.output) + sys.exit(ExitCode.input_file) return int(pages)