From 964fb47b0fbfa89864680582640ae4eedf143890 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Tue, 14 Nov 2023 08:59:40 +0100 Subject: [PATCH] ENH: Add example with attachment (#26) --- .github/workflows/ci.txt | 18 ++++++++++++------ .github/workflows/json_consistency.py | 17 +++++++++++------ .pre-commit-config.yaml | 10 +++++----- 025-attachment/add_attachment.py | 10 ++++++++++ 025-attachment/image.png | Bin 0 -> 6669 bytes 025-attachment/with-attachment.pdf | Bin 0 -> 24296 bytes Makefile | 2 ++ files.json | 12 +++++++++++- 8 files changed, 51 insertions(+), 18 deletions(-) create mode 100644 025-attachment/add_attachment.py create mode 100644 025-attachment/image.png create mode 100644 025-attachment/with-attachment.pdf create mode 100644 Makefile diff --git a/.github/workflows/ci.txt b/.github/workflows/ci.txt index 065e23e..73df9ab 100644 --- a/.github/workflows/ci.txt +++ b/.github/workflows/ci.txt @@ -1,12 +1,18 @@ # -# This file is autogenerated by pip-compile with python 3.11 -# To update, run: +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: # # pip-compile .github/workflows/ci.in # -pydantic==1.10.4 - # via -r .github/workflows/ci.in -pypdf==3.3.0 +annotated-types==0.6.0 + # via pydantic +pydantic==2.5.0 # via -r .github/workflows/ci.in -typing-extensions==4.4.0 +pydantic-core==2.14.1 # via pydantic +pypdf==3.17.0 + # via -r .github/workflows/ci.in +typing-extensions==4.8.0 + # via + # pydantic + # pydantic-core diff --git a/.github/workflows/json_consistency.py b/.github/workflows/json_consistency.py index c7bec8a..1383bb6 100644 --- a/.github/workflows/json_consistency.py +++ b/.github/workflows/json_consistency.py @@ -1,5 +1,6 @@ import datetime import json +import logging import sys from pathlib import Path @@ -7,13 +8,17 @@ from pypdf import PdfReader +logger = logging.getLogger() + +logger.level = logging.ERROR + class AnnotationCount(BaseModel): - Highlight: int | None - Ink: int | None - Link: int | None - Text: int | None - Widget: int | None + Highlight: int | None = None + Ink: int | None = None + Link: int | None = None + Text: int | None = None + Widget: int | None = None def items(self) -> list[tuple[str, int]]: return [ @@ -47,7 +52,7 @@ def main() -> None: """Check the consistency of the JSON metadata file.""" with open("files.json") as f: data = json.load(f) - main_pdf = MainPdfFile.parse_obj(data) + main_pdf = MainPdfFile.model_validate(data) registered_pdfs = [] seen_failure = False diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f2f6d5c..0e34938 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ # pre-commit run --all-files repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.1.0 + rev: v4.5.0 hooks: - id: check-ast - id: check-case-conflict @@ -20,21 +20,21 @@ repos: hooks: - id: isort - repo: https://github.com/psf/black - rev: 22.1.0 + rev: 22.3.0 hooks: - id: black - repo: https://github.com/asottile/pyupgrade - rev: v2.31.1 + rev: v3.15.0 hooks: - id: pyupgrade args: [--py39-plus] - repo: https://github.com/asottile/blacken-docs - rev: v1.12.1 + rev: 1.16.0 hooks: - id: blacken-docs additional_dependencies: [black==22.1.0] - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: 'v0.0.280' + rev: 'v0.1.5' hooks: - id: ruff args: ['--fix'] diff --git a/025-attachment/add_attachment.py b/025-attachment/add_attachment.py new file mode 100644 index 0000000..d6a58d5 --- /dev/null +++ b/025-attachment/add_attachment.py @@ -0,0 +1,10 @@ +from pypdf import PdfReader, PdfWriter + +reader = PdfReader("../001-trivial/minimal-document.pdf") +writer = PdfWriter() +writer.append_pages_from_reader(reader) + +with open("image.png", "rb") as file: + writer.add_attachment("image.png", file.read()) +with open("with-attachment.pdf", "wb") as file: + writer.write(file) diff --git a/025-attachment/image.png b/025-attachment/image.png new file mode 100644 index 0000000000000000000000000000000000000000..7d74f9a921b3f7fc98b815104d85eede3f888c89 GIT binary patch literal 6669 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 literal 0 HcmV?d00001 diff --git a/025-attachment/with-attachment.pdf b/025-attachment/with-attachment.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c54c152a49d11f0486f7f698ef49244d1ec5bc8d GIT binary patch literal 24296 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�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