From 9694abadb9bce50509f42e67950dc386d06bfb26 Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Wed, 26 Jun 2024 07:48:51 -0500 Subject: [PATCH 1/3] PPF-677: easy changes --- PyPDFForm/wrapper.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/PyPDFForm/wrapper.py b/PyPDFForm/wrapper.py index 5cace04b..23cb977b 100644 --- a/PyPDFForm/wrapper.py +++ b/PyPDFForm/wrapper.py @@ -8,7 +8,7 @@ from .adapter import fp_or_f_obj_or_stream_to_stream from .constants import (DEFAULT_FONT, DEFAULT_FONT_COLOR, DEFAULT_FONT_SIZE, - VERSION_IDENTIFIER_PREFIX, VERSION_IDENTIFIERS) + VERSION_IDENTIFIER_PREFIX, VERSION_IDENTIFIERS, NEW_LINE_SYMBOL) from .coordinate import generate_coordinate_grid from .filler import fill, simple_fill from .font import register_font @@ -244,6 +244,9 @@ def draw_text( new_widget.font_size = kwargs.get("font_size", DEFAULT_FONT_SIZE) new_widget.font_color = kwargs.get("font_color", DEFAULT_FONT_COLOR) + if NEW_LINE_SYMBOL in text: + new_widget.text_lines = text.split(NEW_LINE_SYMBOL) + watermarks = create_watermarks_and_draw( self.stream, page_number, From b319e8c0d4822a7f0a53ca14c685e9300ac43ad7 Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Wed, 26 Jun 2024 07:51:13 -0500 Subject: [PATCH 2/3] PPF-677: add test --- ...le_pdf_with_drawn_text_new_line_symbol.pdf | Bin 0 -> 41035 bytes tests/test_functional.py | 19 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 pdf_samples/sample_pdf_with_drawn_text_new_line_symbol.pdf diff --git a/pdf_samples/sample_pdf_with_drawn_text_new_line_symbol.pdf b/pdf_samples/sample_pdf_with_drawn_text_new_line_symbol.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b6efeef3d877b2d0a4b99ad715bafcfdc3245cf5 GIT binary patch literal 41035 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 literal 0 HcmV?d00001 diff --git a/tests/test_functional.py b/tests/test_functional.py index 7ff40b47..c949ff42 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -222,6 +222,25 @@ def test_draw_text_on_one_page(template_stream, pdf_samples, request): assert obj.stream == expected +def test_draw_text_new_line_symbol(template_stream, pdf_samples, request): + expected_path = os.path.join(pdf_samples, "sample_pdf_with_drawn_text_new_line_symbol.pdf") + with open(expected_path, "rb+") as f: + obj = PdfWrapper(template_stream).draw_text( + "test\ntest\ntest", + 1, + 300, + 225, + ) + + 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_draw_image_on_one_page(template_stream, image_samples, pdf_samples, request): expected_path = os.path.join(pdf_samples, "sample_pdf_with_image.pdf") with open(expected_path, "rb+") as f: From 184f657b0c5e394184639654d2989955f0cc0980 Mon Sep 17 00:00:00 2001 From: chinapandaman Date: Wed, 26 Jun 2024 07:55:33 -0500 Subject: [PATCH 3/3] PPF-677: update dependencies --- pdf_samples/widget/create_dropdown.pdf | Bin 43559 -> 43561 bytes pdf_samples/widget/create_text_complex.pdf | Bin 43494 -> 43462 bytes pdf_samples/widget/create_text_default.pdf | Bin 43507 -> 43476 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pdf_samples/widget/create_dropdown.pdf b/pdf_samples/widget/create_dropdown.pdf index 334a3d3731c6f66ade8e142b31ca9ab7d7ee86e4..b21367a594fe9d1356864ffff63964bed33ef588 100644 GIT binary patch delta 770 zcmZ2}g=ys#rVZlU^~PLwc3j0JMX8CoTorRndmXtBIqd#ffcf5D!=Lb>*E2bO#dBHvJ>hp7gdl&jv>aJPwck9>ta#uL-+Z03;*9IoE z<~iJtXV)7k7=VC6o&pz`VPI@vX@D+fVq$2HA!cT1f+1#ZhDFR0Q?I3gDMW8Q!eR>x z6GL57#Mr{f0#mQ433@0PTUZ!kIL6Y@+`JyeH9*H$ni!+|*x1qn7(uAfWMW`shHkNm zftdliqk&==A!A}-VF=S33yXIXLj!YkSDP3bV?+rsB^aQ`r-`AZ8M>oQjEs#9Cf``; O&SAu*s_N?R#svUirMjj7 delta 768 zcmZ2^g=zT}rVZlU^@dz_c3j0JMX8CoTorRndmXtBIqvnBm z+0zhK@bH1h%H!sOEi8wg?-ySfaP!>+i%B0;a?EuC+>H89+?l{PbK|O+$7Nd0t$uHq z&-Jm%N=n(s{#VoT--j$0nU^eG*V}h1{`LPok|#xXFTG~_w((%WF#}Py8pcB_^C4VwRYCEe(tzdg~DuTUZ!d zq8n&oVQGdTW@!r5jL>UoXl#P6&eGTd-8^G+Qwu{Bb@c`Y#^&b6=mr{F7?`7njIo8G z0lFo|7Dg7BdQDBxL&4a>!T`fDmWJl0^(d|ZI>yq(7~RLlmgbh|QDS0XWQK0BiGdj~ zB2l9gD25R-CI%LUFuk#`csDULFh_T_iJ>t@l$aQr8=%LhiJ_$#x}!~ujEyWN-&*O; NVZf!T>gw;t1puf+y%qof diff --git a/pdf_samples/widget/create_text_complex.pdf b/pdf_samples/widget/create_text_complex.pdf index 9d70db942375ac04d333fbfb008bd96ce3f4ff8d..39bb2be84a55a4c7ca9003f50c9ab31618bfbf69 100644 GIT binary patch delta 765 zcmZuuu}T9$5KRJttSKzC_CNyxo7vsD+gXdCLM%k^l-LPk@DLOeNi4KFw6_wq&_>Y0 zU?JM5l?n#I5Rf#M3PB71z{<-h81|fMc+8vk=FNK}QEep7pP5gZWiqV1R`TXo*!rP# z!G&CU{6oaVMAEuS?+$K1x$%LXX5Fi}b?0>P@+$bp16{j>nd*-cjZi7JfB?u9#n994)Yl`ODR=+JR4`EohZh zuvplD(3+bVN=^~X=5_>goPRJKmf+WQwW;FQ9j7DlH&5Na0V7>%_JEky# y4W{V;izI`f_z!pP@9zj&nXZwG$V-qrV4B7t1k*GMA^Fb!X_g^LmP%zO$JjSnBCwhO delta 773 zcmX?hnd#YOrVSUl>J5zyxa{n>ic5-86LYyL=BV~=B69M%^>l4H9pl5%iwz5QA1pDMc2jH(htI`QhbQ8pk~3GFm(;bh_|^aR zhG0HRWY1U4#bt-QPc4zXuxr`(=Z7-Bs7!nDfAgh1fo6{bF37)-75~DX+%Eg`x!jA* z=G;$b*IODHDj0x(LY@K_m|Q&0R-skEDg*oF~p3G(9JV8H#IavQU|o(z`)qt%naQ?V+#WVQzV68 zbruH3=$05;7#U*fH8DpI1!D_y6AZ^#8rB=42aU0%u{pYrjV;ZM(WAt~z|a!iViN;X zV{}IY#V|s~#K7DHqBkB9?MhNqul1A<_hl4o7EDdv>*4--Rq^7;xNn&X zdJ?mmY}T&KI2zexDrK1H!)!NcvFLQJ)Vvg^RX|pLQWn?d3hqm@>kUj53_w63Pk{@} zFfca26f-e4HbPftVrpcGA!cTdDQ0ensn^2D0Iatj$zlt0Q!{h}Ei4R;F~!UwnvwKc z8kicQtFtsVKsV3W+{DrXSzSHQ&&K9vrsxJ5n_F6#BP#@{voJ71x5OCe5e&T+CZ_12 zU~FM-gy9%V1Iv2!pfR>IHbwWbv8A~odNi3B7+RoPYyu1fbVmclFha(}z}y(BHx3@} xCI*%k=&m*~G{T4y6GJm2bVr*QT3Dbv+Qi7n#B}nKm9AVSmgZcls;>TSTmWTmw6g#J delta 778 zcmca|nd$RorVY2a>J5#|xa{n>ic5-86LYyL=J@t*rWYF~M=etDZGbYA|XJ0Vd61u2hw~|qiiIM3Yu^53Cds%mm`yC6@ww;)_ z^4x57uiqPHS3hE0T6NVRbDdv=?2LuVR?e2X-=|;BtdIG>X2ra@8?|{e%z4_F+jbro z*He-=+U(B#WOlu=nSucbDC8+{ff)wI2AEP$?{3^2sZ4Y7!sVCuCnH3aLe zN3z($+`=5)Knn{K6AUp+1BhlMy_N