From 6a9269b432b861fdd8de6f532759833faf9a9159 Mon Sep 17 00:00:00 2001 From: madhurcodes Date: Sat, 11 Jul 2020 19:34:11 +0530 Subject: [PATCH] Change Text extraction is not allowed error to warning (#453) * Changed error to warning for 'Text extraction is not allowed' * updated changelog * fix lint * made changes suggested in review * Update CHANGELOG.md * Add regression test for failing pdf * Reduce line length to <80 Co-authored-by: Pieter Marsman --- CHANGELOG.md | 3 ++- pdfminer/high_level.py | 4 +--- pdfminer/pdfdocument.py | 6 ++++- pdfminer/pdfpage.py | 22 +++++++++++++----- samples/contrib/issue-00352-asw-oct96-p41.pdf | Bin 0 -> 47426 bytes tests/test_tools_pdf2txt.py | 7 +++++- 6 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 samples/contrib/issue-00352-asw-oct96-p41.pdf diff --git a/CHANGELOG.md b/CHANGELOG.md index e5483d6..97ccbbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed - Hiding fallback xref by default from dumppdf.py output ([#431](https://github.com/pdfminer/pdfminer.six/pull/431)) - +- Raise a warning instead of an error when extracting text from a non-extractable PDF ([#350](https://github.com/pdfminer/pdfminer.six/issues/350)) + ## [20200517] ### Added diff --git a/pdfminer/high_level.py b/pdfminer/high_level.py index 1686c46..644c6ca 100644 --- a/pdfminer/high_level.py +++ b/pdfminer/high_level.py @@ -80,8 +80,7 @@ def extract_text_to_fp(inf, outfp, output_type='text', codec='utf-8', page_numbers, maxpages=maxpages, password=password, - caching=not disable_caching, - check_extractable=True): + caching=not disable_caching): page.rotate = (page.rotate + rotation) % 360 interpreter.process_page(page) @@ -118,7 +117,6 @@ def extract_text(pdf_file, password='', page_numbers=None, maxpages=0, maxpages=maxpages, password=password, caching=caching, - check_extractable=True, ): interpreter.process_page(page) diff --git a/pdfminer/pdfdocument.py b/pdfminer/pdfdocument.py index 71852ee..760073c 100644 --- a/pdfminer/pdfdocument.py +++ b/pdfminer/pdfdocument.py @@ -44,7 +44,11 @@ class PDFPasswordIncorrect(PDFEncryptionError): pass -class PDFTextExtractionNotAllowed(PDFEncryptionError): +class PDFTextExtractionNotAllowedWarning(UserWarning): + pass + + +class PDFTextExtractionNotAllowedError(PDFEncryptionError): pass diff --git a/pdfminer/pdfpage.py b/pdfminer/pdfpage.py index 7a9b622..dc0a424 100644 --- a/pdfminer/pdfpage.py +++ b/pdfminer/pdfpage.py @@ -1,4 +1,5 @@ import logging +import warnings from . import settings from .psparser import LIT from .pdftypes import PDFObjectNotFound @@ -8,7 +9,8 @@ from .pdftypes import list_value from .pdftypes import dict_value from .pdfparser import PDFParser from .pdfdocument import PDFDocument -from .pdfdocument import PDFTextExtractionNotAllowed +from .pdfdocument import PDFTextExtractionNotAllowedWarning +from .pdfdocument import PDFTextExtractionNotAllowedError log = logging.getLogger(__name__) @@ -120,15 +122,23 @@ class PDFPage: @classmethod def get_pages(cls, fp, pagenos=None, maxpages=0, password='', - caching=True, check_extractable=True): + caching=True, check_extractable=False): # Create a PDF parser object associated with the file object. parser = PDFParser(fp) # Create a PDF document object that stores the document structure. doc = PDFDocument(parser, password=password, caching=caching) - # Check if the document allows text extraction. If not, abort. - if check_extractable and not doc.is_extractable: - error_msg = 'Text extraction is not allowed: %r' % fp - raise PDFTextExtractionNotAllowed(error_msg) + # Check if the document allows text extraction. + # If not, warn the user and proceed. + if not doc.is_extractable: + if check_extractable: + error_msg = 'Text extraction is not allowed: %r' % fp + raise PDFTextExtractionNotAllowedError(error_msg) + else: + warning_msg = 'The PDF %r contains a metadata field '\ + 'indicating that it should not allow ' \ + 'text extraction. Ignoring this field ' \ + 'and proceeding.' % fp + warnings.warn(warning_msg, PDFTextExtractionNotAllowedWarning) # Process each page contained in the document. for (pageno, page) in enumerate(cls.create_pages(doc)): if pagenos and (pageno not in pagenos): diff --git a/samples/contrib/issue-00352-asw-oct96-p41.pdf b/samples/contrib/issue-00352-asw-oct96-p41.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f61d3838631711c24533d44e9e75b6c73e53bba1 GIT binary patch literal 47426 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 J5R(VM{XgFN`&0k` literal 0 HcmV?d00001 diff --git a/tests/test_tools_pdf2txt.py b/tests/test_tools_pdf2txt.py index 459e19b..bb9545d 100644 --- a/tests/test_tools_pdf2txt.py +++ b/tests/test_tools_pdf2txt.py @@ -60,12 +60,17 @@ class TestPdf2Txt(): def test_contrib_2b(self): run('contrib/2b.pdf', '-A -t xml') + def test_contrib_issue_350(self): + """Regression test for + https://github.com/pdfminer/pdfminer.six/issues/350""" + run('contrib/issue-00352-asw-oct96-p41.pdf') + def test_scancode_patchelf(self): """Regression test for # https://github.com/euske/pdfminer/issues/96""" run('scancode/patchelf.pdf') def test_contrib_hash_two_complement(self): - """Check that unsigned integer is added correctly to encryption hash. + """Check that unsigned integer is added correctly to encryption hash.et See https://github.com/pdfminer/pdfminer.six/issues/186 """