|
32 | 32 | def test_get_num_pages(src, num_pages): |
33 | 33 | src = os.path.join(RESOURCE_ROOT, src) |
34 | 34 | reader = PdfFileReader(src) |
35 | | - assert reader.getNumPages() == num_pages |
| 35 | + assert reader.numPages == num_pages |
36 | 36 |
|
37 | 37 |
|
38 | 38 | @pytest.mark.parametrize( |
@@ -71,7 +71,7 @@ def test_get_num_pages(src, num_pages): |
71 | 71 | def test_read_metadata(pdf_path, expected): |
72 | 72 | with open(pdf_path, "rb") as inputfile: |
73 | 73 | reader = PdfFileReader(inputfile) |
74 | | - docinfo = reader.getDocumentInfo() |
| 74 | + docinfo = reader.documentInfo |
75 | 75 | metadict = dict(docinfo) |
76 | 76 | assert metadict == expected |
77 | 77 | docinfo.title |
@@ -117,7 +117,7 @@ def test_get_attachments(src): |
117 | 117 | reader = PdfFileReader(src) |
118 | 118 |
|
119 | 119 | attachments = {} |
120 | | - for i in range(reader.getNumPages()): |
| 120 | + for i in range(reader.numPages): |
121 | 121 | page = reader.getPage(i) |
122 | 122 | if PG.ANNOTS in page: |
123 | 123 | for annotation in page[PG.ANNOTS]: |
@@ -485,20 +485,20 @@ def test_read_unknown_zero_pages(): |
485 | 485 | pdf_stream = io.BytesIO(pdf_data) |
486 | 486 | with pytest.raises(PdfReadError) as exc: |
487 | 487 | reader = PdfFileReader(pdf_stream, strict=True) |
488 | | - reader.getNumPages() |
| 488 | + reader.numPages |
489 | 489 |
|
490 | 490 | assert exc.value.args[0] == "Could not find object." |
491 | 491 | reader = PdfFileReader(pdf_stream, strict=False) |
492 | 492 | with pytest.raises(AttributeError) as exc: |
493 | | - reader.getNumPages() |
| 493 | + reader.numPages |
494 | 494 | assert exc.value.args[0] == "'NoneType' object has no attribute 'getObject'" |
495 | 495 |
|
496 | 496 |
|
497 | 497 | def test_read_encrypted_without_decryption(): |
498 | 498 | src = os.path.join(RESOURCE_ROOT, "libreoffice-writer-password.pdf") |
499 | 499 | reader = PdfFileReader(src) |
500 | 500 | with pytest.raises(PdfReadError) as exc: |
501 | | - reader.getNumPages() |
| 501 | + reader.numPages |
502 | 502 | assert exc.value.args[0] == "File has not been decrypted" |
503 | 503 |
|
504 | 504 |
|
@@ -537,3 +537,34 @@ def test_PdfReaderDecryptWhenNoID(): |
537 | 537 | ipdf = PdfFileReader(inputfile) |
538 | 538 | ipdf.decrypt("") |
539 | 539 | assert ipdf.getDocumentInfo() == {"/Producer": "European Patent Office"} |
| 540 | + |
| 541 | + |
| 542 | +def test_reader_properties(): |
| 543 | + reader = PdfFileReader(os.path.join(RESOURCE_ROOT, "crazyones.pdf")) |
| 544 | + assert reader.outlines == [] |
| 545 | + assert len(reader.pages) == 1 |
| 546 | + assert reader.pageLayout is None |
| 547 | + assert reader.pageMode is None |
| 548 | + assert reader.isEncrypted is False |
| 549 | + |
| 550 | + |
| 551 | +def test_decode_permissions(): |
| 552 | + reader = PdfFileReader(os.path.join(RESOURCE_ROOT, "crazyones.pdf")) |
| 553 | + base = { |
| 554 | + "accessability": False, |
| 555 | + "annotations": False, |
| 556 | + "assemble": False, |
| 557 | + "copy": False, |
| 558 | + "forms": False, |
| 559 | + "modify": False, |
| 560 | + "print_high_quality": False, |
| 561 | + "print": False, |
| 562 | + } |
| 563 | + |
| 564 | + print_ = base.copy() |
| 565 | + print_["print"] = True |
| 566 | + assert reader.decode_permissions(4) == print_ |
| 567 | + |
| 568 | + modify = base.copy() |
| 569 | + modify["modify"] = True |
| 570 | + assert reader.decode_permissions(8) == modify |
0 commit comments