From a712bb21da6ddc2f28d1125934a408b59393e908 Mon Sep 17 00:00:00 2001 From: Jinge Li <9894243+chinapandaman@users.noreply.github.com> Date: Fri, 23 Aug 2024 12:24:04 +0000 Subject: [PATCH] PPF-711: also changed pattern keys --- PyPDFForm/patterns.py | 16 +++++++++++-- PyPDFForm/widgets/base.py | 2 +- PyPDFForm/widgets/text.py | 2 +- docs/prepare.md | 3 ++- .../widget/create_text_align_multiline.pdf | Bin 0 -> 43451 bytes tests/test_create_widget.py | 22 ++++++++++++++++++ 6 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 pdf_samples/widget/create_text_align_multiline.pdf diff --git a/PyPDFForm/patterns.py b/PyPDFForm/patterns.py index 0e1be6be..87b8b40f 100644 --- a/PyPDFForm/patterns.py +++ b/PyPDFForm/patterns.py @@ -4,7 +4,7 @@ from pypdf.generic import (DictionaryObject, NameObject, NumberObject, TextStringObject) -from .constants import (AP, AS, CA, DA, DV, FT, IMAGE_FIELD_IDENTIFIER, JS, MK, +from .constants import (AP, AS, CA, DA, DV, FT, IMAGE_FIELD_IDENTIFIER, JS, MK, MULTILINE, READ_ONLY, A, Btn, Ch, Ff, N, Off, Opt, Parent, Q, Sig, T, Tx, V, Yes) from .middleware.checkbox import Checkbox @@ -166,4 +166,16 @@ def update_created_text_field_alignment(annot: DictionaryObject, val: int) -> No annot[NameObject(Q)] = NumberObject(val) -NON_ACRO_FORM_PARAM_TO_FUNC = {"alignment": update_created_text_field_alignment} +def update_created_text_field_multiline(annot: DictionaryObject, val: bool) -> None: + """Patterns to update to multiline for text annotations created by the library.""" + + if val: + annot[NameObject(Ff)] = NumberObject( + int(annot[NameObject(Ff)]) | MULTILINE # noqa + ) + + +NON_ACRO_FORM_PARAM_TO_FUNC = { + ("TextWidget", "alignment"): update_created_text_field_alignment, + ("TextWidget", "multiline"): update_created_text_field_multiline, +} diff --git a/PyPDFForm/widgets/base.py b/PyPDFForm/widgets/base.py index ba1f2c81..a641b6e6 100644 --- a/PyPDFForm/widgets/base.py +++ b/PyPDFForm/widgets/base.py @@ -59,7 +59,7 @@ def __init__( for each in self.ALLOWED_NON_ACRO_FORM_PARAMS: if each in kwargs: - self.non_acro_form_params.append((each, kwargs.get(each))) + self.non_acro_form_params.append(((type(self).__name__, each), kwargs.get(each))) def watermarks(self, stream: bytes) -> List[bytes]: """Returns a list of watermarks after creating the widget.""" diff --git a/PyPDFForm/widgets/text.py b/PyPDFForm/widgets/text.py index a4d74a81..d18b7cf9 100644 --- a/PyPDFForm/widgets/text.py +++ b/PyPDFForm/widgets/text.py @@ -19,6 +19,6 @@ class TextWidget(Widget): ("max_length", "maxlen"), ] COLOR_PARAMS = ["font_color", "bg_color", "border_color"] - ALLOWED_NON_ACRO_FORM_PARAMS = ["alignment"] + ALLOWED_NON_ACRO_FORM_PARAMS = ["alignment", "multiline"] NONE_DEFAULTS = ["max_length"] ACRO_FORM_FUNC = "textfield" diff --git a/docs/prepare.md b/docs/prepare.md index 0ecd1a7d..6df5b94f 100644 --- a/docs/prepare.md +++ b/docs/prepare.md @@ -41,7 +41,8 @@ new_form = PdfWrapper("dummy.pdf").create_widget( bg_color=(0, 0, 1), # optional border_color=(1, 0, 0), # optional border_width=5, # optional - alignment=0 # optional, 0=left, 1=center, 2=right + alignment=0, # optional, 0=left, 1=center, 2=right + multiline=True # optional ) with open("output.pdf", "wb+") as output: diff --git a/pdf_samples/widget/create_text_align_multiline.pdf b/pdf_samples/widget/create_text_align_multiline.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b7f4e97bebd5bd99ed300ddecc3d953bea3e2b64 GIT binary patch literal 43451 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