From 31b2fa065bedafffe8837b563cd315d361271459 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 19 Mar 2023 11:45:22 +0100 Subject: [PATCH 01/15] DOC: Add Felipe Ermeson as a contributor See https://github.com/py-pdf/pypdf/issues/1715 --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index 6f66e3a143..7c33213026 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -14,6 +14,7 @@ history and [GitHubs 'Contributors' feature](https://github.com/py-pdf/pypdf/gra * [abyesilyurt](https://github.com/abyesilyurt) * [DL6ER](https://github.com/DL6ER) * [ediamondscience](https://github.com/ediamondscience) +* [Ermeson, Felipe](https://github.com/FelipeErmeson) * [Górny, Michał](https://github.com/mgorny) * [Hale, Joseph](https://github.com/thehale) * [JianzhengLuo](https://github.com/JianzhengLuo) From c1013890ea510a1a7c6d8795a36028a94ca57233 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 19 Mar 2023 19:52:08 +0100 Subject: [PATCH 02/15] ENH: Add PolyLine annotation support (#1726) See #107 --- docs/user/adding-pdf-annotations.md | 26 ++++++++++++++ docs/user/annotation-polyline.png | Bin 0 -> 215165 bytes pypdf/generic/_annotations.py | 52 +++++++++++++++++++++++----- tests/test_generic.py | 28 +++++++++++++++ 4 files changed, 97 insertions(+), 9 deletions(-) create mode 100644 docs/user/annotation-polyline.png diff --git a/docs/user/adding-pdf-annotations.md b/docs/user/adding-pdf-annotations.md index 9db376375c..b65892c53d 100644 --- a/docs/user/adding-pdf-annotations.md +++ b/docs/user/adding-pdf-annotations.md @@ -89,6 +89,32 @@ with open("annotated-pdf.pdf", "wb") as fp: writer.write(fp) ``` +## PolyLine + +If you want to add a line like this: + +![](annotation-polyline.png) + +you can use the {py:class}`AnnotationBuilder `: + +```python +pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf") +reader = PdfReader(pdf_path) +page = reader.pages[0] +writer = PdfWriter() +writer.add_page(page) + +# Add the polyline +annotation = AnnotationBuilder.polyline( + vertices=[(50, 550), (200, 650), (70, 750), (50, 700)], +) +writer.add_annotation(page_number=0, annotation=annotation) + +# Write the annotated file to disk +with open("annotated-pdf.pdf", "wb") as fp: + writer.write(fp) +``` + ## Rectangle If you want to add a rectangle like this: diff --git a/docs/user/annotation-polyline.png b/docs/user/annotation-polyline.png new file mode 100644 index 0000000000000000000000000000000000000000..5d06d9191e5f8fb14e02f04c3ac7b4f1e527ccc8 GIT binary patch literal 215165 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®0Z1mLL{~SFkj2WaE?ZJ|(gWO8*4RNr6 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 u&kxXbR(SmPKZ@f!{a;QtTL4R2ro literal 0 HcmV?d00001 diff --git a/pypdf/generic/_annotations.py b/pypdf/generic/_annotations.py index 68e31a2508..7ea2db0fc0 100644 --- a/pypdf/generic/_annotations.py +++ b/pypdf/generic/_annotations.py @@ -13,6 +13,18 @@ from ._utils import hex_to_rgb +def _get_bounding_rectangle(vertices: List[Tuple[float, float]]) -> RectangleObject: + x_min, y_min = vertices[0][0], vertices[0][1] + x_max, y_max = vertices[0][0], vertices[0][1] + for x, y in vertices: + x_min = min(x_min, x) + y_min = min(y_min, y) + x_max = min(x_max, x) + y_max = min(y_max, y) + rect = RectangleObject((x_min, y_min, x_max, y_max)) + return rect + + class AnnotationBuilder: """ The AnnotationBuilder creates dictionaries representing PDF annotations. @@ -186,6 +198,35 @@ def line( ) return line_obj + @staticmethod + def polyline( + vertices: List[Tuple[float, float]], + ) -> DictionaryObject: + """ + Draw a polyline on the PDF. + + Args: + vertices: Array specifying the vertices (x, y) coordinates of the poly-line. + + Returns: + A dictionary object representing the annotation. + """ + if len(vertices) == 0: + raise ValueError("A polygon needs at least 1 vertex with two coordinates") + coord_list = [] + for x, y in vertices: + coord_list.append(NumberObject(x)) + coord_list.append(NumberObject(y)) + polyline_obj = DictionaryObject( + { + NameObject("/Type"): NameObject("/Annot"), + NameObject("/Subtype"): NameObject("/PolyLine"), + NameObject("/Vertices"): ArrayObject(coord_list), + NameObject("/Rect"): RectangleObject(_get_bounding_rectangle(vertices)), + } + ) + return polyline_obj + @staticmethod def rectangle( rect: Union[RectangleObject, Tuple[float, float, float, float]], @@ -258,14 +299,7 @@ def ellipse( def polygon(vertices: List[Tuple[float, float]]) -> DictionaryObject: if len(vertices) == 0: raise ValueError("A polygon needs at least 1 vertex with two coordinates") - x_min, y_min = vertices[0][0], vertices[0][1] - x_max, y_max = vertices[0][0], vertices[0][1] - for x, y in vertices: - x_min = min(x_min, x) - y_min = min(y_min, y) - x_max = min(x_max, x) - y_max = min(y_max, y) - rect = RectangleObject((x_min, y_min, x_max, y_max)) + coord_list = [] for x, y in vertices: coord_list.append(NumberObject(x)) @@ -276,7 +310,7 @@ def polygon(vertices: List[Tuple[float, float]]) -> DictionaryObject: NameObject("/Subtype"): NameObject("/Polygon"), NameObject("/Vertices"): ArrayObject(coord_list), NameObject("/IT"): NameObject("PolygonCloud"), - NameObject("/Rect"): RectangleObject(rect), + NameObject("/Rect"): RectangleObject(_get_bounding_rectangle(vertices)), } ) return obj diff --git a/tests/test_generic.py b/tests/test_generic.py index ef6b6eac91..10c7a9db11 100644 --- a/tests/test_generic.py +++ b/tests/test_generic.py @@ -781,6 +781,34 @@ def test_annotation_builder_polygon(): Path(target).unlink() # comment this out for manual inspection +def test_annotation_builder_polyline(): + # Arrange + pdf_path = RESOURCE_ROOT / "crazyones.pdf" + reader = PdfReader(pdf_path) + page = reader.pages[0] + writer = PdfWriter() + writer.add_page(page) + + # Act + with pytest.raises(ValueError) as exc: + AnnotationBuilder.polyline( + vertices=[], + ) + assert exc.value.args[0] == "A polygon needs at least 1 vertex with two coordinates" + + annotation = AnnotationBuilder.polyline( + vertices=[(50, 550), (200, 650), (70, 750), (50, 700)], + ) + writer.add_annotation(0, annotation) + + # Assert: You need to inspect the file manually + target = "annotated-pdf.pdf" + with open(target, "wb") as fp: + writer.write(fp) + + Path(target).unlink() # comment this out for manual inspection + + def test_annotation_builder_line(): # Arrange pdf_path = RESOURCE_ROOT / "crazyones.pdf" From 1e4086ef5b3b7c6423b9a410a7179d26ae052002 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 19 Mar 2023 20:38:52 +0100 Subject: [PATCH 03/15] MAINT: Add LazyDict.__str__ (#1727) --- pypdf/_reader.py | 3 +++ tests/test_writer.py | 1 + 2 files changed, 4 insertions(+) diff --git a/pypdf/_reader.py b/pypdf/_reader.py index c742386367..89e7d248fb 100644 --- a/pypdf/_reader.py +++ b/pypdf/_reader.py @@ -2253,6 +2253,9 @@ def __iter__(self) -> Iterator[Any]: def __len__(self) -> int: return len(self._raw_dict) + def __str__(self) -> str: + return f"LazyDict(keys={list(self.keys())})" + class PdfFileReader(PdfReader): # deprecated def __init__(self, *args: Any, **kwargs: Any) -> None: diff --git a/tests/test_writer.py b/tests/test_writer.py index ab43e41fd8..d62f73f88d 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -1243,6 +1243,7 @@ def test_attachments(): reader = PdfReader(b) b = None assert sorted(reader.attachments.keys()) == sorted({name for name, _ in to_add}) + assert str(reader.attachments) == "LazyDict(keys=['foobar.txt', 'foobar2.txt'])" assert reader._list_attachments() == [name for name, _ in to_add] # We've added the same key twice - hence only 2 and not 3: From 27d0e99428f7cf3b540086db4b6551cd661c0b44 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Tue, 21 Mar 2023 18:28:28 +0100 Subject: [PATCH 04/15] TST: Use fixtures to create files in temporary folders (#1730) This change should make tests easier to read and ensure that the cleanup-step cannot be forgotten. If the test run fails, you can see where the file was written. The file is not directly deleted. However, if the run does not fail (loudly) but you want to inspect the generated PDF, you have to 'assert False' or similar. That is harder to figure out than commenting out a Path.unlink() line --- pypdf/_writer.py | 8 +- pypdf/generic/_data_structures.py | 2 - tests/conftest.py | 17 +++ tests/test_generic.py | 67 ++++------- tests/test_merger.py | 144 +++++++---------------- tests/test_page.py | 8 +- tests/test_reader.py | 14 +-- tests/test_workflows.py | 7 +- tests/test_writer.py | 183 ++++++++++-------------------- 9 files changed, 148 insertions(+), 302 deletions(-) create mode 100644 tests/conftest.py diff --git a/pypdf/_writer.py b/pypdf/_writer.py index fb67e2febe..5788a1fd74 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -778,11 +778,7 @@ def _get_qualified_field_name(self, parent: DictionaryObject) -> Optional[str]: cast(DictionaryObject, parent["/Parent"]) ) if qualified_parent is not None: - return ( - qualified_parent - + "." - + cast(str, parent["/T"]) - ) + return qualified_parent + "." + cast(str, parent["/T"]) return cast(str, parent["/T"]) def update_page_form_field_values( @@ -2729,8 +2725,6 @@ def merge( if "/B" not in excluded_fields: self.add_filtered_articles("", srcpages, reader) - return - def _add_articles_thread( self, thread: DictionaryObject, # thread entry from the reader's array of threads diff --git a/pypdf/generic/_data_structures.py b/pypdf/generic/_data_structures.py index c6b6603370..1fd196027c 100644 --- a/pypdf/generic/_data_structures.py +++ b/pypdf/generic/_data_structures.py @@ -754,7 +754,6 @@ def _clone( except Exception: pass super()._clone(src, pdf_dest, force_duplicate, ignore_fields) - return def hash_value_data(self) -> bytes: data = super().hash_value_data() @@ -986,7 +985,6 @@ def _clone( self.forced_encoding = cast("ContentStream", src).forced_encoding # no need to call DictionaryObjection or anything # like super(DictionaryObject,self)._clone(src, pdf_dest, force_duplicate, ignore_fields) - return def __parse_content_stream(self, stream: StreamType) -> None: stream.seek(0, 0) diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000000..369b40dc8c --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,17 @@ +"""Fixtures that are available automatically for all tests.""" + +import uuid + +import pytest + + +@pytest.fixture(scope="session") +def pdf_file_path(tmp_path_factory): + fn = tmp_path_factory.mktemp("pypdf-data") / f"{uuid.uuid4()}.pdf" + return fn + + +@pytest.fixture(scope="session") +def txt_file_path(tmp_path_factory): + fn = tmp_path_factory.mktemp("pypdf-data") / f"{uuid.uuid4()}.txt" + return fn diff --git a/tests/test_generic.py b/tests/test_generic.py index 10c7a9db11..dbb32a6e61 100644 --- a/tests/test_generic.py +++ b/tests/test_generic.py @@ -678,7 +678,7 @@ def test_bool_repr(tmp_path): @pytest.mark.enable_socket() @patch("pypdf._reader.logger_warning") -def test_issue_997(mock_logger_warning): +def test_issue_997(mock_logger_warning, pdf_file_path): url = ( "https://github.com/py-pdf/pypdf/files/8908874/" "Exhibit_A-2_930_Enterprise_Zone_Tax_Credits_final.pdf" @@ -686,9 +686,8 @@ def test_issue_997(mock_logger_warning): name = "gh-issue-997.pdf" merger = PdfMerger() - merged_filename = "tmp-out.pdf" merger.append(BytesIO(get_pdf_from_url(url, name=name))) # here the error raises - with open(merged_filename, "wb") as f: + with open(pdf_file_path, "wb") as f: merger.write(f) merger.close() @@ -696,21 +695,17 @@ def test_issue_997(mock_logger_warning): # Strict merger = PdfMerger(strict=True) - merged_filename = "tmp-out.pdf" with pytest.raises(PdfReadError) as exc: merger.append( BytesIO(get_pdf_from_url(url, name=name)) ) # here the error raises assert exc.value.args[0] == "Could not find object." - with open(merged_filename, "wb") as f: + with open(pdf_file_path, "wb") as f: merger.write(f) merger.close() - # cleanup - Path(merged_filename).unlink() - -def test_annotation_builder_free_text(): +def test_annotation_builder_free_text(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) @@ -746,14 +741,11 @@ def test_annotation_builder_free_text(): writer.add_annotation(0, free_text_annotation) # Assert: You need to inspect the file manually - target = "annotated-pdf.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - Path(target).unlink() # comment this out for manual inspection - -def test_annotation_builder_polygon(): +def test_annotation_builder_polygon(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) @@ -774,14 +766,11 @@ def test_annotation_builder_polygon(): writer.add_annotation(0, annotation) # Assert: You need to inspect the file manually - target = "annotated-pdf.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - Path(target).unlink() # comment this out for manual inspection - -def test_annotation_builder_polyline(): +def test_annotation_builder_polyline(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) @@ -802,14 +791,11 @@ def test_annotation_builder_polyline(): writer.add_annotation(0, annotation) # Assert: You need to inspect the file manually - target = "annotated-pdf.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - Path(target).unlink() # comment this out for manual inspection - -def test_annotation_builder_line(): +def test_annotation_builder_line(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) @@ -827,14 +813,11 @@ def test_annotation_builder_line(): writer.add_annotation(0, line_annotation) # Assert: You need to inspect the file manually - target = "annotated-pdf.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - Path(target).unlink() # comment this out for manual inspection - -def test_annotation_builder_square(): +def test_annotation_builder_square(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) @@ -854,14 +837,11 @@ def test_annotation_builder_square(): writer.add_annotation(0, square_annotation) # Assert: You need to inspect the file manually - target = "annotated-pdf-square.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - Path(target).unlink() # comment this out for manual inspection - -def test_annotation_builder_circle(): +def test_annotation_builder_circle(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) @@ -882,14 +862,11 @@ def test_annotation_builder_circle(): writer.add_annotation(0, circle_annotation) # Assert: You need to inspect the file manually - target = "annotated-pdf-circle.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - Path(target).unlink() # comment this out for manual inspection - -def test_annotation_builder_link(): +def test_annotation_builder_link(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "outline-without-title.pdf" reader = PdfReader(pdf_path) @@ -940,14 +917,11 @@ def test_annotation_builder_link(): writer.add_page(page) # Assert: You need to inspect the file manually - target = "annotated-pdf-link.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - Path(target).unlink() # comment this out for manual inspection - -def test_annotation_builder_text(): +def test_annotation_builder_text(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "outline-without-title.pdf" reader = PdfReader(pdf_path) @@ -964,12 +938,9 @@ def test_annotation_builder_text(): writer.add_annotation(0, text_annotation) # Assert: You need to inspect the file manually - target = "annotated-pdf-popup.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - Path(target).unlink() # comment this out for manual inspection - def test_checkboxradiobuttonattributes_opt(): assert "/Opt" in CheckboxRadioButtonAttributes.attributes_dict() diff --git a/tests/test_merger.py b/tests/test_merger.py index 6ea070c392..0057e512d1 100644 --- a/tests/test_merger.py +++ b/tests/test_merger.py @@ -298,231 +298,187 @@ def test_merge_write_closed_fh(): assert exc.value.args[0] == err_closed -def test_merge_write_closed_fh_with_writer(): +def test_merge_write_closed_fh_with_writer(pdf_file_path): merger = pypdf.PdfWriter() pdf_path = RESOURCE_ROOT / "crazyones.pdf" merger.append(pdf_path) merger.close() - merger.write("stream1.pdf") + merger.write(pdf_file_path) merger.add_metadata({"author": "Martin Thoma"}) merger.set_page_layout("/SinglePage") merger.set_page_mode("/UseNone") merger.add_outline_item("An outline item", 0) - Path("stream1.pdf").unlink() - @pytest.mark.enable_socket() -def test_trim_outline_list(): +def test_trim_outline_list(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/995/995175.pdf" name = "tika-995175.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() -def test_trim_outline_list_with_writer(): +def test_trim_outline_list_with_writer(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/995/995175.pdf" name = "tika-995175.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfWriter() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() -def test_zoom(): +def test_zoom(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/994/994759.pdf" name = "tika-994759.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() -def test_zoom_with_writer(): +def test_zoom_with_writer(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/994/994759.pdf" name = "tika-994759.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfWriter() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() -def test_zoom_xyz_no_left(): +def test_zoom_xyz_no_left(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/933/933322.pdf" name = "tika-933322.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() -def test_zoom_xyz_no_left_with_writer(): +def test_zoom_xyz_no_left_with_writer(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/933/933322.pdf" name = "tika-933322.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfWriter() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() -def test_outline_item(): +def test_outline_item(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/997/997511.pdf" name = "tika-997511.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() -def test_outline_item_with_writer(): +def test_outline_item_with_writer(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/997/997511.pdf" name = "tika-997511.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfWriter() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() -def test_trim_outline(): +def test_trim_outline(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/982/982336.pdf" name = "tika-982336.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() -def test_trim_outline_with_writer(): +def test_trim_outline_with_writer(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/982/982336.pdf" name = "tika-982336.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfWriter() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() -def test1(): +def test1(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/923/923621.pdf" name = "tika-923621.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() -def test1_with_writer(): +def test1_with_writer(pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/923/923621.pdf" name = "tika-923621.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfWriter() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() -def test_sweep_recursion1(): +def test_sweep_recursion1(pdf_file_path): # TODO: This test looks like an infinite loop. url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf" name = "tika-924546.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - reader2 = PdfReader("tmp-merger-do-not-commit.pdf") + reader2 = PdfReader(pdf_file_path) reader2.pages - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() -def test_sweep_recursion1_with_writer(): +def test_sweep_recursion1_with_writer(pdf_file_path): # TODO: This test looks like an infinite loop. url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924546.pdf" name = "tika-924546.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfWriter() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - reader2 = PdfReader("tmp-merger-do-not-commit.pdf") + reader2 = PdfReader(pdf_file_path) reader2.pages - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() @@ -540,19 +496,16 @@ def test_sweep_recursion1_with_writer(): ), ], ) -def test_sweep_recursion2(url, name): +def test_sweep_recursion2(url, name, pdf_file_path): reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - reader2 = PdfReader("tmp-merger-do-not-commit.pdf") + reader2 = PdfReader(pdf_file_path) reader2.pages - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() @pytest.mark.slow() @@ -570,55 +523,46 @@ def test_sweep_recursion2(url, name): ), ], ) -def test_sweep_recursion2_with_writer(url, name): +def test_sweep_recursion2_with_writer(url, name, pdf_file_path): reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() - reader2 = PdfReader("tmp-merger-do-not-commit.pdf") + reader2 = PdfReader(pdf_file_path) reader2.pages - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() -def test_sweep_indirect_list_newobj_is_none(caplog): +def test_sweep_indirect_list_newobj_is_none(caplog, pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/906/906769.pdf" name = "tika-906769.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() # used to be: assert "Object 21 0 not defined." in caplog.text - reader2 = PdfReader("tmp-merger-do-not-commit.pdf") + reader2 = PdfReader(pdf_file_path) reader2.pages - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() -def test_sweep_indirect_list_newobj_is_none_with_writer(caplog): +def test_sweep_indirect_list_newobj_is_none_with_writer(caplog, pdf_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/906/906769.pdf" name = "tika-906769.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfWriter() merger.append(reader) - merger.write("tmp-merger-do-not-commit.pdf") + merger.write(pdf_file_path) merger.close() # used to be: assert "Object 21 0 not defined." in caplog.text - reader2 = PdfReader("tmp-merger-do-not-commit.pdf") + reader2 = PdfReader(pdf_file_path) reader2.pages - # cleanup - Path("tmp-merger-do-not-commit.pdf").unlink() - @pytest.mark.enable_socket() def test_iss1145(): diff --git a/tests/test_page.py b/tests/test_page.py index d4ebefce88..4abab87c9f 100644 --- a/tests/test_page.py +++ b/tests/test_page.py @@ -779,7 +779,7 @@ def test_annotation_getter(): } -def test_annotation_setter(): +def test_annotation_setter(pdf_file_path): # Arange pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) @@ -833,13 +833,9 @@ def test_annotation_setter(): arr.append(ind_obj) # Assert manually - target = "annot-out.pdf" - with open(target, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - # Cleanup - Path(target).unlink() # remove for testing - @pytest.mark.enable_socket() @pytest.mark.xfail(reason="#1091") diff --git a/tests/test_reader.py b/tests/test_reader.py index c2a01f0d3b..e2ccd6da52 100644 --- a/tests/test_reader.py +++ b/tests/test_reader.py @@ -390,14 +390,14 @@ def test_get_page_of_encrypted_file(pdffile, password, should_fail): ), ], ) -def test_get_form(src, expected, expected_get_fields): +def test_get_form(src, expected, expected_get_fields, txt_file_path): """Check if we can read out form data.""" src = RESOURCE_ROOT / src reader = PdfReader(src) fields = reader.get_form_text_fields() assert fields == expected - with open("tmp-fields-report.txt", "w") as f: + with open(txt_file_path, "w") as f: fields = reader.get_fields(fileobj=f) assert fields == expected_get_fields if fields: @@ -416,9 +416,6 @@ def test_get_form(src, expected, expected_get_fields): field.additional_actions, ] - # cleanup - Path("tmp-fields-report.txt").unlink() - @pytest.mark.parametrize( ("src", "page_number"), @@ -957,17 +954,14 @@ def test_metadata_is_none(): @pytest.mark.enable_socket() -def test_get_fields_read_write_report(): +def test_get_fields_read_write_report(txt_file_path): url = "https://corpora.tika.apache.org/base/docs/govdocs1/909/909655.pdf" name = "tika-909655.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) - with open("tmp-fields-report.txt", "w") as fp: + with open(txt_file_path, "w") as fp: fields = reader.get_fields(fileobj=fp) assert fields - # cleanup - Path("tmp-fields-report.txt").unlink() - @pytest.mark.parametrize( "src", diff --git a/tests/test_workflows.py b/tests/test_workflows.py index 6020bf1053..f8c9660bb7 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -316,7 +316,7 @@ def test_orientations(): ), ], ) -def test_overlay(base_path, overlay_path): +def test_overlay(pdf_file_path, base_path, overlay_path): if base_path.startswith("http"): base_path = BytesIO(get_pdf_from_url(base_path, name="tika-935981.pdf")) else: @@ -330,12 +330,9 @@ def test_overlay(base_path, overlay_path): for page in reader.pages: page.merge_page(overlay) writer.add_page(page) - with open("dont_commit_overlay.pdf", "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) - # Cleanup - Path("dont_commit_overlay.pdf").unlink() # remove for manual inspection - @pytest.mark.enable_socket() @pytest.mark.slow() diff --git a/tests/test_writer.py b/tests/test_writer.py index d62f73f88d..798ef405d0 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -290,7 +290,7 @@ def test_writer_operation_by_new_usage(write_data_here, needs_cleanup): "reportlab-inline-image.pdf", ], ) -def test_remove_images(input_path): +def test_remove_images(pdf_file_path, input_path): pdf_path = RESOURCE_ROOT / input_path reader = PdfReader(pdf_path) @@ -301,19 +301,15 @@ def test_remove_images(input_path): writer.remove_images() # finally, write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_writer_removed_image.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) - with open(tmp_filename, "rb") as input_stream: + with open(pdf_file_path, "rb") as input_stream: reader = PdfReader(input_stream) if input_path == "side-by-side-subfig.pdf": extracted_text = reader.pages[0].extract_text() assert "Lorem ipsum dolor sit amet" in extracted_text - # Cleanup - Path(tmp_filename).unlink() - @pytest.mark.parametrize( "input_path", @@ -322,7 +318,7 @@ def test_remove_images(input_path): "reportlab-inline-image.pdf", ], ) -def test_remove_text(input_path): +def test_remove_text(input_path, pdf_file_path): pdf_path = RESOURCE_ROOT / input_path reader = PdfReader(pdf_path) @@ -333,15 +329,11 @@ def test_remove_text(input_path): writer.remove_text() # finally, write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_writer_removed_text.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) - # Cleanup - Path(tmp_filename).unlink() - -def test_remove_text_all_operators(): +def test_remove_text_all_operators(pdf_file_path): stream = ( b"BT " b"/F0 36 Tf " @@ -399,15 +391,11 @@ def test_remove_text_all_operators(): writer.remove_text() # finally, write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_writer_removed_text.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) - # Cleanup - Path(tmp_filename).unlink() - -def test_write_metadata(): +def test_write_metadata(pdf_file_path): pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) @@ -423,20 +411,16 @@ def test_write_metadata(): writer.add_metadata({"/Title": "The Crazy Ones"}) # finally, write data to pypdf-output.pdf - tmp_filename = "dont_commit_writer_added_metadata.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) # Check if the title was set - reader = PdfReader(tmp_filename) + reader = PdfReader(pdf_file_path) metadata = reader.metadata assert metadata.get("/Title") == "The Crazy Ones" - # Cleanup - Path(tmp_filename).unlink() - -def test_fill_form(): +def test_fill_form(pdf_file_path): reader = PdfReader(RESOURCE_ROOT / "form.pdf") writer = PdfWriter() @@ -459,12 +443,9 @@ def test_fill_form(): ) # write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_filled_pdf.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) - Path(tmp_filename).unlink() # cleanup - def test_fill_form_with_qualified(): reader = PdfReader(RESOURCE_ROOT / "form.pdf") @@ -488,7 +469,7 @@ def test_fill_form_with_qualified(): ("use_128bit", "user_password", "owner_password"), [(True, "userpwd", "ownerpwd"), (False, "userpwd", "ownerpwd")], ) -def test_encrypt(use_128bit, user_password, owner_password): +def test_encrypt(use_128bit, user_password, owner_password, pdf_file_path): reader = PdfReader(RESOURCE_ROOT / "form.pdf") writer = PdfWriter() @@ -503,44 +484,40 @@ def test_encrypt(use_128bit, user_password, owner_password): ) # write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_encrypted.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) # Test that the data is not there in clear text - with open(tmp_filename, "rb") as input_stream: + with open(pdf_file_path, "rb") as input_stream: data = input_stream.read() assert b"foo" not in data # Test the user password (str): - reader = PdfReader(tmp_filename, password="userpwd") + reader = PdfReader(pdf_file_path, password="userpwd") new_text = reader.pages[0].extract_text() assert reader.metadata.get("/Producer") == "pypdf" assert new_text == orig_text # Test the owner password (str): - reader = PdfReader(tmp_filename, password="ownerpwd") + reader = PdfReader(pdf_file_path, password="ownerpwd") new_text = reader.pages[0].extract_text() assert reader.metadata.get("/Producer") == "pypdf" assert new_text == orig_text # Test the user password (bytes): - reader = PdfReader(tmp_filename, password=b"userpwd") + reader = PdfReader(pdf_file_path, password=b"userpwd") new_text = reader.pages[0].extract_text() assert reader.metadata.get("/Producer") == "pypdf" assert new_text == orig_text # Test the owner password (stbytesr): - reader = PdfReader(tmp_filename, password=b"ownerpwd") + reader = PdfReader(pdf_file_path, password=b"ownerpwd") new_text = reader.pages[0].extract_text() assert reader.metadata.get("/Producer") == "pypdf" assert new_text == orig_text - # Cleanup - Path(tmp_filename).unlink() - -def test_add_outline_item(): +def test_add_outline_item(pdf_file_path): reader = PdfReader(RESOURCE_ROOT / "pdflatex-outline.pdf") writer = PdfWriter() @@ -553,15 +530,11 @@ def test_add_outline_item(): writer.add_outline_item("Another", 2, outline_item, None, False, False, Fit.fit()) # write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_outline_item.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) - # Cleanup - Path(tmp_filename).unlink() - -def test_add_named_destination(): +def test_add_named_destination(pdf_file_path): reader = PdfReader(RESOURCE_ROOT / "pdflatex-outline.pdf") writer = PdfWriter() assert writer.get_named_dest_root() == [] @@ -592,15 +565,11 @@ def test_add_named_destination(): assert exc.value.args[0] == "pdf must be self" # write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_named_destination.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) - # Cleanup - Path(tmp_filename).unlink() - -def test_add_uri(): +def test_add_uri(pdf_file_path): reader = PdfReader(RESOURCE_ROOT / "pdflatex-outline.pdf") writer = PdfWriter() @@ -633,15 +602,11 @@ def test_add_uri(): ) # write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_uri.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) - # Cleanup - Path(tmp_filename).unlink() - -def test_add_link(): +def test_add_link(pdf_file_path): reader = PdfReader(RESOURCE_ROOT / "pdflatex-outline.pdf") writer = PdfWriter() @@ -685,13 +650,9 @@ def test_add_link(): ) # write "output" to pypdf-output.pdf - tmp_filename = "dont_commit_link.pdf" - with open(tmp_filename, "wb") as output_stream: + with open(pdf_file_path, "wb") as output_stream: writer.write(output_stream) - # Cleanup - Path(tmp_filename).unlink() - def test_io_streams(): """This is the example from the docs ("Streaming data").""" @@ -709,19 +670,15 @@ def test_io_streams(): writer.write(output_stream) -def test_regression_issue670(): - tmp_file = "dont_commit_issue670.pdf" +def test_regression_issue670(pdf_file_path): filepath = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(filepath, strict=False) for _ in range(2): writer = PdfWriter() writer.add_page(reader.pages[0]) - with open(tmp_file, "wb") as f_pdf: + with open(pdf_file_path, "wb") as f_pdf: writer.write(f_pdf) - # cleanup - Path(tmp_file).unlink() - def test_issue301(): """Test with invalid stream length object.""" @@ -745,18 +702,14 @@ def test_append_pages_from_reader_append(): @pytest.mark.enable_socket() @pytest.mark.slow() -def test_sweep_indirect_references_nullobject_exception(): +def test_sweep_indirect_references_nullobject_exception(pdf_file_path): # TODO: Check this more closely... this looks weird url = "https://corpora.tika.apache.org/base/docs/govdocs1/924/924666.pdf" name = "tika-924666.pdf" reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) merger = PdfMerger() merger.append(reader) - tmp_file = "tmp-merger-do-not-commit.pdf" - merger.write(tmp_file) - - # cleanup - Path(tmp_file).unlink() + merger.write(pdf_file_path) @pytest.mark.enable_socket() @@ -775,19 +728,16 @@ def test_sweep_indirect_references_nullobject_exception(): ("https://github.com/py-pdf/pypdf/files/10715624/test.pdf", "iss1627.pdf"), ], ) -def test_some_appends(url, name): +def test_some_appends(pdf_file_path, url, name): reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) - tmp_file = "tmp-merger-do-not-commit.pdf" # PdfMerger merger = PdfMerger() merger.append(reader) - merger.write(tmp_file) + merger.write(pdf_file_path) # PdfWriter merger = PdfWriter() merger.append(reader) - merger.write(tmp_file) - # cleanup - Path(tmp_file).unlink() + merger.write(pdf_file_path) def test_pdf_header(): @@ -802,7 +752,7 @@ def test_pdf_header(): assert writer.pdf_header == b"%PDF-1.6" -def test_write_dict_stream_object(): +def test_write_dict_stream_object(pdf_file_path): stream = ( b"BT " b"/F0 36 Tf " @@ -826,8 +776,7 @@ def test_write_dict_stream_object(): page_object[NameObject("/Test")] = stream_object page_object = writer.add_page(page_object) - tmp_file = "tmp-writer-do-not-commit.pdf" - with open(tmp_file, "wb") as fp: + with open(pdf_file_path, "wb") as fp: writer.write(fp) for k, v in page_object.items(): @@ -845,10 +794,8 @@ def test_write_dict_stream_object(): assert v.pdf == writer assert k in objects_hash, "Missing %s" % v - Path(tmp_file).unlink() - -def test_add_single_annotation(): +def test_add_single_annotation(pdf_file_path): pdf_path = RESOURCE_ROOT / "crazyones.pdf" reader = PdfReader(pdf_path) page = reader.pages[0] @@ -871,13 +818,10 @@ def test_add_single_annotation(): "/T": "moose", } writer.add_annotation(0, annot_dict) - # Assert manually - target = "annot-single-out.pdf" - with open(target, "wb") as fp: - writer.write(fp) - # Cleanup - Path(target).unlink() # comment out for testing + # Inspect manually by adding 'assert False' and viewing the PDF + with open(pdf_file_path, "wb") as fp: + writer.write(fp) def test_deprecation_bookmark_decorator(): @@ -894,7 +838,7 @@ def test_deprecation_bookmark_decorator(): @pytest.mark.samples() -def test_colors_in_outline_item(): +def test_colors_in_outline_item(pdf_file_path): reader = PdfReader(SAMPLE_ROOT / "004-pdflatex-4-pages/pdflatex-4-pages.pdf") writer = PdfWriter() writer.clone_document_from_reader(reader) @@ -903,18 +847,14 @@ def test_colors_in_outline_item(): writer.add_outline_item("Second Outline Item", page_number=3, color="#800080") writer.add_outline_item("Third Outline Item", page_number=4, color=purple_rgb) - target = "tmp-named-color-outline.pdf" - with open(target, "wb") as f: + with open(pdf_file_path, "wb") as f: writer.write(f) - reader2 = PdfReader(target) + reader2 = PdfReader(pdf_file_path) for outline_item in reader2.outline: # convert float to string because of mutability assert [str(c) for c in outline_item.color] == [str(p) for p in purple_rgb] - # Cleanup - Path(target).unlink() # comment out for testing - @pytest.mark.samples() def test_write_empty_stream(): @@ -1054,9 +994,8 @@ def test_append_multiple(): @pytest.mark.samples() -def test_set_page_label(): +def test_set_page_label(pdf_file_path): src = RESOURCE_ROOT / "GeoBase_NHNC1_Data_Model_UML_EN.pdf" # File without labels - target = "pypdf-output.pdf" reader = PdfReader(src) expected = [ @@ -1091,8 +1030,8 @@ def test_set_page_label(): writer.set_page_label(11, 11, "/r") writer.set_page_label(12, 13, "/R") writer.set_page_label(17, 18, "/R") - writer.write(target) - assert PdfReader(target).page_labels == expected + writer.write(pdf_file_path) + assert PdfReader(pdf_file_path).page_labels == expected writer = PdfWriter() # Same labels, different set order writer.clone_document_from_reader(reader) @@ -1102,8 +1041,8 @@ def test_set_page_label(): writer.set_page_label(0, 1, "/r") writer.set_page_label(12, 13, "/R") writer.set_page_label(11, 11, "/r") - writer.write(target) - assert PdfReader(target).page_labels == expected + writer.write(pdf_file_path) + assert PdfReader(pdf_file_path).page_labels == expected # Tests labels assigned only in the middle # Tests label assigned to a range already containing labled ranges @@ -1113,8 +1052,8 @@ def test_set_page_label(): writer.set_page_label(3, 4, "/a") writer.set_page_label(5, 5, "/A") writer.set_page_label(2, 6, "/r") - writer.write(target) - assert PdfReader(target).page_labels[: len(expected)] == expected + writer.write(pdf_file_path) + assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected # Tests labels assigned inside a previously existing range expected = ["1", "2", "i", "a", "b", "A", "1", "1", "2"] @@ -1124,8 +1063,8 @@ def test_set_page_label(): writer.set_page_label(2, 6, "/r") writer.set_page_label(3, 4, "/a") writer.set_page_label(5, 5, "/A") - writer.write(target) - assert PdfReader(target).page_labels[: len(expected)] == expected + writer.write(pdf_file_path) + assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected # Tests invalid user input writer = PdfWriter() @@ -1149,12 +1088,11 @@ def test_set_page_label(): ): writer.set_page_label(0, 5, "/r", start=-1) - Path(target).unlink() + pdf_file_path.unlink() src = ( SAMPLE_ROOT / "009-pdflatex-geotopo/GeoTopo.pdf" ) # File with pre existing labels - target = "pypdf-output.pdf" reader = PdfReader(src) # Tests adding labels to existing ones @@ -1162,22 +1100,21 @@ def test_set_page_label(): writer = PdfWriter() writer.clone_document_from_reader(reader) writer.set_page_label(2, 3, "/A") - writer.write(target) - assert PdfReader(target).page_labels[: len(expected)] == expected + writer.write(pdf_file_path) + assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected # Tests replacing existing lables expected = ["A", "B", "1", "1", "2"] writer = PdfWriter() writer.clone_document_from_reader(reader) writer.set_page_label(0, 1, "/A") - writer.write(target) - assert PdfReader(target).page_labels[: len(expected)] == expected + writer.write(pdf_file_path) + assert PdfReader(pdf_file_path).page_labels[: len(expected)] == expected - Path(target).unlink() + pdf_file_path.unlink() # Tests prefix and start. src = RESOURCE_ROOT / "issue-604.pdf" # File without page labels - target = "page_labels_test.pdf" reader = PdfReader(src) writer = PdfWriter() writer.clone_document_from_reader(reader) @@ -1189,9 +1126,7 @@ def test_set_page_label(): writer.set_page_label(11, 21, "/D", prefix="PAP-") writer.set_page_label(22, 30, "/D", prefix="FOLL-") writer.set_page_label(31, 39, "/D", prefix="HURT-") - writer.write(target) - - Path(target).unlink() # comment to see result + writer.write(pdf_file_path) @pytest.mark.enable_socket() From 0331a7c5a154f67c562aaf1f21ac6aa50dcd1f6b Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Thu, 23 Mar 2023 06:39:23 +0100 Subject: [PATCH 05/15] BUG: 'DictionaryObject' object has no attribute 'indirect_reference' (#1729) Fixes #1723 --- pypdf/_writer.py | 4 ++-- tests/test_writer.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index 5788a1fd74..bff8f16536 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -2867,7 +2867,7 @@ def _insert_filtered_annotations( if p is not None: anc = ano.clone(self, ignore_fields=("/Dest",)) anc[NameObject("/Dest")] = ArrayObject([p] + d[1:]) - outlist.append(anc.indirect_reference) + outlist.append(self._add_object(anc)) else: d = cast("DictionaryObject", ano["/A"])["/D"] if isinstance(d, str): @@ -2883,7 +2883,7 @@ def _insert_filtered_annotations( cast("DictionaryObject", anc["/A"])[ NameObject("/D") ] = ArrayObject([p] + d[1:]) - outlist.append(anc.indirect_reference) + outlist.append(self._add_object(anc)) return outlist def _get_filtered_outline( diff --git a/tests/test_writer.py b/tests/test_writer.py index 798ef405d0..cfd757e46f 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -1279,3 +1279,13 @@ def test_late_iss1654(): p.compress_content_streams() b = BytesIO() writer.write(b) + + +@pytest.mark.enable_socket() +def test_iss1723(): + # test of an annotation(link) directly stored in the /Annots in the page + url = "https://github.com/py-pdf/pypdf/files/11015242/inputFile.pdf" + name = "iss1723.pdf" + in_pdf = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) + out_pdf = PdfWriter() + out_pdf.append(in_pdf, (3, 5)) From 0acf9493e8af156b9b9a2c304f8a95bf929703ec Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Thu, 23 Mar 2023 06:52:32 +0100 Subject: [PATCH 06/15] ENH: Add clone_from parameter in PdfWriter constructor (#1703) This is a shortcut. It is syntactic sugar to prevent users from having to use `clone_document_from_reader`. --- pypdf/_writer.py | 10 +++++++++- tests/test_writer.py | 6 ++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index bff8f16536..bc2415f027 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -151,7 +151,11 @@ class PdfWriter: Typically data is added from a :class:`PdfReader`. """ - def __init__(self, fileobj: StrByteType = "") -> None: + def __init__( + self, + fileobj: StrByteType = "", + clone_from: Union[None, PdfReader, StrByteType, Path] = None, + ) -> None: self._header = b"%PDF-1.3" self._objects: List[PdfObject] = [] # array of indirect objects self._idnum_hash: Dict[bytes, IndirectObject] = {} @@ -188,6 +192,10 @@ def __init__(self, fileobj: StrByteType = "") -> None: } ) self._root = self._add_object(self._root_object) + if clone_from is not None: + if not isinstance(clone_from, PdfReader): + clone_from = PdfReader(clone_from) + self.clone_document_from_reader(clone_from) self.fileobj = fileobj self.with_as_usage = False diff --git a/tests/test_writer.py b/tests/test_writer.py index cfd757e46f..7eafe5cdbc 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -52,9 +52,11 @@ def test_writer_clone(): src = RESOURCE_ROOT / "pdflatex-outline.pdf" reader = PdfReader(src) - writer = PdfWriter() + writer = PdfWriter(clone_from=reader) + assert len(writer.pages) == 4 + assert "PageObject" in str(type(writer.pages[0])) - writer.clone_document_from_reader(reader) + writer = PdfWriter(clone_from=src) assert len(writer.pages) == 4 assert "PageObject" in str(type(writer.pages[0])) From 20ebcfdd96aabce419c945633b3a1f76947cbe61 Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sat, 25 Mar 2023 06:53:37 +0100 Subject: [PATCH 07/15] ROB: Handle params NullObject in decode_stream_data (#1738) Multiple fiters in streams are not using their decodParms Closes #1737 Co-authored-by: Martin Thoma --- pypdf/filters.py | 25 +++++++++++++++++-------- tests/conftest.py | 16 ++++++++++++++++ tests/test_generic.py | 7 ++----- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/pypdf/filters.py b/pypdf/filters.py index a81e8134e2..68030601e9 100644 --- a/pypdf/filters.py +++ b/pypdf/filters.py @@ -50,7 +50,12 @@ from .constants import LzwFilterParameters as LZW from .constants import StreamAttributes as SA from .errors import PdfReadError, PdfStreamError -from .generic import ArrayObject, DictionaryObject, IndirectObject, NameObject +from .generic import ( + ArrayObject, + DictionaryObject, + IndirectObject, + NullObject, +) if TYPE_CHECKING: try: @@ -534,19 +539,24 @@ def decode_stream_data(stream: Any) -> Union[str, bytes]: # utils.StreamObject filters = stream.get(SA.FILTER, ()) if isinstance(filters, IndirectObject): filters = cast(ArrayObject, filters.get_object()) - if len(filters) and not isinstance(filters[0], NameObject): + if not isinstance(filters, ArrayObject): # we have a single filter instance filters = (filters,) + decodparms = stream.get(SA.DECODE_PARMS, ({},) * len(filters)) + if not isinstance(decodparms, (list, tuple)): + decodparms = (decodparms,) data: bytes = stream._data # If there is not data to decode we should not try to decode the data. if data: - for filter_type in filters: + for filter_type, params in zip(filters, decodparms): + if isinstance(params, NullObject): + params = {} if filter_type in (FT.FLATE_DECODE, FTA.FL): - data = FlateDecode.decode(data, stream.get(SA.DECODE_PARMS)) + data = FlateDecode.decode(data, params) elif filter_type in (FT.ASCII_HEX_DECODE, FTA.AHx): data = ASCIIHexDecode.decode(data) # type: ignore elif filter_type in (FT.LZW_DECODE, FTA.LZW): - data = LZWDecode.decode(data, stream.get(SA.DECODE_PARMS)) # type: ignore + data = LZWDecode.decode(data, params) # type: ignore elif filter_type in (FT.ASCII_85_DECODE, FTA.A85): data = ASCII85Decode.decode(data) elif filter_type == FT.DCT_DECODE: @@ -555,10 +565,9 @@ def decode_stream_data(stream: Any) -> Union[str, bytes]: # utils.StreamObject data = JPXDecode.decode(data) elif filter_type == FT.CCITT_FAX_DECODE: height = stream.get(IA.HEIGHT, ()) - data = CCITTFaxDecode.decode(data, stream.get(SA.DECODE_PARMS), height) + data = CCITTFaxDecode.decode(data, params, height) elif filter_type == "/Crypt": - decode_parms = stream.get(SA.DECODE_PARMS, {}) - if "/Name" not in decode_parms and "/Type" not in decode_parms: + if "/Name" not in params and "/Type" not in params: pass else: raise NotImplementedError( diff --git a/tests/conftest.py b/tests/conftest.py index 369b40dc8c..a78550c9c4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,9 +1,16 @@ """Fixtures that are available automatically for all tests.""" import uuid +from pathlib import Path import pytest +from pypdf import PdfReader + +TESTS_ROOT = Path(__file__).parent.resolve() +PROJECT_ROOT = TESTS_ROOT.parent +RESOURCE_ROOT = PROJECT_ROOT / "resources" + @pytest.fixture(scope="session") def pdf_file_path(tmp_path_factory): @@ -15,3 +22,12 @@ def pdf_file_path(tmp_path_factory): def txt_file_path(tmp_path_factory): fn = tmp_path_factory.mktemp("pypdf-data") / f"{uuid.uuid4()}.txt" return fn + + +@pytest.fixture(scope="session") +def pdf_reader_page(): + """Gives a page that was retrieved from a PDF via PdfReader.""" + pdf_path = RESOURCE_ROOT / "crazyones.pdf" + reader = PdfReader(pdf_path) + page = reader.pages[0] + return page diff --git a/tests/test_generic.py b/tests/test_generic.py index dbb32a6e61..6cdb42b96d 100644 --- a/tests/test_generic.py +++ b/tests/test_generic.py @@ -770,13 +770,10 @@ def test_annotation_builder_polygon(pdf_file_path): writer.write(fp) -def test_annotation_builder_polyline(pdf_file_path): +def test_annotation_builder_polyline(pdf_file_path, pdf_reader_page): # Arrange - pdf_path = RESOURCE_ROOT / "crazyones.pdf" - reader = PdfReader(pdf_path) - page = reader.pages[0] writer = PdfWriter() - writer.add_page(page) + writer.add_page(pdf_reader_page) # Act with pytest.raises(ValueError) as exc: From ef203c9554ef4ceb51e5762f0161b656835f6ade Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 26 Mar 2023 11:17:17 +0200 Subject: [PATCH 08/15] DOC: Project scope (#1743) Co-authored-by: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> --- docs/index.rst | 1 + docs/meta/scope-of-pypdf.md | 71 +++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 docs/meta/scope-of-pypdf.md diff --git a/docs/index.rst b/docs/index.rst index 439da55a70..6b0057b61b 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -77,6 +77,7 @@ You can contribute to `pypdf on GitHub `_. meta/project-governance meta/history meta/CONTRIBUTORS + meta/scope-of-pypdf meta/comparisons meta/faq diff --git a/docs/meta/scope-of-pypdf.md b/docs/meta/scope-of-pypdf.md new file mode 100644 index 0000000000..16f6d2ff89 --- /dev/null +++ b/docs/meta/scope-of-pypdf.md @@ -0,0 +1,71 @@ +# Scope of pypdf + +What features should pypdf have and which features will it never have? + +pypdf aims at making interactions with PDF documents simpler. Core tasks that +pypdf can perform are: + +* Document manipulation: Splitting, merging, cropping, and transforming the pages of PDF files +* Data Extraction: Extract text and metadata from PDF documents +* Security: Decrypt / encrypt PDF documents + +Typical indicators that something should be done by pypdf: + +* The task needs in-depth knowledge of the PDF format +* It currently requires a lot of code or even is impossible to do with pypdf +* It's neither mentioned in "belongs in user code" nor in "out of scope" +* It already is in the issue list with the [is-feature tag](https://github.com/py-pdf/pypdf/labels/is-feature). + +The [moonshot extensions](https://github.com/py-pdf/pypdf/discussions/1181) are +features we would like to have, but are currently not able to add (PRs are +welcome 😉) + +## Belongs in user code + +Here are a few indicators that a feature belongs into users code (and not into pypdf): + +1. The use-case is very specific. Most people will not encounter the same need. +2. It can be done without knowledge of the PDF specification +3. It cannot be done without (non-pdf) domain knowledge. Anything that is + specific to your industry. + +## Out of scope + +While this list is infinitely long, there are a few topics that are asked +multiple times. + +Those topics are out of scope for pypdf. They will never be part of pypdf: + +1. **Optical Character Recognition (OCR)**: OCR is about extracting text from + images. That is very different from the kind of text extraction pypdf is + doing. Please note that images can be within PDF documents. In the case of + scanned documents, the whole page is an image. Some scanners automatically + execute OCR and add a text-layer behind the scanned page. That is something + pypdf can use, if it's present. As a rule-of-thumb: If you cannot mark/copy + the text, it's likely an image. A noteworthy open source OCR project is + [tesseract](https://github.com/tesseract-ocr/tesseract). +2. **Format Conversion**: Converting docx / HTML to PDF or PDF to those formats. + You might want to have a look at [`pdfkit`](https://pypi.org/project/pdfkit/) + and similar projects. + +Out of scope for the moment, but might be added if there are enough contributors: + +* **Digital Signature Support** ([reference + ticket](https://github.com/py-pdf/pypdf/issues/302)): Cryptography is + complicated. It's important to get it right. pypdf currently doesn't have + enough active contributors to properly add digital signautre support. For the + moment, [pyhanko](https://pypi.org/project/pyHanko/) seems to be the best + choice. +* **PDF Generation from Scratch**: pypdf can manipulate existing PDF documents, + add annotations, combine / split / crop / transform. It can add blank pages. + But if you want to generate invoices, you might want to have a look at + [`reportlab`](https://pypi.org/project/reportlab/) / + [`fpdf2`](https://pypi.org/project/fpdf2/) or document conversion tools like + [`pdfkit`](https://pypi.org/project/pdfkit/). +* **Replacing words within a PDF**: [Extracting text from PDF is hard](https://pypdf.readthedocs.io/en/stable/user/extract-text.html#why-text-extraction-is-hard). + Replacing text in a reliable way is even harder. For example, one word might + be split into multiple tokens. Hence it's not a simple "search and replace" + in some cases. +* **(Not) Extracting headers/footers/page numbers**: While you can apply + heuristics, there is no way to always make it work. PDF documents simply + don't contain the information what a header/footer/page number is. From 3ecdedb92b7b2c0a7793fe5fcdbd55d19505270b Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sun, 26 Mar 2023 11:18:00 +0200 Subject: [PATCH 09/15] TST: Add test for #1738 (#1744) --- tests/test_filters.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test_filters.py b/tests/test_filters.py index 1d2dbd1909..58baef1706 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -250,3 +250,13 @@ def test_image_without_imagemagic(): "pillow is required to do image extraction. " "It can be installed via 'pip install pypdf[image]'" ) + + +@pytest.mark.enable_socket() +def test_issue_1737(): + url = "https://github.com/py-pdf/pypdf/files/11068604/tt1.pdf" + name = "iss1737.pdf" + reader = PdfReader(BytesIO(get_pdf_from_url(url, name=name))) + reader.pages[0]["/Resources"]["/XObject"]["/Im0"].get_data() + reader.pages[0]["/Resources"]["/XObject"]["/Im1"].get_data() + reader.pages[0]["/Resources"]["/XObject"]["/Im2"].get_data() From 4fc0040d8c6d3a1f1e8a96ed04c5f7ed113af54c Mon Sep 17 00:00:00 2001 From: pubpub-zz <4083478+pubpub-zz@users.noreply.github.com> Date: Sun, 26 Mar 2023 11:45:21 +0200 Subject: [PATCH 10/15] ENH: Add AnnotationBuilder.popup (#1665) Fixes #1195 See #107 --- docs/user/adding-pdf-annotations.md | 34 ++++++++++++++++++++ docs/user/annotation-popup.png | Bin 0 -> 104471 bytes pypdf/_writer.py | 44 ++++++++++++++++++++----- pypdf/generic/_annotations.py | 48 +++++++++++++++++++++++++++- tests/test_generic.py | 29 +++++++++++++++++ 5 files changed, 146 insertions(+), 9 deletions(-) create mode 100644 docs/user/annotation-popup.png diff --git a/docs/user/adding-pdf-annotations.md b/docs/user/adding-pdf-annotations.md index b65892c53d..0dbdf244a4 100644 --- a/docs/user/adding-pdf-annotations.md +++ b/docs/user/adding-pdf-annotations.md @@ -196,6 +196,40 @@ with open("annotated-pdf.pdf", "wb") as fp: writer.write(fp) ``` +## Popup + +Manage the Popup windows for markups. looks like this: + +![](annotation-popup.png) + +you can use the {py:class}`AnnotationBuilder `: + +you have to use the returned result from add_annotation() to fill-up the + +```python +# Arrange +writer = pypdf.PdfWriter() +writer.append(os.path.join(RESOURCE_ROOT, "crazyones.pdf"), [0]) + +# Act +text_annotation = writer.add_annotation( + 0, + AnnotationBuilder.text( + text="Hello World\nThis is the second line!", + rect=(50, 550, 200, 650), + open=True, + ), +) + +popup_annotation = AnnotationBuilder.popup( + rect=(50, 550, 200, 650), + open=True, + parent=text_annotation, # use the output of add_annotation +) + +writer.write("annotated-pdf-popup.pdf") +``` + ## Link If you want to add a link, you can use diff --git a/docs/user/annotation-popup.png b/docs/user/annotation-popup.png new file mode 100644 index 0000000000000000000000000000000000000000..f8f45caece0fd9825e2a5cab0a84826b5d1e3c0d GIT binary patch literal 104471 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 literal 0 HcmV?d00001 diff --git a/pypdf/_writer.py b/pypdf/_writer.py index bc2415f027..4b556878b3 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -2135,7 +2135,7 @@ def add_link( border: Optional[ArrayObject] = None, fit: FitType = "/Fit", *args: ZoomArgType, - ) -> None: + ) -> DictionaryObject: deprecation_with_replacement( "add_link", "add_annotation(AnnotationBuilder.link(...))" ) @@ -2175,7 +2175,7 @@ def addLink( deprecate_with_replacement( "addLink", "add_annotation(AnnotationBuilder.link(...))", "4.0.0" ) - return self.add_link(pagenum, page_destination, rect, border, fit, *args) + self.add_link(pagenum, page_destination, rect, border, fit, *args) _valid_layouts = ( "/NoLayout", @@ -2421,17 +2421,40 @@ def pageMode(self, mode: PagemodeType) -> None: # deprecated deprecation_with_replacement("pageMode", "page_mode", "3.0.0") self.page_mode = mode - def add_annotation(self, page_number: int, annotation: Dict[str, Any]) -> None: + def add_annotation( + self, + page_number: Union[int, PageObject], + annotation: Dict[str, Any], + ) -> DictionaryObject: + """ + Add a single annotation to the page. + The added annotation must be a new annotation. + It can not be recycled. + + Args: + page_number: PageObject or page index. + annotation: Annotation to be added (created with annotation). + + Returns: + The inserted object + This can be used for pop-up creation, for example + """ + page = page_number + if isinstance(page, int): + page = self.pages[page] + elif not isinstance(page, PageObject): + raise TypeError("page: invalid type") + to_add = cast(DictionaryObject, _pdf_objectify(annotation)) - to_add[NameObject("/P")] = self.get_object(self._pages)["/Kids"][page_number] # type: ignore - page = self.pages[page_number] + to_add[NameObject("/P")] = page.indirect_reference + if page.annotations is None: page[NameObject("/Annots")] = ArrayObject() assert page.annotations is not None # Internal link annotations need the correct object type for the # destination - if to_add.get("/Subtype") == "/Link" and NameObject("/Dest") in to_add: + if to_add.get("/Subtype") == "/Link" and "/Dest" in to_add: tmp = cast(dict, to_add[NameObject("/Dest")]) dest = Destination( NameObject("/LinkName"), @@ -2442,9 +2465,14 @@ def add_annotation(self, page_number: int, annotation: Dict[str, Any]) -> None: ) to_add[NameObject("/Dest")] = dest.dest_array - ind_obj = self._add_object(to_add) + page.annotations.append(self._add_object(to_add)) + + if to_add.get("/Subtype") == "/Popup" and NameObject("/Parent") in to_add: + cast(DictionaryObject, to_add["/Parent"].get_object())[ + NameObject("/Popup") + ] = to_add.indirect_reference - page.annotations.append(ind_obj) + return to_add def clean_page(self, page: Union[PageObject, IndirectObject]) -> PageObject: """ diff --git a/pypdf/generic/_annotations.py b/pypdf/generic/_annotations.py index 7ea2db0fc0..e54a6e3bbb 100644 --- a/pypdf/generic/_annotations.py +++ b/pypdf/generic/_annotations.py @@ -10,7 +10,7 @@ from ._data_structures import ArrayObject, DictionaryObject from ._fit import DEFAULT_FIT, Fit from ._rectangle import RectangleObject -from ._utils import hex_to_rgb +from ._utils import hex_to_rgb, logger_warning def _get_bounding_rectangle(vertices: List[Tuple[float, float]]) -> RectangleObject: @@ -143,6 +143,52 @@ def free_text( ) return free_text + @staticmethod + def popup( + rect: Union[RectangleObject, Tuple[float, float, float, float]], + flags: int = 0, + parent: Optional[DictionaryObject] = None, + open: bool = False, + ) -> DictionaryObject: + """ + Add a popup to the document. + + Args: + rect: + Specifies the clickable rectangular area as `[xLL, yLL, xUR, yUR]` + flags: + 1 - invisible, 2 - hidden, 3 - print, 4 - no zoom, + 5 - no rotate, 6 - no view, 7 - read only, 8 - locked, + 9 - toggle no view, 10 - locked contents + open: + Whether the popup should be shown directly (default is False). + parent: + The contents of the popup. Create this via the AnnotationBuilder. + + Returns: + A dictionary object representing the annotation. + """ + popup_obj = DictionaryObject( + { + NameObject("/Type"): NameObject("/Annot"), + NameObject("/Subtype"): NameObject("/Popup"), + NameObject("/Rect"): RectangleObject(rect), + NameObject("/Open"): BooleanObject(open), + NameObject("/Flags"): NumberObject(flags), + } + ) + if parent: + # This needs to be an indirect object + try: + popup_obj[NameObject("/Parent")] = parent.indirect_reference + except AttributeError: + logger_warning( + "Unregistered Parent object : No Parent field set", + __name__, + ) + + return popup_obj + @staticmethod def line( p1: Tuple[float, float], diff --git a/tests/test_generic.py b/tests/test_generic.py index 6cdb42b96d..17d7604207 100644 --- a/tests/test_generic.py +++ b/tests/test_generic.py @@ -939,6 +939,35 @@ def test_annotation_builder_text(pdf_file_path): writer.write(fp) +def test_annotation_builder_popup(): + # Arrange + pdf_path = RESOURCE_ROOT / "outline-without-title.pdf" + reader = PdfReader(pdf_path) + page = reader.pages[0] + writer = PdfWriter() + writer.add_page(page) + + # Act + text_annotation = AnnotationBuilder.text( + text="Hello World\nThis is the second line!", + rect=(50, 550, 200, 650), + open=True, + ) + ta = writer.add_annotation(0, text_annotation) + + popup_annotation = AnnotationBuilder.popup( + rect=(50, 550, 200, 650), + open=True, + parent=ta, # prefer to use for evolutivity + ) + + writer.add_annotation(writer.pages[0], popup_annotation) + + target = "annotated-pdf-popup.pdf" + writer.write(target) + Path(target).unlink() # comment this out for manual inspection + + def test_checkboxradiobuttonattributes_opt(): assert "/Opt" in CheckboxRadioButtonAttributes.attributes_dict() From 3da3b252767c7a4949c4dfa23afe44d1caf6a14f Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 26 Mar 2023 12:19:11 +0200 Subject: [PATCH 11/15] ENH: Add Highlight text markup annotation (#1740) See #107 --- docs/user/adding-pdf-annotations.md | 33 ++++++++++++++++++++++++++++ docs/user/annotation-highlight.png | Bin 0 -> 33264 bytes pypdf/generic/_annotations.py | 33 ++++++++++++++++++++++++++++ tests/test_generic.py | 32 +++++++++++++++++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 docs/user/annotation-highlight.png diff --git a/docs/user/adding-pdf-annotations.md b/docs/user/adding-pdf-annotations.md index 0dbdf244a4..bbf2441be6 100644 --- a/docs/user/adding-pdf-annotations.md +++ b/docs/user/adding-pdf-annotations.md @@ -273,3 +273,36 @@ writer.add_annotation(page_number=0, annotation=annotation) with open("annotated-pdf.pdf", "wb") as fp: writer.write(fp) ``` + +## Text Markup Annotations + +Text markup annotations refer to a specific piece of text within the document. + +Those are a bit more complicated as you need to know exactly where the text +is. Those are the "Quad points". + +### Highlighting + +If you want to highlight text like this: + +![](annotation-highlight.png) + +you can use the {py:class}`AnnotationBuilder `: + +```python +pdf_path = os.path.join(RESOURCE_ROOT, "crazyones.pdf") +reader = PdfReader(pdf_path) +page = reader.pages[0] +writer = PdfWriter() +writer.add_page(page) + +# Add the line +annotation = AnnotationBuilder.polygon( + vertices=[(50, 550), (200, 650), (70, 750), (50, 700)], +) +writer.add_annotation(page_number=0, annotation=annotation) + +# Write the annotated file to disk +with open("annotated-pdf.pdf", "wb") as fp: + writer.write(fp) +``` diff --git a/docs/user/annotation-highlight.png b/docs/user/annotation-highlight.png new file mode 100644 index 0000000000000000000000000000000000000000..21236411754e54f2e0843a252458019d9df6a800 GIT binary patch literal 33264 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

