Add progress bar for PdfInfo step

This commit is contained in:
James R. Barlow
2019-06-05 03:08:04 -07:00
parent 20ad032977
commit 81fc95556c
3 changed files with 20 additions and 10 deletions
+4 -2
View File
@@ -144,9 +144,11 @@ def triage(input_file, output_file, options, log):
return output_file
def get_pdfinfo(input_file, detailed_page_analysis=False):
def get_pdfinfo(input_file, detailed_page_analysis=False, progbar=False):
try:
return PdfInfo(input_file, detailed_page_analysis=detailed_page_analysis)
return PdfInfo(
input_file, detailed_page_analysis=detailed_page_analysis, progbar=progbar
)
except pikepdf.PasswordError:
raise EncryptedPdfError()
except pikepdf.PdfError:
+5 -4
View File
@@ -55,9 +55,6 @@ from ._pipeline import (
validate_pdfinfo_options,
)
from ._validation import (
check_dependency_versions,
check_environ,
check_options,
check_requested_output_file,
create_input_file,
report_output_file_size,
@@ -320,7 +317,11 @@ def run_pipeline(options, api=False):
)
# Gather pdfinfo and create context
pdfinfo = get_pdfinfo(origin_pdf, detailed_page_analysis=options.redo_ocr)
pdfinfo = get_pdfinfo(
origin_pdf,
detailed_page_analysis=options.redo_ocr,
progbar=options.progress_bar,
)
context = PDFContext(options, work_folder, origin_pdf, pdfinfo)
# Validate options are okay for this pdf
+11 -4
View File
@@ -28,6 +28,7 @@ import re
from pikepdf import PdfMatrix
import pikepdf
from tqdm import tqdm
from . import ghosttext
@@ -616,7 +617,7 @@ def _pdf_get_pageinfo(pdf, pageno: int, infile, xmltext):
return pageinfo
def _pdf_get_all_pageinfo(infile, detailed_analysis=False, log=None):
def _pdf_get_all_pageinfo(infile, detailed_analysis=False, log=None, progbar=False):
pdf = pikepdf.open(infile) # Do not close in this function
if pdf.is_encrypted:
pdf.close()
@@ -627,7 +628,13 @@ def _pdf_get_all_pageinfo(infile, detailed_analysis=False, log=None):
pages_xml = ghosttext.extract_text_xml(infile, pdf, pageno=None, log=log)
pages = []
for n in range(len(pdf.pages)):
for n, _ in tqdm(
enumerate(pdf.pages),
total=len(pdf.pages),
desc="Scan",
unit='page',
disable=not progbar,
):
page_xml = pages_xml[n] if pages_xml else None
page = PageInfo(pdf, n, infile, page_xml, detailed_analysis)
pages.append(page)
@@ -749,10 +756,10 @@ class PageInfo:
class PdfInfo:
"""Get summary information about a PDF"""
def __init__(self, infile, detailed_page_analysis=False, log=logger):
def __init__(self, infile, detailed_page_analysis=False, log=logger, progbar=False):
self._infile = infile
self._pages, pdf = _pdf_get_all_pageinfo(
infile, detailed_page_analysis, log=log
infile, detailed_page_analysis, log=log, progbar=progbar
)
self._needs_rendering = pdf.root.get('/NeedsRendering', False)
self._has_acroform = False