Fix 594 use null id when encrypted but no id given (#595)
Co-authored-by: Pieter Marsman <pietermarsman@gmail.com>pull/600/head^2
parent
234c466372
commit
a70f08818d
|
@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- Support for Paeth PNG filter compression (predictor value = 4) ([#537](https://github.com/pdfminer/pdfminer.six/pull/537))
|
- Support for Paeth PNG filter compression (predictor value = 4) ([#537](https://github.com/pdfminer/pdfminer.six/pull/537))
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
- `KeyError` when `'Encrypt'` but not `'ID'` present in `trailer` ([#594](https://github.com/pdfminer/pdfminer.six/pull/594))
|
||||||
- Fix issue of ValueError and KeyError rasied in PDFdocument and PDFparser ([#573](https://github.com/pdfminer/pdfminer.six/pull/574))
|
- Fix issue of ValueError and KeyError rasied in PDFdocument and PDFparser ([#573](https://github.com/pdfminer/pdfminer.six/pull/574))
|
||||||
- Fix issue of TypeError: cannot unpack non-iterable PDFObjRef object, when unpacking the value of 'DW2' ([#529](https://github.com/pdfminer/pdfminer.six/pull/529))
|
- Fix issue of TypeError: cannot unpack non-iterable PDFObjRef object, when unpacking the value of 'DW2' ([#529](https://github.com/pdfminer/pdfminer.six/pull/529))
|
||||||
- `PermissionError` when creating temporary filepaths on windows when running tests ([#469](https://github.com/pdfminer/pdfminer.six/issues/469))
|
- `PermissionError` when creating temporary filepaths on windows when running tests ([#469](https://github.com/pdfminer/pdfminer.six/issues/469))
|
||||||
|
|
|
@ -583,7 +583,14 @@ class PDFDocument:
|
||||||
continue
|
continue
|
||||||
# If there's an encryption info, remember it.
|
# If there's an encryption info, remember it.
|
||||||
if 'Encrypt' in trailer:
|
if 'Encrypt' in trailer:
|
||||||
self.encryption = (list_value(trailer['ID']),
|
if 'ID' in trailer:
|
||||||
|
id_value = list_value(trailer['ID'])
|
||||||
|
else:
|
||||||
|
# Some documents may not have a /ID, use two empty
|
||||||
|
# byte strings instead. Solves
|
||||||
|
# https://github.com/pdfminer/pdfminer.six/issues/594
|
||||||
|
id_value = (b'', b'')
|
||||||
|
self.encryption = (id_value,
|
||||||
dict_value(trailer['Encrypt']))
|
dict_value(trailer['Encrypt']))
|
||||||
self._initialize_password(password)
|
self._initialize_password(password)
|
||||||
if 'Info' in trailer:
|
if 'Info' in trailer:
|
||||||
|
|
Binary file not shown.
|
@ -1,4 +1,4 @@
|
||||||
from nose.tools import raises
|
from nose.tools import assert_equal, raises
|
||||||
|
|
||||||
from helpers import absolute_sample_path
|
from helpers import absolute_sample_path
|
||||||
from pdfminer.pdfdocument import PDFDocument
|
from pdfminer.pdfdocument import PDFDocument
|
||||||
|
@ -14,3 +14,14 @@ class TestPdfDocument(object):
|
||||||
parser = PDFParser(in_file)
|
parser = PDFParser(in_file)
|
||||||
doc = PDFDocument(parser)
|
doc = PDFDocument(parser)
|
||||||
doc.getobj(0)
|
doc.getobj(0)
|
||||||
|
|
||||||
|
def test_encrypted_no_id(self):
|
||||||
|
# Some documents may be encrypted but not have an /ID key in
|
||||||
|
# their trailer. Tests
|
||||||
|
# https://github.com/pdfminer/pdfminer.six/issues/594
|
||||||
|
path = absolute_sample_path('encryption/encrypted_doc_no_id.pdf')
|
||||||
|
with open(path, 'rb') as fp:
|
||||||
|
parser = PDFParser(fp)
|
||||||
|
doc = PDFDocument(parser)
|
||||||
|
assert_equal(doc.info,
|
||||||
|
[{'Producer': b'European Patent Office'}])
|
||||||
|
|
Loading…
Reference in New Issue