=cbo7^Y6<%AqC7{1 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 Ze^rTr=qIU{Cd3EQ*3{oqOgntxKL8W3WSsy2 literal 0 HcmV?d00001 diff --git a/pypdf/generic/_annotations.py b/pypdf/generic/_annotations.py index e54a6e3bbb..555bc206e0 100644 --- a/pypdf/generic/_annotations.py +++ b/pypdf/generic/_annotations.py @@ -307,6 +307,39 @@ def rectangle( return square_obj + @staticmethod + def highlight( + *, + rect: Union[RectangleObject, Tuple[float, float, float, float]], + quad_points: ArrayObject, + highlight_color: str = "ff0000", + ) -> DictionaryObject: + """ + Add a highlight annotation to the document. + + Args: + rect: Array of four integers ``[xLL, yLL, xUR, yUR]`` + specifying the highlighted area + quad_points: An ArrayObject of 8 FloatObjects. Must match a word or + a group of words, otherwise no highlight will be shown. + highlight_color: The color used for the hightlight + + Returns: + A dictionary object representing the annotation. + """ + obj = DictionaryObject( + { + NameObject("/Type"): NameObject("/Annot"), + NameObject("/Subtype"): NameObject("/Highlight"), + NameObject("/Rect"): RectangleObject(rect), + NameObject("/QuadPoints"): quad_points, + NameObject("/C"): ArrayObject( + [FloatObject(n) for n in hex_to_rgb(highlight_color)] + ), + } + ) + return obj + @staticmethod def ellipse( rect: Union[RectangleObject, Tuple[float, float, float, float]], diff --git a/tests/test_generic.py b/tests/test_generic.py index 17d7604207..95c2c060b0 100644 --- a/tests/test_generic.py +++ b/tests/test_generic.py @@ -838,6 +838,38 @@ def test_annotation_builder_square(pdf_file_path): writer.write(fp) +def test_annotation_builder_highlight(pdf_file_path): + # Arrange + pdf_path = RESOURCE_ROOT / "crazyones.pdf" + reader = PdfReader(pdf_path) + page = reader.pages[0] + writer = PdfWriter() + writer.add_page(page) + + # Act + highlight_annotation = AnnotationBuilder.highlight( + rect=(95.79332, 704.31777, 138.55779, 724.6855), + highlight_color="ff0000", + quad_points=ArrayObject( + [ + FloatObject(100.060779), + FloatObject(723.55398), + FloatObject(134.29033), + FloatObject(723.55398), + FloatObject(100.060779), + FloatObject(705.4493), + FloatObject(134.29033), + FloatObject(705.4493), + ] + ), + ) + writer.add_annotation(0, highlight_annotation) + + # Assert: You need to inspect the file manually + with open(pdf_file_path, "wb") as fp: + writer.write(fp) + + def test_annotation_builder_circle(pdf_file_path): # Arrange pdf_path = RESOURCE_ROOT / "crazyones.pdf" From b0d92b300edd3d9eef033ad76992e24941318d8d Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 26 Mar 2023 13:14:20 +0200 Subject: [PATCH 12/15] MAINT: Add AnnotationFlag (#1746) BUG: /Flags should have been /F - typo. Was never released, though. --- pypdf/constants.py | 15 +++++++++++++++ pypdf/generic/_annotations.py | 8 ++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/pypdf/constants.py b/pypdf/constants.py index 9ecdf0e821..9f7327adfe 100644 --- a/pypdf/constants.py +++ b/pypdf/constants.py @@ -440,6 +440,21 @@ class PageLabelStyle: UPPERCASE_LETTER = "/A" # Uppercase letters +class AnnotationFlag(IntFlag): + """See 12.5.3 "Anntation Flags".""" + + INVISIBLE = 1 + HIDDEN = 2 + PRINT = 4 + NO_ZOOM = 8 + NO_ROTATE = 16 + NO_VIEW = 32 + READ_ONLY = 64 + LOCKED = 128 + TOGGLE_NO_VIEW = 256 + LOCKED_CONTENTS = 512 + + PDF_KEYS = ( AnnotationDictionaryAttributes, CatalogAttributes, diff --git a/pypdf/generic/_annotations.py b/pypdf/generic/_annotations.py index 555bc206e0..f9d0f3de6f 100644 --- a/pypdf/generic/_annotations.py +++ b/pypdf/generic/_annotations.py @@ -1,5 +1,6 @@ from typing import TYPE_CHECKING, List, Optional, Tuple, Union +from ..constants import AnnotationFlag from ._base import ( BooleanObject, FloatObject, @@ -12,6 +13,8 @@ from ._rectangle import RectangleObject from ._utils import hex_to_rgb, logger_warning +NO_FLAGS = AnnotationFlag(0) + def _get_bounding_rectangle(vertices: List[Tuple[float, float]]) -> RectangleObject: x_min, y_min = vertices[0][0], vertices[0][1] @@ -145,8 +148,9 @@ def free_text( @staticmethod def popup( + *, rect: Union[RectangleObject, Tuple[float, float, float, float]], - flags: int = 0, + flags: AnnotationFlag = NO_FLAGS, parent: Optional[DictionaryObject] = None, open: bool = False, ) -> DictionaryObject: @@ -174,7 +178,7 @@ def popup( NameObject("/Subtype"): NameObject("/Popup"), NameObject("/Rect"): RectangleObject(rect), NameObject("/Open"): BooleanObject(open), - NameObject("/Flags"): NumberObject(flags), + NameObject("/F"): NumberObject(flags), } ) if parent: From c75bb16efe0671fef8ba5e3e03c2a0fa867b4cbe Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 26 Mar 2023 15:09:18 +0200 Subject: [PATCH 13/15] SEC: Use secrets instead of random (#1748) The implication of this is that PDFs which were encrypted with pypdf before might be less secure than they should be. It's unclear to me if "less secure" means "insecure" or if it's just a theoretical advantage. --- pypdf/_encryption.py | 18 +++++++++++++----- pypdf/_writer.py | 7 +++++-- tests/test_encryption.py | 14 +++++++++++++- tests/test_page.py | 4 ++-- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/pypdf/_encryption.py b/pypdf/_encryption.py index b199a744b2..ccdfcbc5e6 100644 --- a/pypdf/_encryption.py +++ b/pypdf/_encryption.py @@ -26,7 +26,7 @@ # POSSIBILITY OF SUCH DAMAGE. import hashlib -import random +import secrets import struct from enum import IntEnum from typing import Any, Dict, Optional, Tuple, Union, cast @@ -56,6 +56,14 @@ class CryptIdentity(CryptBase): pass +def _randrange(lower_inclusive: int, upper_exclusive: int) -> int: + return secrets.choice(range(lower_inclusive, upper_exclusive)) + + +def _randint(lower_inclusive: int, upper_inclusive: int) -> int: + return secrets.choice(range(lower_inclusive, upper_inclusive + 1)) + + try: from Crypto.Cipher import AES, ARC4 # type: ignore[import] from Crypto.Util.Padding import pad # type: ignore[import] @@ -75,7 +83,7 @@ def __init__(self, key: bytes) -> None: self.key = key def encrypt(self, data: bytes) -> bytes: - iv = bytes(bytearray(random.randint(0, 255) for _ in range(16))) + iv = bytes(bytearray(_randint(0, 255) for _ in range(16))) p = 16 - len(data) % 16 data += bytes(bytearray(p for _ in range(p))) aes = AES.new(self.key, AES.MODE_CBC, iv) @@ -773,7 +781,7 @@ def compute_U_value(password: bytes, key: bytes) -> Tuple[bytes, bytes]: Returns: A tuple (u-value, ue value) """ - random_bytes = bytes(random.randrange(0, 256) for _ in range(16)) + random_bytes = bytes(_randrange(0, 256) for _ in range(16)) val_salt = random_bytes[:8] key_salt = random_bytes[8:] u_value = hashlib.sha256(password + val_salt).digest() + val_salt + key_salt @@ -816,7 +824,7 @@ def compute_O_value( Returns: A tuple (O value, OE value) """ - random_bytes = bytes(random.randrange(0, 256) for _ in range(16)) + random_bytes = bytes(_randrange(0, 256) for _ in range(16)) val_salt = random_bytes[:8] key_salt = random_bytes[8:] o_value = ( @@ -861,7 +869,7 @@ def compute_Perms_value(key: bytes, p: int, metadata_encrypted: bool) -> bytes: The perms value """ b8 = b"T" if metadata_encrypted else b"F" - rr = bytes(random.randrange(0, 256) for _ in range(4)) + rr = bytes(_randrange(0, 256) for _ in range(4)) data = struct.pack(" Date: Sun, 26 Mar 2023 16:07:17 +0200 Subject: [PATCH 14/15] DEV: ruff updates; activate --fix (#1747) --- .pre-commit-config.yaml | 3 ++- pypdf/_security.py | 2 +- pypdf/filters.py | 2 +- pypdf/types.py | 2 +- pypdf/xmp.py | 2 +- pyproject.toml | 4 +++- requirements/ci-3.11.txt | 41 ++++++++++++++++++---------------------- tests/__init__.py | 6 +++--- 8 files changed, 30 insertions(+), 32 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b4def409e7..bfda439bb6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,9 +33,10 @@ repos: additional_dependencies: [black==22.1.0] exclude: "docs/user/robustness.md" - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: 'v0.0.254' + rev: 'v0.0.259' hooks: - id: ruff + args: ['--fix'] - repo: https://github.com/asottile/pyupgrade rev: v3.3.1 hooks: diff --git a/pypdf/_security.py b/pypdf/_security.py index 5ede2a35d1..fe6e6d8a09 100644 --- a/pypdf/_security.py +++ b/pypdf/_security.py @@ -41,7 +41,7 @@ except ImportError: # PEP 586 introduced typing.Literal with Python 3.8 # For older Python versions, the backport typing_extensions is necessary: - from typing_extensions import Literal # type: ignore[misc] + from typing_extensions import Literal # type: ignore[misc, assignment] # ref: pdf1.8 spec section 3.5.2 algorithm 3.2 _encryption_padding = ( diff --git a/pypdf/filters.py b/pypdf/filters.py index 68030601e9..72b4243163 100644 --- a/pypdf/filters.py +++ b/pypdf/filters.py @@ -63,7 +63,7 @@ except ImportError: # PEP 586 introduced typing.Literal with Python 3.8 # For older Python versions, the backport typing_extensions is necessary: - from typing_extensions import Literal # type: ignore[misc] + from typing_extensions import Literal # type: ignore[misc, assignment] def decompress(data: bytes) -> bytes: diff --git a/pypdf/types.py b/pypdf/types.py index db39b6580a..4f91614c6f 100644 --- a/pypdf/types.py +++ b/pypdf/types.py @@ -6,7 +6,7 @@ # Python 3.8+: https://peps.python.org/pep-0586 from typing import Literal # type: ignore[attr-defined] except ImportError: - from typing_extensions import Literal # type: ignore[misc] + from typing_extensions import Literal # type: ignore[misc, assignment] try: # Python 3.10+: https://www.python.org/dev/peps/pep-0484/ diff --git a/pypdf/xmp.py b/pypdf/xmp.py index 024c484411..23e8ad3f77 100644 --- a/pypdf/xmp.py +++ b/pypdf/xmp.py @@ -218,7 +218,7 @@ def __init__(self, stream: ContentStream) -> None: self.stream = stream try: data = self.stream.get_data() - doc_root: Document = parseString(data) + doc_root: Document = parseString(data) # noqa: S318 except ExpatError as e: raise PdfReadError(f"XML in XmpInformation was invalid: {e}") self.rdf_root: XmlElement = doc_root.getElementsByTagNameNS( diff --git a/pyproject.toml b/pyproject.toml index 685aa98043..fdf89e0854 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -115,6 +115,7 @@ ignore = [ "RUF001", "RUF002", "RUF005", "ARG", "DTZ001", # The use of `datetime.datetime()` without `tzinfo` is necessary + "PLC", # Personal preference "D406", # Section name should end with a newline ("Returns") "D212", # I want multiline-docstrings to start at the second line @@ -149,6 +150,7 @@ ignore = [ "UP006", "UP007", # for the moment, fix it later: "A", # Variable is shadowing a built-in + "B028", # No explicit `stacklevel` keyword argument found "B904", # Within an `except` clause, raise exceptions with "B905", # `zip()` without an explicit `strict=` parameter "C901", @@ -177,7 +179,7 @@ ignore = [ [tool.ruff.per-file-ignores] "tests/*" = ["S101", "ANN001", "ANN201","D104", "S105", "S106"] "sample-files/*" = ["D100", "INP001"] -"_encryption.py" = ["S324"] +"_encryption.py" = ["S324", "S311"] "_security.py" = ["S324"] "_writer.py" = ["S324"] "make_changelog.py" = ["T201"] diff --git a/requirements/ci-3.11.txt b/requirements/ci-3.11.txt index 94f4832ab4..a54dddde5e 100644 --- a/requirements/ci-3.11.txt +++ b/requirements/ci-3.11.txt @@ -4,53 +4,48 @@ # # pip-compile --output-file=requirements/ci-3.11.txt requirements/ci.in # -attrs==22.1.0 +attrs==22.2.0 # via # flake8-bugbear - # flake8-implicit-str-concat # pytest -coverage==6.5.0 +coverage==7.2.2 # via -r requirements/ci.in -flake8==5.0.4 +flake8==6.0.0 # via # -r requirements/ci.in # flake8-bugbear # flake8-print -flake8-bugbear==22.10.27 +flake8-bugbear==23.3.23 # via -r requirements/ci.in -flake8-implicit-str-concat==0.3.0 +flake8-implicit-str-concat==0.4.0 # via -r requirements/ci.in flake8-print==5.0.0 # via -r requirements/ci.in -iniconfig==1.1.1 +iniconfig==2.0.0 # via pytest mccabe==0.7.0 # via flake8 -more-itertools==8.14.0 - # via flake8-implicit-str-concat -mypy==0.982 +mypy==1.1.1 # via -r requirements/ci.in -mypy-extensions==0.4.3 +mypy-extensions==1.0.0 # via mypy -packaging==21.3 +packaging==23.0 # via pytest -pillow==9.3.0 +pillow==9.4.0 # via -r requirements/ci.in pluggy==1.0.0 # via pytest py-cpuinfo==9.0.0 # via pytest-benchmark -pycodestyle==2.9.1 +pycodestyle==2.10.0 # via # flake8 # flake8-print -pycryptodome==3.15.0 +pycryptodome==3.17 # via -r requirements/ci.in -pyflakes==2.5.0 +pyflakes==3.0.1 # via flake8 -pyparsing==3.0.9 - # via packaging -pytest==7.2.0 +pytest==7.2.2 # via # -r requirements/ci.in # pytest-benchmark @@ -59,13 +54,13 @@ pytest-benchmark==4.0.0 # via -r requirements/ci.in pytest-socket==0.6.0 # via -r requirements/ci.in -ruff==0.0.254 +ruff==0.0.259 # via -r requirements/ci.in -typeguard==2.13.3 +typeguard==3.0.2 # via -r requirements/ci.in types-dataclasses==0.6.6 # via -r requirements/ci.in -types-pillow==9.2.2.2 +types-pillow==9.4.0.17 # via -r requirements/ci.in -typing-extensions==4.4.0 +typing-extensions==4.5.0 # via mypy diff --git a/tests/__init__.py b/tests/__init__.py index 304a60c107..3d79f778a6 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -34,9 +34,9 @@ def get_pdf_from_url(url: str, name: str) -> bytes: cpt = 3 while cpt > 0: try: - with urllib.request.urlopen(url) as response, cache_path.open( - "wb" - ) as out_file: + with urllib.request.urlopen( # noqa: S310 + url + ) as response, cache_path.open("wb") as out_file: out_file.write(response.read()) cpt = 0 except HTTPError as e: From 050bca679ca1b7988977a9df784e874ff33d1b9e Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Sun, 26 Mar 2023 16:11:32 +0200 Subject: [PATCH 15/15] REL: 3.7.0 Security (SEC): - Use Python's secrets module instead of random module (#1748) New Features (ENH): - Add AnnotationBuilder.highlight text markup annotation (#1740) - Add AnnotationBuilder.popup (#1665) - Add AnnotationBuilder.polyline annotation support (#1726) - Add clone_from parameter in PdfWriter constructor (#1703) Bug Fixes (BUG): - 'DictionaryObject' object has no attribute 'indirect_reference' (#1729) Robustness (ROB): - Handle params NullObject in decode_stream_data (#1738) Documentation (DOC): - Project scope (#1743) Maintenance (MAINT): - Add AnnotationFlag (#1746) - Add LazyDict.__str__ (#1727) [Full Changelog](https://github.com/py-pdf/pypdf/compare/3.6.0...3.7.0) --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ pypdf/_version.py | 2 +- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88cb014214..3e9f5a8fdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,33 @@ # CHANGELOG +## Version 3.7.0, 2023-03-26 + +### Security (SEC) +- Use Python's secrets module instead of random module (#1748) + +### New Features (ENH) +- Add AnnotationBuilder.highlight text markup annotation (#1740) +- Add AnnotationBuilder.popup (#1665) +- Add AnnotationBuilder.polyline annotation support (#1726) +- Add clone_from parameter in PdfWriter constructor (#1703) + +### Bug Fixes (BUG) +- 'DictionaryObject' object has no attribute 'indirect_reference' (#1729) + +### Robustness (ROB) +- Handle params NullObject in decode_stream_data (#1738) + +### Documentation (DOC) +- Project scope (#1743) + +### Maintenance (MAINT) +- Add AnnotationFlag (#1746) +- Add LazyDict.__str__ (#1727) + + +[Full Changelog](https://github.com/py-pdf/pypdf/compare/3.6.0...3.7.0) + + ## Version 3.6.0, 2023-03-18 ### New Features (ENH) diff --git a/pypdf/_version.py b/pypdf/_version.py index 85197cb4a0..46f67e7f8d 100644 --- a/pypdf/_version.py +++ b/pypdf/_version.py @@ -1 +1 @@ -__version__ = "3.6.0" +__version__ = "3.7.0"