From 786d611386508afab64f96fcd46f62cabce2af63 Mon Sep 17 00:00:00 2001 From: Jinge Li <9894243+chinapandaman@users.noreply.github.com> Date: Wed, 21 Aug 2024 00:46:58 +0000 Subject: [PATCH 1/8] PPF-707: still need tests --- PyPDFForm/patterns.py | 6 ++++++ PyPDFForm/widgets/base.py | 41 +++++++++++++++++++++++++++++++++++++-- PyPDFForm/widgets/text.py | 1 + PyPDFForm/wrapper.py | 4 ++++ 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/PyPDFForm/patterns.py b/PyPDFForm/patterns.py index 479f60a7..f280503c 100644 --- a/PyPDFForm/patterns.py +++ b/PyPDFForm/patterns.py @@ -158,3 +158,9 @@ def simple_flatten_generic(annot: DictionaryObject) -> None: annot[NameObject(Ff)] = NumberObject( int(annot.get(NameObject(Ff), 0)) | READ_ONLY # noqa ) + + +def update_created_text_field_alignment(annot: DictionaryObject, val: int) -> None: + """Patterns to update text alignment for text annotations created by the library.""" + + annot[NameObject(Q)] = NumberObject(val) diff --git a/PyPDFForm/widgets/base.py b/PyPDFForm/widgets/base.py index 398e6058..1ed62748 100644 --- a/PyPDFForm/widgets/base.py +++ b/PyPDFForm/widgets/base.py @@ -2,12 +2,16 @@ """Contains base class for all widgets to create.""" from io import BytesIO -from typing import List +from typing import List, cast -from pypdf import PdfReader +from pypdf import PdfReader, PdfWriter +from pypdf.generic import DictionaryObject from reportlab.lib.colors import Color from reportlab.pdfgen.canvas import Canvas +from ..constants import Annots +from ..template import get_widget_key +from ..patterns import update_created_text_field_alignment from ..utils import stream_to_io @@ -16,6 +20,8 @@ class Widget: USER_PARAMS = [] COLOR_PARAMS = [] + ALLOWED_NON_ACRO_FORM_PARAMS = [] + NON_ACRO_FORM_PARAMS = [] NONE_DEFAULTS = [] ACRO_FORM_FUNC = "" @@ -51,6 +57,10 @@ def __init__( elif user_input in self.NONE_DEFAULTS: self.acro_form_params[param] = None + for each in self.ALLOWED_NON_ACRO_FORM_PARAMS: + if each in kwargs: + self.NON_ACRO_FORM_PARAMS.append((each, kwargs.get(each))) + def watermarks(self, stream: bytes) -> List[bytes]: """Returns a list of watermarks after creating the widget.""" @@ -76,3 +86,30 @@ def watermarks(self, stream: bytes) -> List[bytes]: watermark.read() if i == self.page_number - 1 else b"" for i in range(page_count) ] + + +def handle_non_acroform_params(pdf: bytes, key: str, params: list) -> bytes: + """Handles non acroform parameters when creating a widget.""" + + param_to_func = { + "alignment": update_created_text_field_alignment + } + + pdf_file = PdfReader(stream_to_io(pdf)) + out = PdfWriter() + out.append(pdf_file) + + for page in out.pages: + for annot in page.get(Annots, []): # noqa + annot = cast(DictionaryObject, annot.get_object()) + _key = get_widget_key(annot.get_object()) + + if _key == key: + for param in params: + if param[0] in param_to_func: + param_to_func[param[0]](annot, param[1]) + + with BytesIO() as f: + out.write(f) + f.seek(0) + return f.read() diff --git a/PyPDFForm/widgets/text.py b/PyPDFForm/widgets/text.py index 962bb08f..a4d74a81 100644 --- a/PyPDFForm/widgets/text.py +++ b/PyPDFForm/widgets/text.py @@ -19,5 +19,6 @@ class TextWidget(Widget): ("max_length", "maxlen"), ] COLOR_PARAMS = ["font_color", "bg_color", "border_color"] + ALLOWED_NON_ACRO_FORM_PARAMS = ["alignment"] NONE_DEFAULTS = ["max_length"] ACRO_FORM_FUNC = "textfield" diff --git a/PyPDFForm/wrapper.py b/PyPDFForm/wrapper.py index 6d962364..5d3d7096 100644 --- a/PyPDFForm/wrapper.py +++ b/PyPDFForm/wrapper.py @@ -22,6 +22,7 @@ from .utils import (get_page_streams, merge_two_pdfs, preview_widget_to_draw, remove_all_widgets) from .watermark import create_watermarks_and_draw, merge_watermarks_with_pdf +from .widgets.base import handle_non_acroform_params from .widgets.checkbox import CheckBoxWidget from .widgets.dropdown import DropdownWidget from .widgets.text import TextWidget @@ -218,6 +219,9 @@ def create_widget( ).watermarks(self.read()) self.stream = merge_watermarks_with_pdf(self.read(), watermarks) + if _class.NON_ACRO_FORM_PARAMS: + self.stream = handle_non_acroform_params(self.stream, name, _class.NON_ACRO_FORM_PARAMS) + new_widgets = build_widgets(self.read()) for k, v in self.widgets.items(): if k in new_widgets: From 807b9618dfddc0af73fc8a2fac7c811290ebbbd8 Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Tue, 20 Aug 2024 19:51:25 -0500 Subject: [PATCH 2/8] PPF-707: rename this function --- PyPDFForm/widgets/base.py | 4 ++-- PyPDFForm/wrapper.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PyPDFForm/widgets/base.py b/PyPDFForm/widgets/base.py index 1ed62748..f65f45c7 100644 --- a/PyPDFForm/widgets/base.py +++ b/PyPDFForm/widgets/base.py @@ -88,8 +88,8 @@ def watermarks(self, stream: bytes) -> List[bytes]: ] -def handle_non_acroform_params(pdf: bytes, key: str, params: list) -> bytes: - """Handles non acroform parameters when creating a widget.""" +def handle_non_acro_form_params(pdf: bytes, key: str, params: list) -> bytes: + """Handles non acro form parameters when creating a widget.""" param_to_func = { "alignment": update_created_text_field_alignment diff --git a/PyPDFForm/wrapper.py b/PyPDFForm/wrapper.py index 5d3d7096..2ffe06ec 100644 --- a/PyPDFForm/wrapper.py +++ b/PyPDFForm/wrapper.py @@ -22,7 +22,7 @@ from .utils import (get_page_streams, merge_two_pdfs, preview_widget_to_draw, remove_all_widgets) from .watermark import create_watermarks_and_draw, merge_watermarks_with_pdf -from .widgets.base import handle_non_acroform_params +from .widgets.base import handle_non_acro_form_params from .widgets.checkbox import CheckBoxWidget from .widgets.dropdown import DropdownWidget from .widgets.text import TextWidget @@ -220,7 +220,7 @@ def create_widget( self.stream = merge_watermarks_with_pdf(self.read(), watermarks) if _class.NON_ACRO_FORM_PARAMS: - self.stream = handle_non_acroform_params(self.stream, name, _class.NON_ACRO_FORM_PARAMS) + self.stream = handle_non_acro_form_params(self.stream, name, _class.NON_ACRO_FORM_PARAMS) new_widgets = build_widgets(self.read()) for k, v in self.widgets.items(): From cdb720d68627c293d76b9fb4705db0412d7c8fc0 Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Tue, 20 Aug 2024 19:56:43 -0500 Subject: [PATCH 3/8] PPF-707: move the mapping to patterns.py --- PyPDFForm/patterns.py | 5 +++++ PyPDFForm/widgets/base.py | 10 +++------- PyPDFForm/wrapper.py | 4 +++- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/PyPDFForm/patterns.py b/PyPDFForm/patterns.py index f280503c..86e1cdad 100644 --- a/PyPDFForm/patterns.py +++ b/PyPDFForm/patterns.py @@ -164,3 +164,8 @@ def update_created_text_field_alignment(annot: DictionaryObject, val: int) -> No """Patterns to update text alignment for text annotations created by the library.""" annot[NameObject(Q)] = NumberObject(val) + + +NON_ACRO_FORM_PARAM_TO_FUNC = { + "alignment": update_created_text_field_alignment +} diff --git a/PyPDFForm/widgets/base.py b/PyPDFForm/widgets/base.py index f65f45c7..45a7fc73 100644 --- a/PyPDFForm/widgets/base.py +++ b/PyPDFForm/widgets/base.py @@ -11,7 +11,7 @@ from ..constants import Annots from ..template import get_widget_key -from ..patterns import update_created_text_field_alignment +from ..patterns import NON_ACRO_FORM_PARAM_TO_FUNC from ..utils import stream_to_io @@ -91,10 +91,6 @@ def watermarks(self, stream: bytes) -> List[bytes]: def handle_non_acro_form_params(pdf: bytes, key: str, params: list) -> bytes: """Handles non acro form parameters when creating a widget.""" - param_to_func = { - "alignment": update_created_text_field_alignment - } - pdf_file = PdfReader(stream_to_io(pdf)) out = PdfWriter() out.append(pdf_file) @@ -106,8 +102,8 @@ def handle_non_acro_form_params(pdf: bytes, key: str, params: list) -> bytes: if _key == key: for param in params: - if param[0] in param_to_func: - param_to_func[param[0]](annot, param[1]) + if param[0] in NON_ACRO_FORM_PARAM_TO_FUNC: + NON_ACRO_FORM_PARAM_TO_FUNC[param[0]](annot, param[1]) with BytesIO() as f: out.write(f) diff --git a/PyPDFForm/wrapper.py b/PyPDFForm/wrapper.py index 2ffe06ec..59cbe9a1 100644 --- a/PyPDFForm/wrapper.py +++ b/PyPDFForm/wrapper.py @@ -220,7 +220,9 @@ def create_widget( self.stream = merge_watermarks_with_pdf(self.read(), watermarks) if _class.NON_ACRO_FORM_PARAMS: - self.stream = handle_non_acro_form_params(self.stream, name, _class.NON_ACRO_FORM_PARAMS) + self.stream = handle_non_acro_form_params(self.stream, + name, + _class.NON_ACRO_FORM_PARAMS) new_widgets = build_widgets(self.read()) for k, v in self.widgets.items(): From a7244d2cc847c5275a7011d4c185f6112b6c3315 Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Tue, 20 Aug 2024 20:23:43 -0500 Subject: [PATCH 4/8] PPF-707: fix scoping bug, add test --- PyPDFForm/widgets/base.py | 2 +- PyPDFForm/wrapper.py | 9 +++---- .../widget/create_text_align_center.pdf | Bin 0 -> 43453 bytes tests/test_create_widget.py | 22 ++++++++++++++++++ 4 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 pdf_samples/widget/create_text_align_center.pdf diff --git a/PyPDFForm/widgets/base.py b/PyPDFForm/widgets/base.py index 45a7fc73..f3101bac 100644 --- a/PyPDFForm/widgets/base.py +++ b/PyPDFForm/widgets/base.py @@ -21,7 +21,6 @@ class Widget: USER_PARAMS = [] COLOR_PARAMS = [] ALLOWED_NON_ACRO_FORM_PARAMS = [] - NON_ACRO_FORM_PARAMS = [] NONE_DEFAULTS = [] ACRO_FORM_FUNC = "" @@ -42,6 +41,7 @@ def __init__( "x": x, "y": y, } + self.NON_ACRO_FORM_PARAMS = [] for each in self.USER_PARAMS: user_input, param = each diff --git a/PyPDFForm/wrapper.py b/PyPDFForm/wrapper.py index 59cbe9a1..605e866e 100644 --- a/PyPDFForm/wrapper.py +++ b/PyPDFForm/wrapper.py @@ -214,15 +214,16 @@ def create_widget( if _class is None: return self - watermarks = _class( + obj = _class( name=name, page_number=page_number, x=x, y=y, **kwargs - ).watermarks(self.read()) + ) + watermarks = obj.watermarks(self.read()) self.stream = merge_watermarks_with_pdf(self.read(), watermarks) - if _class.NON_ACRO_FORM_PARAMS: + if obj.NON_ACRO_FORM_PARAMS: self.stream = handle_non_acro_form_params(self.stream, name, - _class.NON_ACRO_FORM_PARAMS) + obj.NON_ACRO_FORM_PARAMS) new_widgets = build_widgets(self.read()) for k, v in self.widgets.items(): diff --git a/pdf_samples/widget/create_text_align_center.pdf b/pdf_samples/widget/create_text_align_center.pdf new file mode 100644 index 0000000000000000000000000000000000000000..066394da0b43bd1f5b623bf1f90f49b806bc780c GIT binary patch literal 43453 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 z z=)jX;)0^JDyQKw2J~n6hQ)7yc%9t%*R0P2RK51{sL5{0I9{I?bo_7a=eSoM%ejOC=JHTd z)|cvolmA@e+|Kgj?TPTZFX+tofd8m=+3CE0xu%L>d{BB$>s*Im$X+=Y%WiXApOrLOaLyInhXZG$yp3 z#S3ZsX`l zF?TpEbH#P!-{*^~fRkT;a~HYJ->VC%zwx`HT8E#}{hr zB=*qH2o!lUp^!Q~&c|OqsTyVrCUL*oX$g4Lk9UTNWUF^}&r9FsMR@o7hd56@yuvd> zkm}OoN)KJ0Lq9%#AEHSE0)7bpW0c+L3T7ABw1NU^=>wP~w= zwcb-@koj2w^RuT#{n{)S2}VTX7_I+ZGd9L`zAW=z?ALD+DHAaCD-Sn6O+cLu5Wm$= zy)CzD?snF$D?7MHYE@#_Xr-#Ms`cV_X(Z1EjqiKtG@54kw5xRb&<))k^to`)c+b_< z#Il20!-iR5e{B2Ef(=6CKAF67vUPj@eaSr8+HQH-#GZ*Q70pB9x8syTWWLqc``d7} zp#p8QA5y_R_h$Xz?awB?UklNcFiD}{?lP82Hlgnp`}?b3REqDYJkl+gAW#z`pPs0J+E*BgQKU;cCE+ZLdmnf&Ic!p1~*Hg zK?rFCRyHMfg`(nFbp-;Fj20cgo))V!RaG_kpct4oteM0#Ee||C4rFK$L$ec+8LIX< zeyM1bDEVfkPvCRh$X1e%Me;;NfgS6lnv6Gnce#5x9=OI%Wp;O%{U+4=L!IqZt}G9R*YQaX?DgrTPc^hB)%yq5W~toH0+qNDADH`CRvTwe#GiYCOqb^6eMP-<%1 zjEvkdFEF1t%`E*qeX?DYs$0c-66i#m{@!2#>N#yy!fglwuW_$NoPrBfFO*ZJ@Qlej znjW*v`V_TQR33bsKMquPC2J!r=h5Ff8-(w+ctV=Pp?T}es&ZkewYw9Rw^iol~4i{@N4l?!Y2RJew|qQlqES0)|O%GkE6aNi z=d{&xOLfOFf3Ltn1mj}a#(*<#I!q5c&SO2)!c|fqA ze{RRc1B2Xy0UdIIAiTUF2p1oS8w`Wx`~DBY$qwS>;<_wxaeSu)YXboQ>h*sB6moC^ z_kZBliTy+xybHB)gSuFn82w9-!S8T;f5r?1@B#stKNxHvfPV)7@BNCA2mWO&ao`?+ z{09IDLV#KTzfauB-r+mq-}gyzf_V5iVNie4PWG-2AVEQ(i7JRq0_tXI0#%U~1CaVa zY-&zMcFqn)PEb1&&mW^+wucSNCJ!~WH2PbbDo|&8S0@vw^CjJ%2#l8{X;mH&Y=r=x zq*ZxAFu|!@l7mg>vV{}}2nNvjy;jM|-b5AZ0@4MsDM?5HEI~b7Kx{I$M&?kltE>3c zRR)+2j4u^?7XTO#hCQfeWb6!LQ~klZ63_{aO$jz17tnWrMK)18J9|J(x&SUBY)lXs zCPkI+l&(-FFGcuc5&s4FAPCI&XRN`pM0x9W_8TEvNEgUtajkl?Zl`d0Z=AejS{g!LbCicfeeG24m=LFUyLhM8`iXTCVvfXE@KVrLmi0fV~3Obce#l`HR zXjjout{BmZe{lgWZ$frVSUw4Uh0*l9`!r7fjfcg?Q~O)2s6=ezEEhb-Sm2pa?Z2@W zuwDCOLI2n(S6cc1?-XFG{mY$lxjO-E|Lacq70C5p?Gz3kKG;^hLV@*2&x;a5Z)3-o zJh*e-PKK9l`EH#1fy%114nBGU5^0CB07Kygg`6yMhHv{K*~><6Y|J-%FUs99OqH{& ztOOZi#Rg5(5W+^c`XxN{8Tf3svz|G{2bDd1(q{3Jgr;}pHa;gsf|Sk2P2qQuMEQ08 zk1Q#hRHS=S_yqWGU|`{nw`r3L__yw;r0vriO~(CV0D zS?3DfyzS}h(-Vi+$k%wQ{zj>O0iy+`_QQ7k3NMV+YVuVZYSO zettA(0Dx9O0DP&G8er)>023<@$Zewmt>i`|d80jRscY+#7O z0MBC5z-JEFCjh~h9>VaqGY50=vhwmkfSCiZ&4A+t^YE~Oxqvb-bq+q5^Znbon^-_i ztp9QHm(%-U60V?ee?T2`@UlX9_;^9ED=&=v-)goLfLVMgSinEa8@V`HdR)%sCy~oJ zUd{8*{_!^#_uYy8Ts|1xA4{gCXlw;6|4(>ZE(lCQSG(wL80T9s4_75bm`#HdvxIlXbXQMT9_I7f1M_C z{8>oM{S|2NqBjuU`n@*3XKS1@HEqN6ehLMyRbg1*1@`C#vZ8i~(PLzj^ei=<&%7*P^UZAeWvs+B}XC2)Z@7F8LS#P9QN$D*r4r# z_dm)mUq9)^J=Xf#IOHTo~0^m5V`5ncb?T15z z#X~SB$iexCLj)WpHwUcv*AGrGKPjOBqW|4pN|{|Ej$b;>AC3j^Rjl8CemEF*R=_E< z@1zJLtH62#KbKzfUwV@tmhv)Myj%j9utA(Z<1X0z|3l7( zkNcO+>5)zoA&M3N!k0L3e$4mah^wSzuHia3_M`J+Y zEX~ZIuuvE{0Rd?S2#C$t3F-#K;U-2-_IAL<(#gct*31U#0b(-+LQoSESeVIX;c91Y z}q2J1i);jM&{-)*!%BSQ)3$t8`Q?e(!tphh;gB|rbf;dz}4>i)y&2o7y`s*=452z zVhLl<+||0w~*B+PMOB9H34v7WS^rMs}uGOaTKK1Br`2O5gim zG7Q|i>V8@L<<76wm!p2C;o@Xu3bi$I0wiE&3H$(akaM=V3C+DlXUf-`A-0UDWNmnO(5C=B|SP@sJ%hUx>0z_);WN!_% zGd6Mpihx-E7{bKf!Sjk=dnZ#fC?E<;J3#n6oWNlA=0KXp2FMYB*jRzzrcg6r@u23G z&Mp9lfQ)R7OfFa76l(4S1vqlBadp0urHi}0vnwD_OM76|Tr7awe-w>OT!9n?o2@Hw zssvw(-O}C^rZC^BngFR48yh1)U+jMA1aN0-0DFtP#I zyBzAO8b|;E!2z4-cYR_Ly&6~aS7jCbu7+%)e~1K#P+ z2v|vAw_hz8pa`(N%Lct70{xW;(CCL|TVA!ZylQ9pYdgz7+CgDrvb!4G{;HGxRVVvj zJK6te^hak?OE*iv#IV_43CZ=Uzw1?h*I)a){?X6#>ONo$U_$czdFS%X{li@TDPsJQ zNaKVZ1z;I8wx6jL@Kx~mAI%tEh5?tkRv_a1+oS(~I0FdFV8YxU%*}nb=$E+-pm;Tj zOWuCi{6GA#sH(V(3@?`i6z~;*{C;!Ga!@;SU|G0+&0f zC}^u0D9c)lxR?mbC@~9YQmbDa9l<1KQap(tPplSAhW>3!O9IBUBK*MR$d@23S=38 zOatVf;%iuLL5~B>!};5Z=oglMjY+P~h<_v)z*qSVSb_n3sX~`)_D6yNI4S+iK!E>r zeEC04F#IL~Fochl8yJEcNV4z&nFTO6FDnNJkX!*I00H>?R~d%?g$VwQ5y@}+=zk-4 z{%=V$T(0pC4gbG6LjC_>n&EQy{F}u6pVz$q;)KAZ+4wgJ;lEGk{zoPR!2flLZ{Pv! zrQ!eKpV(Qs_&9)vvD{p&fTh0lPwYS&ZeDIy2#^o{2kZR9KY{<*KmF-A^Lqju@=F37 z0`tz_^BRBnC&+gfeVHK#atl`t0QdKQo&f(%0x6J2rei2Z`vULc`NbX;-4D>QF|K#BWHA7VUk$qXc3;X&hD=>r?2qS;5{gPWcEFMYWIA^c8{8*rF^spI4Mi(Gg(|2hvI@L%hA zdHy;EFYKuD+dTN#x&K{J z9qh^W?{$1Uf1$_0`4_!{Z~)5odtVOTzsL{5$pOpd{1_L=0bANYozP&foT*xRL1B9k tcxMa9umZ$juNcVKnc0KBAEtoQld}tu-@M$d5Kagm1dWD9Qc()+{{pLyKKB3s literal 0 HcmV?d00001 diff --git a/tests/test_create_widget.py b/tests/test_create_widget.py index 6728e2e0..9f6ecd47 100644 --- a/tests/test_create_widget.py +++ b/tests/test_create_widget.py @@ -198,6 +198,28 @@ def test_create_text_default(template_stream, pdf_samples, request): assert obj.stream == expected +def test_create_text_align_center(template_stream, pdf_samples, request): + expected_path = os.path.join(pdf_samples, "widget", "create_text_align_center.pdf") + with open(expected_path, "rb+") as f: + obj = PdfWrapper(template_stream).create_widget( + "text", + "foo", + 1, + 100, + 100, + alignment=1, + ) + assert obj.schema["properties"]["foo"]["type"] == "string" + + request.config.results["expected_path"] = expected_path + request.config.results["stream"] = obj.read() + + expected = f.read() + + assert len(obj.stream) == len(expected) + assert obj.stream == expected + + def test_create_text_default_filled(template_stream, pdf_samples, request): expected_path = os.path.join( pdf_samples, "widget", "create_text_default_filled.pdf" From 4ed8f67e268a80a085ed908a3b30167ea9bc8af9 Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Tue, 20 Aug 2024 20:27:49 -0500 Subject: [PATCH 5/8] PPF-707: add another test --- .../widget/create_text_align_right.pdf | Bin 0 -> 43453 bytes tests/test_create_widget.py | 22 ++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 pdf_samples/widget/create_text_align_right.pdf diff --git a/pdf_samples/widget/create_text_align_right.pdf b/pdf_samples/widget/create_text_align_right.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c2acc499df90c76d80b5b05238c2d7b3a2c382cc GIT binary patch literal 43453 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 z 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 Date: Tue, 20 Aug 2024 20:31:43 -0500 Subject: [PATCH 6/8] PPF-707: update docs --- docs/prepare.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/prepare.md b/docs/prepare.md index 03154ec0..0ecd1a7d 100644 --- a/docs/prepare.md +++ b/docs/prepare.md @@ -40,7 +40,8 @@ new_form = PdfWrapper("dummy.pdf").create_widget( font_color=(1, 0, 0), # optional bg_color=(0, 0, 1), # optional border_color=(1, 0, 0), # optional - border_width=5 # optional + border_width=5, # optional + alignment=0 # optional, 0=left, 1=center, 2=right ) with open("output.pdf", "wb+") as output: From 7c5381f26c99e21e9a64f946a5511e137f76814e Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Tue, 20 Aug 2024 20:36:26 -0500 Subject: [PATCH 7/8] PPF-707: renaming this to lower case --- PyPDFForm/widgets/base.py | 4 ++-- PyPDFForm/wrapper.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/PyPDFForm/widgets/base.py b/PyPDFForm/widgets/base.py index f3101bac..d772fb80 100644 --- a/PyPDFForm/widgets/base.py +++ b/PyPDFForm/widgets/base.py @@ -41,7 +41,7 @@ def __init__( "x": x, "y": y, } - self.NON_ACRO_FORM_PARAMS = [] + self.non_acro_form_params = [] for each in self.USER_PARAMS: user_input, param = each @@ -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((each, kwargs.get(each))) def watermarks(self, stream: bytes) -> List[bytes]: """Returns a list of watermarks after creating the widget.""" diff --git a/PyPDFForm/wrapper.py b/PyPDFForm/wrapper.py index 605e866e..df9c732a 100644 --- a/PyPDFForm/wrapper.py +++ b/PyPDFForm/wrapper.py @@ -220,10 +220,10 @@ def create_widget( watermarks = obj.watermarks(self.read()) self.stream = merge_watermarks_with_pdf(self.read(), watermarks) - if obj.NON_ACRO_FORM_PARAMS: + if obj.non_acro_form_params: self.stream = handle_non_acro_form_params(self.stream, name, - obj.NON_ACRO_FORM_PARAMS) + obj.non_acro_form_params) new_widgets = build_widgets(self.read()) for k, v in self.widgets.items(): From 70b3046dc5da35324f3e4d0f0b443c2126e86350 Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Tue, 20 Aug 2024 20:55:32 -0500 Subject: [PATCH 8/8] PPF-707: fix tests for dependencies --- .../scenario/issues/PPF-627-expected-0.pdf | Bin 334976 -> 337532 bytes .../scenario/issues/PPF-627-expected-1.pdf | Bin 334974 -> 337530 bytes .../scenario/issues/PPF-627-expected-2.pdf | Bin 334976 -> 337532 bytes .../scenario/issues/PPF-627-expected-3.pdf | Bin 334976 -> 337532 bytes .../simple/scenario/issues/437_expected.pdf | Bin 289632 -> 291730 bytes .../scenario/issues/PPF-627-expected-0.pdf | Bin 429476 -> 432032 bytes .../scenario/issues/PPF-627-expected-1.pdf | Bin 429388 -> 431944 bytes .../scenario/issues/PPF-627-expected-2.pdf | Bin 429416 -> 431972 bytes .../scenario/issues/PPF-627-expected-3.pdf | Bin 429366 -> 431922 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pdf_samples/scenario/issues/PPF-627-expected-0.pdf b/pdf_samples/scenario/issues/PPF-627-expected-0.pdf index 2fc5de99d84204bac1cbfd3459c3e202590f7478..06903d729b7c7ce3280e2999f6d46a5ee4bfd1e9 100644 GIT binary patch delta 5314 zcmeHLyKWOv5EUEK7=(nB3b}BKNCXP*%zgJsL=X{B(7DOOK`sJFq@Y0BNC@#LN#O?Z z1As(lXz~GwD!+gz;R_Hjcbv`Ib0t8Q(geF0@1C7Ik2B}qwY>Xr_Q&Vh_n%IcKYw+U zQV)~aPUe0x9c5km-b|)F#WauV2oR_|^0wtC&pX8Yohg2m)q zb;y}`IbX5i;Pn-k#Te(}_PASK##jAY&x+RG)#B1bEOTt;ifQ01b*r3!O+^S-P@B;S zltcEJ+q&**A?N6(_IcjxLn4NwmX(!i@;- z++5?o{~5<89KBa}UrYse>?ho-w~grumtLut-!;znN&pwyv|*KM-)%SfA|e=CxEXI+5!+6%}ES`f1<3$6g(pu3S&__~Dko7V#AlNLRwMr%impD#!9gUcVZVj_V z{a14*(3vct*I9vxpd_t`K4S(kWFtX6UQFU2P-`tKL>;v37!8;#v9VSN6VSvU1PADx z6gp7NrOgt1%aZIelKZHON5CRFosxe3Qi#kgjb(D!CgeXT6X~u$S+KA4VA_+q9TFfqC zQOupNs4~B(<+ekJF7vZ0RIHYj`q2Vy_;D7{5)Gm|^x&mt2qOx`S`QIr#{uYs8}p-o zkd*g9I1(1*(Mnj9LeeUb;>H4!DxHx#hiGwGJWZN0ebqX>bjDKo&H4GI8_Uh#)_>z6 delta 2518 zcmb_eziU)M5GI!=LPP`!*qjoJNDd9m%+Bo279ti&CpLmjn*4+milv3{BqD;^S-gM3 zB8?p4e<0SPWf1HYOA%)igL$)M-W9iZAG~a9nt7ediaQAr6Kw9JjY)U)^X&L6V+sP&z5Ow|{O0!T{_FPEMp-uqVIAWRZLfC+KSz^id(DfzW@ftAj4nMNoaMN?@M<&w z&E@I6*P}n1gY#QGoq|(S@WZzuS;f-Zad+{{5Y1hl-v2s#aA$CSSGxVBX6ba&74t1m ze@&VvF9+v0?!Lck265f>X>)$Jg~YS~<+Jc`Vearpw)+b;rdVN$(PPX}D@<|~k8J?h zzP6W`6?1hsL-3feB#%Xm4nu&PU2zB~dV+Mx4+iG!5+e|MG6*)LTy=&?JQ46Ho*-25 zBt_|yMuZlFtIojarM6j#>=WDkq$;35@`-I|CiaP=oi3Qwf82M(NLU4oxgtmy)yqmm zl`=$JwS=fors$7E89YM@48CFtiK@hm!5I_DTH*|c6v-Riu-H|tq-vjnSAkGNwU4vJe+9S4 z?kBMhI=RfNc6s`hPy%4TFWCt3WD?jt@n>_${eoKv_U7cJHY}lYx?vjnhs)XQT^%r} em)c&Kz?;=Dn4l0tnm?{}XB0tRjD(j?wR4v7k;un@KoG1yuh_%|eA zcm54xl`5qo*acEsMCZ+Avv>1A@gPmOE9Q2;eQ&;*Z|2P&clLSi*VnmEUuMd)-v1IhSg>IXXAK2C<**z|3ZVVF0uIe%7;Y~*Fk zTWw?_hPRRn=BS=A^-hABpKoi!7zJ=1Nxg1+xq0vY*2}$(=bhe8ue;f4FAXJFNsFrt znTfaa6&rS5UvXHBF&C%D+445N>Yuh7w?3>F%M+>0zF8}lfm!NQnSf0t2uDzx(F&A9 z^;z3G?rI}*bW{3V@9m)w!_x6hoiyjhwczO3A#2M^*vGI^r1Hb9C*AeE?(U=YmHxN= zV*br>@$R^o85|eI&9@UNGVMF6QC+{k_Fb$0bbs1-18TfhXWDF+JmePouTP4liDbS) zQ*Lm2QXKr4NQLQS`{!iicTIYuw)*o&v(r~9O}2%>;nD2(jcLbS&Um}%xV4ECzCx2N z{eJ5Ve%@}l_Y+Am9dG|L-aZ~QrsIvr+nvM4ja~`hLYo9ss{O3pf=(U^cH2GMYUjy^(uin%ly zu{U0p1bxhu(Mpdt64zbRe>hTp!kkRRIoiy@l(qb{HEX0mjUs7YSQAI_@ z!C4$@R?;8nFrhp;Az12+lvEvHprf4;lQ5DvQlra~M9fM|2hn-Te~bhncr9v|uqZMi zEUIi>)biLNM3=3zDpabLRrjL>45ChGNd}P}dhoJm2n(_o2qPUtase!kbI_kh%6l&s u5*FlWB`nHD(kdt~6x861JULohm-(ZEt+0Q$b#3*!rSO}Ji>nXTntuQjfac%; delta 2512 zcmb_eJ!_Of5GI#bgot1fyA)|6ULY_tJ3F&mh&E>@0l_ZKedHj8Vre0~5D_8RrMN#~ zVG~ZUw-A4TRwDWblF}kL?;XK=XUn`-+}=IR&c`#)&hFoDo0p$9KYm?%`0Dw~1Bfy? znjC;qPH10YY*6HoQnONKY1Yg`YF3;oA}WlhI_jV9uWj9A)DR)g&QE$?V}o$X&ai)_KWR}#gB}Nsl+rFSVHy~vq*u(RQO|s#$VkE%r-QN z%^A>Rkz@3jpg0Txa)!1Y0>-qGbQ2#8%-ID-AR9)0vq7#p1dg)eaOp216nmpeaQ+Z# z46Zsv5KpyDNn{_`CMOjRBd8B-^HN=l5e0FMmG zwUcT1N1_ZqLkbMOVhTz{U`BGnL^63e!66B8u~(#~BCtaAEg_8sGj_wR3Te^z095EG zKnT7Ni2_Tp*8l0Zi!J!96HD@{POR*EoH+RtfhkfU%oIghF^qpqO5!O@D%>(`>{2PN zlw^G7t{we^YUio#(6HzSl3_xHU9$V%?@ghw<7{t`rCoiceu~yX zcaBY~))VJY&CJ`WjS!!V0{Q7knnP|ETtl!olc(A+MW#hGnnnfWeyQ>_Px9 ZR(n6$OquQ8yD_*GDDuY6&S3xX#y<#qHTD1i diff --git a/pdf_samples/scenario/issues/PPF-627-expected-2.pdf b/pdf_samples/scenario/issues/PPF-627-expected-2.pdf index 24fa46c7a326d363958bf581720d126198c5de9c..fd11d2720b03b5bf7cad7138da8504b2743cf18d 100644 GIT binary patch delta 5314 zcmeHLyKWOv5EUEK7=(nB3b}BKNCXP*%zgJsL=X{B(7DOOK`sJFq@Y0BNC@#LN#O?Z z1As(lXz~GwD!+gz;R_Hjcbv`Ib0t8Q(geF0@1C7Ik2B}qwY>Xr_Q&Vh_n%IcKYw+U zQV)~aPUe0x9c5km-b|)F#WauV2oR_|^0wtC&pX8Yohg2m)q zb;y}`IbX5i;Pn-k#Te(}_PASK##jAY&x+RG)#B1bEOTt;ifQ01b*r3!O+^S-P@B;S zltcEJ+q&**A?N6(_IcjxLn4NwmX(!i@;- z++5?o{~5<89KBa}UrYse>?ho-w~grumtLut-!;znN&pwyv|*KM-)%SfA|e=CxEXI+5!+6%}ES`f1<3$6g(pu3S&__~Dko7V#AlNLRwMr%impD#!9gUcVZVj_V z{a14*(3vct*I9vxpd_t`K4S(kWFtX6UQFU2P-`tKL>;v37!8;#v9VSN6VSvU1PADx z6gp7NrOgt1%aZIelKZHON5CRFosxe3Qi#kgjb(D!CgeXT6X~u$S+KA4VA_+q9TFfqC zQOupNs4~B(<+ekJF7vZ0RIHYj`q2Vy_;D7{5)Gm|^x&mt2qOx`S`QIr#{uYs8}p-o zkd*g9I1(1*(Mnj9LeeUb;>H4!DxHx#hiGwGJWZN0ebqX>bjDKo&H4GI8_Uh#)_>z6 delta 2518 zcmb_eziU)M5GI!=LPP`!*qjoJNDd9m%+Bo279ti&CpLmjn*4+milv3{BqD;^S-gM3 zB8?p4e<0SPWf1HYOA%)igL$)M-W9iZAG~a9nt7ediaQAr6Kw9JjY)U)^X&L6V+sP&z5Ow|{O0!T{_FPEMp-uqVIAWRZLfC+KSz^id(DfzW@ftAj4nMNoaMN?@M<&w z&E@I6*P}n1gY#QGoq|(S@WZzuS;f-Zad+{{5Y1hl-v2s#aA$CSSGxVBX6ba&74t1m ze@&VvF9+v0?!Lck265f>X>)$Jg~YS~<+Jc`Vearpw)+b;rdVN$(PPX}D@<|~k8J?h zzP6W`6?1hsL-3feB#%Xm4nu&PU2zB~dV+Mx4+iG!5+e|MG6*)LTy=&?JQ46Ho*-25 zBt_|yMuZlFtIojarM6j#>=WDkq$;35@`-I|CiaP=oi3Qwf82M(NLU4oxgtmy)yqmm zl`=$JwS=fors$7E89YM@48CFtiK@hm!5I_DTH*|c6v-Riu-H|tq-vjnSAkGNwU4vJe+9S4 z?kBMhI=RfNc6s`hPy%4TFWCt3WD?jt@n>_${eoKv_U7cJHY}lYx?vjnhs)XQT^%r} em)c&Kz?;=DnXr_Q&Vh_n%IcKYw+U zQV)~aPUe0x9c5km-b|)F#WauV2oR_|^0wtC&pX8Yohg2m)q zb;y}`IbX5i;Pn-k#Te(}_PASK##jAY&x+RG)#B1bEOTt;ifQ01b*r3!O+^S-P@B;S zltcEJ+q&**A?N6(_IcjxLn4NwmX(!i@;- z++5?o{~5<89KBa}UrYse>?ho-w~grumtLut-!;znN&pwyv|*KM-)%SfA|e=CxEXI+5!+6%}ES`f1<3$6g(pu3S&__~Dko7V#AlNLRwMr%impD#!9gUcVZVj_V z{a14*(3vct*I9vxpd_t`K4S(kWFtX6UQFU2P-`tKL>;v37!8;#v9VSN6VSvU1PADx z6gp7NrOgt1%aZIelKZHON5CRFosxe3Qi#kgjb(D!CgeXT6X~u$S+KA4VA_+q9TFfqC zQOupNs4~B(<+ekJF7vZ0RIHYj`q2Vy_;D7{5)Gm|^x&mt2qOx`S`QIr#{uYs8}p-o zkd*g9I1(1*(Mnj9LeeUb;>H4!DxHx#hiGwGJWZN0ebqX>bjDKo&H4GI8_Uh#)_>z6 delta 2518 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 KtsY)FGWtLCwJFH} diff --git a/pdf_samples/simple/scenario/issues/PPF-627-expected-0.pdf b/pdf_samples/simple/scenario/issues/PPF-627-expected-0.pdf index b535b13488836f31ab3e34e4200d3a956b5a4c94..d94982766c4b08c963e8f2216800e03c309caad5 100644 GIT binary patch delta 20981 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 delta 18161 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 J^DjSq`hUI?+1&sD diff --git a/pdf_samples/simple/scenario/issues/PPF-627-expected-1.pdf b/pdf_samples/simple/scenario/issues/PPF-627-expected-1.pdf index 1c8188f3fa7a5d97019541b05032170968cdf215..e326a108b3ec1767a61f77815bb7d50a4723a744 100644 GIT binary patch delta 20975 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 diff --git a/pdf_samples/simple/scenario/issues/PPF-627-expected-2.pdf b/pdf_samples/simple/scenario/issues/PPF-627-expected-2.pdf index adf1b2cf45656df2fe3f781c9cb221b7f6babd43..954a4da5905b7832ef7d35db6d92eb58dc9a0de3 100644 GIT binary patch delta 20950 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 delta 18150 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 diff --git a/pdf_samples/simple/scenario/issues/PPF-627-expected-3.pdf b/pdf_samples/simple/scenario/issues/PPF-627-expected-3.pdf index 95d735273df519b063b0d52747d95773bb06475b..7720dcd8553abfe31f8b447c4ea9da665967d695 100644 GIT binary patch delta 20759 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 D;L^%P