mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-10-25 11:17:28 +02:00 
			
		
		
		
	version bump, multi file fix and disable survey (#1550)
* version bump, multi file fix and disable survey * example test stuff * logs * Update docker-compose-latest.yml --------- Co-authored-by: a <a>
This commit is contained in:
		
							parent
							
								
									5751b1ac2d
								
							
						
					
					
						commit
						929f0bbbe5
					
				| @ -16,7 +16,7 @@ ext { | ||||
| } | ||||
| 
 | ||||
| group = "stirling.software" | ||||
| version = "0.26.1" | ||||
| version = "0.26.2" | ||||
| 
 | ||||
| // 17 is lowest but we support and recommend 21 | ||||
| sourceCompatibility = "17" | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| apiVersion: v2 | ||||
| appVersion: 0.26.1 | ||||
| appVersion: 0.26.2 | ||||
| description: locally hosted web application that allows you to perform various operations | ||||
|   on PDF files | ||||
| home: https://github.com/Stirling-Tools/Stirling-PDF | ||||
|  | ||||
							
								
								
									
										106
									
								
								cucumber/exampleFiles/ghost1.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								cucumber/exampleFiles/ghost1.pdf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,106 @@ | ||||
| %PDF-1.3 | ||||
| %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com | ||||
| 1 0 obj | ||||
| << | ||||
| /F1 2 0 R | ||||
| >> | ||||
| endobj | ||||
| 2 0 obj | ||||
| << | ||||
| /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font | ||||
| >> | ||||
| endobj | ||||
| 3 0 obj | ||||
| << | ||||
| /Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 4 0 obj | ||||
| << | ||||
| /Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 5 0 obj | ||||
| << | ||||
| /Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 6 0 obj | ||||
| << | ||||
| /PageMode /UseNone /Pages 8 0 R /Type /Catalog | ||||
| >> | ||||
| endobj | ||||
| 7 0 obj | ||||
| << | ||||
| /Author (anonymous) /CreationDate (D:20240718233034+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240718233034+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)  | ||||
|   /Subject (unspecified) /Title (untitled) /Trapped /False | ||||
| >> | ||||
| endobj | ||||
| 8 0 obj | ||||
| << | ||||
| /Count 3 /Kids [ 3 0 R 4 0 R 5 0 R ] /Type /Pages | ||||
| >> | ||||
| endobj | ||||
| 9 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 210 | ||||
| >> | ||||
| stream | ||||
| Gap@Gb79+X'F"5[`EfJOD4:mD<%*=m+N>oDG,>NK`<U'B^0WYY,dWl^i_UcRk`<"L=<NPC$BtQ<5l$3<Y!?BuoCSYQ6GSt25lpqr0IrP?S[b)9%M"e'HHFqcRO'9eRaR0'DYi*Y.:nEMFAoTM;rPL%EF]`CfoELVl_Q,"LS:%iI;Nc[&bG.*65O]ecfK1'*<>5P_s[usI/ph*0pV~>endstream | ||||
| endobj | ||||
| 10 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@Gb79+X'F"5Y`EfJOV2A9=!fB]F'tK1LS`,]G+MiTenb&V2-^hqa(5IE#Nr59/!"Qm*5_(BdF!0&h!Yhk/A+\iS'%6tuO$O)9LaZS+flr([1p2&#RS1p/gT[B;rDj-=&=iqUlj(P^/5U@eCFqn4:<lU`l`.HXqG-',hJH.DI.(6L\luSAW`Q'oje[qgVLVIXg%PXe+,<$7('~>endstream | ||||
| endobj | ||||
| 11 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@GbmK%f(e+0_`ODoa2.):e/i+N3r(.o*Qf\gSNb(bt4FIubi@GIOE=p8Ir3;CbQ@KuG^cdJhODZKQ*upt+*rdZ%!mFmN$*.P)K;`s#]G=8AO3s3DGB.RCOn?[F]bEIg,a>25?B%dh\Z/C6opFE'el@I,P\u\V\]:*JYrrsNJ&d,11VL;$h!43eGu&1X6$+5-h\Vr6!+>4Je,~>endstream | ||||
| endobj | ||||
| xref | ||||
| 0 12 | ||||
| 0000000000 65535 f  | ||||
| 0000000073 00000 n  | ||||
| 0000000104 00000 n  | ||||
| 0000000211 00000 n  | ||||
| 0000000404 00000 n  | ||||
| 0000000598 00000 n  | ||||
| 0000000792 00000 n  | ||||
| 0000000860 00000 n  | ||||
| 0000001156 00000 n  | ||||
| 0000001227 00000 n  | ||||
| 0000001527 00000 n  | ||||
| 0000001827 00000 n  | ||||
| trailer | ||||
| << | ||||
| /ID  | ||||
| [<0d5cf047e754e05f8d574f067785875c><0d5cf047e754e05f8d574f067785875c>] | ||||
| % ReportLab generated PDF document -- digest (http://www.reportlab.com) | ||||
| 
 | ||||
| /Info 7 0 R | ||||
| /Root 6 0 R | ||||
| /Size 12 | ||||
| >> | ||||
| startxref | ||||
| 2127 | ||||
| %%EOF | ||||
							
								
								
									
										106
									
								
								cucumber/exampleFiles/ghost2.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								cucumber/exampleFiles/ghost2.pdf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,106 @@ | ||||
| %PDF-1.3 | ||||
| %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com | ||||
| 1 0 obj | ||||
| << | ||||
| /F1 2 0 R | ||||
| >> | ||||
| endobj | ||||
| 2 0 obj | ||||
| << | ||||
| /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font | ||||
| >> | ||||
| endobj | ||||
| 3 0 obj | ||||
| << | ||||
| /Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 4 0 obj | ||||
| << | ||||
| /Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 5 0 obj | ||||
| << | ||||
| /Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 6 0 obj | ||||
| << | ||||
| /PageMode /UseNone /Pages 8 0 R /Type /Catalog | ||||
| >> | ||||
| endobj | ||||
| 7 0 obj | ||||
| << | ||||
| /Author (anonymous) /CreationDate (D:20240718233034+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240718233034+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)  | ||||
|   /Subject (unspecified) /Title (untitled) /Trapped /False | ||||
| >> | ||||
| endobj | ||||
| 8 0 obj | ||||
| << | ||||
| /Count 3 /Kids [ 3 0 R 4 0 R 5 0 R ] /Type /Pages | ||||
| >> | ||||
| endobj | ||||
| 9 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 207 | ||||
| >> | ||||
| stream | ||||
| Gap@G:CDb.*/<p2MVk["e@)7*Z0@"b%+@f/9pA%_U<oOkVp?PnGRb81iPg?0i?(]%^_CSf##%;<!7Ne/-%RR^p@t7hKYZ9eJVHV]fjjHIB:6DrW+2\p16@*`r^CpQZZH'2Pjqd<.&hM2UO%$Wi$te%4QmS;<E"QS\!deQG_XtuEK>b(UbS>%`/0S`k\\5'TNY0mmgH?`8]i_0~>endstream | ||||
| endobj | ||||
| 10 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 207 | ||||
| >> | ||||
| stream | ||||
| Gap@G]afWJ'Lm;=if<;s>V*7BTJ]oQ@P!(q5S+WG1%>L@?8Ue;c>[fY&&IOd5@t@TY@+q.5T<Z'81"J("KhsBa+&u4"n'#6)AjfImh)%$0tVC:aGk",=aJJH#/4]i.WJr9c"cibYm:M-44<%FFlG0Cl\Z'nmo7C"TR+7dk3T#iD(9Pq'\;rQku%o>A_`50SO&7M04=8M'O<Am~>endstream | ||||
| endobj | ||||
| 11 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@GYmu@>'Ld5[if35r/JNaJ.A.7fP9RpSN*8k^-sEER0,enq1Rsuo@R/uCO-^&Y`F'9d^a?9)?ns+F&dXm[HMgPn6Ep+%TRk5Nh+!(+[H#H:U^.^(YL,PKS'%j/:3O\hJVEK-UUekJTd[A$N^((K^#0Du`i@,/^f5KiUISGr")3/+f9NF8NO1+iUgm^b"X\cE^+[:s!0]Gu6i~>endstream | ||||
| endobj | ||||
| xref | ||||
| 0 12 | ||||
| 0000000000 65535 f  | ||||
| 0000000073 00000 n  | ||||
| 0000000104 00000 n  | ||||
| 0000000211 00000 n  | ||||
| 0000000404 00000 n  | ||||
| 0000000598 00000 n  | ||||
| 0000000792 00000 n  | ||||
| 0000000860 00000 n  | ||||
| 0000001156 00000 n  | ||||
| 0000001227 00000 n  | ||||
| 0000001524 00000 n  | ||||
| 0000001822 00000 n  | ||||
| trailer | ||||
| << | ||||
| /ID  | ||||
| [<407fc55425168745e56176202aad30c9><407fc55425168745e56176202aad30c9>] | ||||
| % ReportLab generated PDF document -- digest (http://www.reportlab.com) | ||||
| 
 | ||||
| /Info 7 0 R | ||||
| /Root 6 0 R | ||||
| /Size 12 | ||||
| >> | ||||
| startxref | ||||
| 2122 | ||||
| %%EOF | ||||
							
								
								
									
										106
									
								
								cucumber/exampleFiles/ghost3.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								cucumber/exampleFiles/ghost3.pdf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,106 @@ | ||||
| %PDF-1.3 | ||||
| %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com | ||||
| 1 0 obj | ||||
| << | ||||
| /F1 2 0 R | ||||
| >> | ||||
| endobj | ||||
| 2 0 obj | ||||
| << | ||||
| /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font | ||||
| >> | ||||
| endobj | ||||
| 3 0 obj | ||||
| << | ||||
| /Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 4 0 obj | ||||
| << | ||||
| /Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 5 0 obj | ||||
| << | ||||
| /Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 6 0 obj | ||||
| << | ||||
| /PageMode /UseNone /Pages 8 0 R /Type /Catalog | ||||
| >> | ||||
| endobj | ||||
| 7 0 obj | ||||
| << | ||||
| /Author (anonymous) /CreationDate (D:20240718233034+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240718233034+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)  | ||||
|   /Subject (unspecified) /Title (untitled) /Trapped /False | ||||
| >> | ||||
| endobj | ||||
| 8 0 obj | ||||
| << | ||||
| /Count 3 /Kids [ 3 0 R 4 0 R 5 0 R ] /Type /Pages | ||||
| >> | ||||
| endobj | ||||
| 9 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@G]+0EH(e/_@iZH]:>:>hu1e>07BJg5<'#:.C1n)e#(QJ6R1Rsuo_gpn.+0-H5$/#"iYR[B.9\'>7!aDAC*rf/t&6O#aH<?-7IT'\?X(&TcABG=ON*Nq`4k=o&p@3,0*31r<)TAP2Pk94p0\"R-_sY1$AYo[8B\?4R>feLAB\mpjZhp"`@J3;"Fm97#9+W,"eb95\+#p\^HN~>endstream | ||||
| endobj | ||||
| 10 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@G]+0EX'Eriuig+>QHNeD'#n%Sq#n%BW`C'uDUOYK)HdS4E9JMsp+HUmDj&H-t*4?UamXX0peVspk"i_@ba+&u"J>UYDKV_^G,7V==aTZZ<YO7:sNSQ[6"Ja-29NtYjd#=`J@D'h+[QW=:EEb?A<k!f+\`g^?,Vgp7_)91[lR\f.Tkf7VIPLVYM&deF!aYt9Ip^"N",3F'*W~>endstream | ||||
| endobj | ||||
| 11 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@G]+0EH(e/_@iZH]:>J`g!jPCLm;?AgU"fdk"PQZD\d?lRI_oWc[$tp^]O\:3fK8kWeX2&Jcg0+RoJ]j;2j*upu!b4.o&f)b$I@7CfIYjP^#\VjhC=QhQ]^lV-@<0Tam!0.+Dn@("AK%N,Uc7hb+6VoQ$q2q[7]BB92RoY/.j2N028i1jNf'@<1+Fqf$1&"8omHk`#DHP>OT~>endstream | ||||
| endobj | ||||
| xref | ||||
| 0 12 | ||||
| 0000000000 65535 f  | ||||
| 0000000073 00000 n  | ||||
| 0000000104 00000 n  | ||||
| 0000000211 00000 n  | ||||
| 0000000404 00000 n  | ||||
| 0000000598 00000 n  | ||||
| 0000000792 00000 n  | ||||
| 0000000860 00000 n  | ||||
| 0000001156 00000 n  | ||||
| 0000001227 00000 n  | ||||
| 0000001526 00000 n  | ||||
| 0000001826 00000 n  | ||||
| trailer | ||||
| << | ||||
| /ID  | ||||
| [<80da26147a484f2b7573da8151a93d2e><80da26147a484f2b7573da8151a93d2e>] | ||||
| % ReportLab generated PDF document -- digest (http://www.reportlab.com) | ||||
| 
 | ||||
| /Info 7 0 R | ||||
| /Root 6 0 R | ||||
| /Size 12 | ||||
| >> | ||||
| startxref | ||||
| 2126 | ||||
| %%EOF | ||||
							
								
								
									
										1255
									
								
								cucumber/exampleFiles/images.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1255
									
								
								cucumber/exampleFiles/images.pdf
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										106
									
								
								cucumber/exampleFiles/pdfa1.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								cucumber/exampleFiles/pdfa1.pdf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,106 @@ | ||||
| %PDF-1.3 | ||||
| %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com | ||||
| 1 0 obj | ||||
| << | ||||
| /F1 2 0 R | ||||
| >> | ||||
| endobj | ||||
| 2 0 obj | ||||
| << | ||||
| /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font | ||||
| >> | ||||
| endobj | ||||
| 3 0 obj | ||||
| << | ||||
| /Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 4 0 obj | ||||
| << | ||||
| /Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 5 0 obj | ||||
| << | ||||
| /Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 6 0 obj | ||||
| << | ||||
| /PageMode /UseNone /Pages 8 0 R /Type /Catalog | ||||
| >> | ||||
| endobj | ||||
| 7 0 obj | ||||
| << | ||||
| /Author (anonymous) /CreationDate (D:20240718233034+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240718233034+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)  | ||||
|   /Subject (unspecified) /Title (untitled) /Trapped /False | ||||
| >> | ||||
| endobj | ||||
| 8 0 obj | ||||
| << | ||||
| /Count 3 /Kids [ 3 0 R 4 0 R 5 0 R ] /Type /Pages | ||||
| >> | ||||
| endobj | ||||
| 9 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 206 | ||||
| >> | ||||
| stream | ||||
| Gap@G\IO3f&4Lr[@S4&T2aReWZ3N'9",Ncra>5AuK^J(o@r?=EP>b]h[L@XZ8q7#[c:#H2:^/=b,p3^,&f-Q.'H%!U?%N\iVa1pLMlh/41\A8@dF5@0al:-1?L;D%LpL3g\9`.3c6N/Mp=sE/nO%^@%Cc3`]e`qqS@[pkUWemMZC<P\fkqa55u)*hIUoU437-gb!e_*&B/,&~>endstream | ||||
| endobj | ||||
| 10 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@G\IO3V'LdA_ig"8P1PS=kA5Q_GQ\P]*S3\>Q`jHYt?8UdkV`6]UV*On)+1VMV+A@.iF:*6sWfM9f"s.NmVuMto!p7-+,Rb<.h,pdi-&OQ5KO\RRFj.j"A)ScTQ7$hudF^TnZ'XuQA5"O]rYkt><-DJmj'"Ri>n!4`^m409XX`e)AR'*rGsn6m79.18+^ba=qRuss"-A3k+9~>endstream | ||||
| endobj | ||||
| 11 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 210 | ||||
| >> | ||||
| stream | ||||
| Gap@G]+0EH(e/_@iZH]:.1fBHK`Xl'[i1&AjX(\k8hbgo(QJ6R1Rsuo6_I1A5Gg$JL;D#$J2CX;+Cf*cUHk2%H1XmpWe+qZ5moJ#B]>b%%[d,mfSSkS4A:Q4NlOFfrL7eA,s45"eUSakM;927AA,1"-LZ)&nZ/ah=8_X7:?ZMj@J@;r7d`t]Z0\d39M%:$k8[S5D"2oSap4s80l?~>endstream | ||||
| endobj | ||||
| xref | ||||
| 0 12 | ||||
| 0000000000 65535 f  | ||||
| 0000000073 00000 n  | ||||
| 0000000104 00000 n  | ||||
| 0000000211 00000 n  | ||||
| 0000000404 00000 n  | ||||
| 0000000598 00000 n  | ||||
| 0000000792 00000 n  | ||||
| 0000000860 00000 n  | ||||
| 0000001156 00000 n  | ||||
| 0000001227 00000 n  | ||||
| 0000001523 00000 n  | ||||
| 0000001823 00000 n  | ||||
| trailer | ||||
| << | ||||
| /ID  | ||||
| [<88edee24ee67bd7d6b7cf53cfa2222b0><88edee24ee67bd7d6b7cf53cfa2222b0>] | ||||
| % ReportLab generated PDF document -- digest (http://www.reportlab.com) | ||||
| 
 | ||||
| /Info 7 0 R | ||||
| /Root 6 0 R | ||||
| /Size 12 | ||||
| >> | ||||
| startxref | ||||
| 2124 | ||||
| %%EOF | ||||
							
								
								
									
										106
									
								
								cucumber/exampleFiles/pdfa2.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								cucumber/exampleFiles/pdfa2.pdf
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,106 @@ | ||||
| %PDF-1.3 | ||||
| %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com | ||||
| 1 0 obj | ||||
| << | ||||
| /F1 2 0 R | ||||
| >> | ||||
| endobj | ||||
| 2 0 obj | ||||
| << | ||||
| /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font | ||||
| >> | ||||
| endobj | ||||
| 3 0 obj | ||||
| << | ||||
| /Contents 9 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 4 0 obj | ||||
| << | ||||
| /Contents 10 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 5 0 obj | ||||
| << | ||||
| /Contents 11 0 R /MediaBox [ 0 0 612 792 ] /Parent 8 0 R /Resources << | ||||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | ||||
| >> /Rotate 0 /Trans << | ||||
| 
 | ||||
| >>  | ||||
|   /Type /Page | ||||
| >> | ||||
| endobj | ||||
| 6 0 obj | ||||
| << | ||||
| /PageMode /UseNone /Pages 8 0 R /Type /Catalog | ||||
| >> | ||||
| endobj | ||||
| 7 0 obj | ||||
| << | ||||
| /Author (anonymous) /CreationDate (D:20240718233034+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240718233034+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)  | ||||
|   /Subject (unspecified) /Title (untitled) /Trapped /False | ||||
| >> | ||||
| endobj | ||||
| 8 0 obj | ||||
| << | ||||
| /Count 3 /Kids [ 3 0 R 4 0 R 5 0 R ] /Type /Pages | ||||
| >> | ||||
| endobj | ||||
| 9 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@GYmu@>'Ld5[if35rI0]sG)F[U^"c>T)"\\os-r:1V0,enq1Rsuo,*67.@k7U.LRF-P.e"CM2V!>iYi<g`nXh!K?n@$t^rY1$+^0'>=B8H6e;F1WmG#,(eS00(Qe9&:O@nI879DTsT,njXAB?`8:>,Hn3*RV!qh4;&@6%]<9Y*>QZ].Z5o;RAZXg7d[#+bphHs_Ep!QR2TZ2~>endstream | ||||
| endobj | ||||
| 10 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 210 | ||||
| >> | ||||
| stream | ||||
| Gap@G]+0EH(e/_@iZH]:>=,iY1bE)XN?M;1'J/>i&HY;gks]*rj:!DKpb8@`prC#N+9E#o#-<G*!#p7e6j-1sX2k5S,6XmM"taYkfK^k">%usEeEk=sR<UT"dm`rXD;!S`_jS9LU+(R%e'V%WSMfHP.pXZEQqTQq=&D[I[PS(41(NIAZ1R/U?:Z=hSXu!NDF)bpG2F+/I/q/u1-Y~>endstream | ||||
| endobj | ||||
| 11 0 obj | ||||
| << | ||||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 209 | ||||
| >> | ||||
| stream | ||||
| Gap@G_$YcZ'LhbF`EQB$nqi=8S<;#HbK3&f>rnodRPo`Vf4P[3cJidY(I=[K5NWCT'<lHgci?oCRVNST&[k#q4oSC0FWgAt1pD4d_(hIRjn_Nt+cFgJlfm[1U8@/M4r^Pk<@F!@e?%/!-Vq;]nfdLi9]P2M)ck9?)%oNXa_\N<-d"(pjlH%-G`T@Sj&P(j6.@#Xh\Vr6!1iI2/H~>endstream | ||||
| endobj | ||||
| xref | ||||
| 0 12 | ||||
| 0000000000 65535 f  | ||||
| 0000000073 00000 n  | ||||
| 0000000104 00000 n  | ||||
| 0000000211 00000 n  | ||||
| 0000000404 00000 n  | ||||
| 0000000598 00000 n  | ||||
| 0000000792 00000 n  | ||||
| 0000000860 00000 n  | ||||
| 0000001156 00000 n  | ||||
| 0000001227 00000 n  | ||||
| 0000001526 00000 n  | ||||
| 0000001827 00000 n  | ||||
| trailer | ||||
| << | ||||
| /ID  | ||||
| [<4fcc82a085fe71e34a32d1b23c8b939f><4fcc82a085fe71e34a32d1b23c8b939f>] | ||||
| % ReportLab generated PDF document -- digest (http://www.reportlab.com) | ||||
| 
 | ||||
| /Info 7 0 R | ||||
| /Root 6 0 R | ||||
| /Size 12 | ||||
| >> | ||||
| startxref | ||||
| 2127 | ||||
| %%EOF | ||||
| @ -14,3 +14,8 @@ def after_scenario(context, scenario): | ||||
|         os.remove('response_file') | ||||
|     if hasattr(context, 'file_name') and os.path.exists(context.file_name): | ||||
|         os.remove(context.file_name) | ||||
| 
 | ||||
|     # Remove any temporary files | ||||
|     for temp_file in os.listdir('.'): | ||||
|         if temp_file.startswith('genericNonCustomisableName') or temp_file.startswith('temp_image_'): | ||||
|             os.remove(temp_file) | ||||
| @ -1,4 +1,4 @@ | ||||
| @example | ||||
| @example @general | ||||
| Feature: API Validation | ||||
| 
 | ||||
|   @positive @password | ||||
|  | ||||
| @ -32,7 +32,7 @@ Feature: API Validation | ||||
|   @ocr @positive | ||||
|   Scenario: Extract Image Scans | ||||
|     Given I generate a PDF file as "fileInput" | ||||
| 	And the pdf contains 3 images on 2 pages | ||||
| 	And the pdf contains 3 images of size 300x300 on 2 pages | ||||
|     And the request data includes | ||||
|       | parameter        | value       | | ||||
|       | angleThreshold        | 5         | | ||||
| @ -125,8 +125,7 @@ Feature: API Validation | ||||
| 
 | ||||
|   @ocr | ||||
|   Scenario: PDFA | ||||
|     Given I generate a PDF file as "fileInput" | ||||
|     And the pdf contains 3 pages with random text | ||||
|     Given I use an example file at "exampleFiles/pdfa2.pdf" as parameter "fileInput" | ||||
| 	And the request data includes | ||||
|       | parameter        | value     | | ||||
|       | outputFormat     | pdfa       | | ||||
| @ -137,8 +136,7 @@ Feature: API Validation | ||||
| 	 | ||||
|   @ocr | ||||
|   Scenario: PDFA1 | ||||
|     Given I generate a PDF file as "fileInput" | ||||
|     And the pdf contains 3 pages with random text | ||||
|     Given I use an example file at "exampleFiles/pdfa1.pdf" as parameter "fileInput" | ||||
| 	And the request data includes | ||||
|       | parameter        | value     | | ||||
|       | outputFormat     | pdfa-1       | | ||||
| @ -149,8 +147,7 @@ Feature: API Validation | ||||
| 	 | ||||
|   @compress @ghostscript @positive | ||||
|   Scenario: Compress | ||||
|     Given I generate a PDF file as "fileInput" | ||||
|     And the pdf contains 3 pages with random text | ||||
|     Given I use an example file at "exampleFiles/ghost3.pdf" as parameter "fileInput" | ||||
| 	And the request data includes | ||||
|       | parameter        | value     | | ||||
|       | optimizeLevel     | 4       | | ||||
| @ -161,8 +158,7 @@ Feature: API Validation | ||||
| 	 | ||||
|   @compress @ghostscript @positive | ||||
|   Scenario: Compress | ||||
|     Given I generate a PDF file as "fileInput" | ||||
|     And the pdf contains 3 pages with random text | ||||
|     Given I use an example file at "exampleFiles/ghost2.pdf" as parameter "fileInput" | ||||
| 	And the request data includes | ||||
|       | parameter        | value     | | ||||
|       | optimizeLevel     | 1       | | ||||
| @ -175,8 +171,7 @@ Feature: API Validation | ||||
| 	 | ||||
|   @compress @ghostscript @positive | ||||
|   Scenario: Compress | ||||
|     Given I generate a PDF file as "fileInput" | ||||
|     And the pdf contains 3 pages with random text | ||||
|     Given I use an example file at "exampleFiles/ghost1.pdf" as parameter "fileInput" | ||||
| 	And the request data includes | ||||
|       | parameter        | value     | | ||||
|       | optimizeLevel     | 1       | | ||||
|  | ||||
| @ -94,3 +94,23 @@ Feature: API Validation | ||||
|     | 1         | 10         | 2         | 10            | | ||||
| 
 | ||||
| 
 | ||||
|   @extract-images | ||||
|   Scenario Outline: Extract Image Scans | ||||
|     Given I use an example file at "exampleFiles/images.pdf" as parameter "fileInput" | ||||
|     And the request data includes | ||||
|       | parameter        | value       | | ||||
|       | format        | <format>         | | ||||
|     When I send the API request to the endpoint "/api/v1/misc/extract-images" | ||||
|     Then the response content type should be "application/octet-stream" | ||||
| 	And the response file should have extension ".zip" | ||||
| 	And the response ZIP should contain 20 files | ||||
|     And the response file should have size greater than 0 | ||||
| 	And the response status code should be 200 | ||||
| 	 | ||||
| 	Examples: | ||||
|     | format |  | ||||
|     | png        |  | ||||
|     | gif         | | ||||
|     | jpeg        |  | ||||
| 
 | ||||
| 	 | ||||
|  | ||||
| @ -6,11 +6,14 @@ import io | ||||
| import random | ||||
| import string | ||||
| from reportlab.lib.pagesizes import letter | ||||
| from reportlab.lib.utils import ImageReader | ||||
| from reportlab.pdfgen import canvas | ||||
| import mimetypes | ||||
| import requests | ||||
| import zipfile | ||||
| import shutil | ||||
| import re | ||||
| from PIL import Image, ImageDraw | ||||
| 
 | ||||
| ######### | ||||
| # GIVEN # | ||||
| @ -43,8 +46,6 @@ def step_use_example_file(context, filePath, fileInput): | ||||
|     except FileNotFoundError: | ||||
|         raise FileNotFoundError(f"The example file '{filePath}' does not exist.") | ||||
| 
 | ||||
|          | ||||
| 
 | ||||
| @given('the pdf contains {page_count:d} pages') | ||||
| def step_pdf_contains_pages(context, page_count): | ||||
|     writer = PdfWriter() | ||||
| @ -66,8 +67,6 @@ def step_pdf_contains_blank_pages(context, page_count): | ||||
|     context.files[context.param_name].close() | ||||
|     context.files[context.param_name] = open(context.file_name, 'rb') | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| def create_black_box_image(file_name, size): | ||||
|     can = canvas.Canvas(file_name, pagesize=size) | ||||
|     width, height = size | ||||
| @ -76,36 +75,75 @@ def create_black_box_image(file_name, size): | ||||
|     can.showPage() | ||||
|     can.save() | ||||
| 
 | ||||
| def create_pdf_with_black_boxes(file_name, image_count, page_count): | ||||
|     page_width, page_height = letter | ||||
|     box_size = 72  # 1 inch by 1 inch black box | ||||
| @given(u'the pdf contains {image_count:d} images of size {width:d}x{height:d} on {page_count:d} pages') | ||||
| def step_impl(context, image_count, width, height, page_count): | ||||
|     context.param_name = "fileInput" | ||||
|     context.file_name = "genericNonCustomisableName.pdf" | ||||
|     create_pdf_with_images_and_boxes(context.file_name, image_count, page_count, width, height) | ||||
|     if not hasattr(context, 'files'): | ||||
|         context.files = {} | ||||
|     context.files[context.param_name] = open(context.file_name, 'rb') | ||||
| 
 | ||||
| def add_black_boxes_to_image(image): | ||||
|     if isinstance(image, str): | ||||
|         image = Image.open(image) | ||||
| 
 | ||||
|     draw = ImageDraw.Draw(image) | ||||
|     draw.rectangle([(0, 0), image.size], fill=(0, 0, 0))  # Fill image with black | ||||
|     return image | ||||
| 
 | ||||
| def create_pdf_with_images_and_boxes(file_name, image_count, page_count, image_width, image_height): | ||||
|     page_width, page_height = max(letter[0], image_width), max(letter[1], image_height) | ||||
|     boxes_per_page = image_count // page_count + (1 if image_count % page_count != 0 else 0) | ||||
|      | ||||
| 
 | ||||
|     writer = PdfWriter() | ||||
|     box_counter = 0 | ||||
|      | ||||
| 
 | ||||
|     for page in range(page_count): | ||||
|         packet = io.BytesIO() | ||||
|         can = canvas.Canvas(packet, pagesize=letter) | ||||
|          | ||||
|         can = canvas.Canvas(packet, pagesize=(page_width, page_height)) | ||||
| 
 | ||||
|         for i in range(boxes_per_page): | ||||
|             if box_counter >= image_count: | ||||
|                 break | ||||
|             x = (i % (page_width // box_size)) * box_size | ||||
|             y = page_height - ((i // (page_width // box_size) + 1) * box_size) | ||||
|             can.setFillColorRGB(0, 0, 0) | ||||
|             can.rect(x, y, box_size, box_size, fill=1) | ||||
| 
 | ||||
|             # Simulating a dynamic image creation (replace this with your actual image creation logic) | ||||
|             # For demonstration, we'll create a simple black image | ||||
|             dummy_image = Image.new('RGB', (image_width, image_height), color='white')  # Create a white image | ||||
|             dummy_image = add_black_boxes_to_image(dummy_image)  # Add black boxes | ||||
| 
 | ||||
|             # Convert the PIL Image to bytes to pass to drawImage | ||||
|             image_bytes = io.BytesIO() | ||||
|             dummy_image.save(image_bytes, format='PNG') | ||||
|             image_bytes.seek(0) | ||||
| 
 | ||||
|             # Check if the image fits in the current page dimensions | ||||
|             x = (i % (page_width // image_width)) * image_width | ||||
|             y = page_height - (((i % (page_height // image_height)) + 1) * image_height) | ||||
| 
 | ||||
|             if x + image_width > page_width or y < 0: | ||||
|                 break | ||||
| 
 | ||||
|             # Add the image to the PDF | ||||
|             can.drawImage(ImageReader(image_bytes), x, y, width=image_width, height=image_height) | ||||
|             box_counter += 1 | ||||
|              | ||||
| 
 | ||||
|         can.showPage() | ||||
|         can.save() | ||||
|         packet.seek(0) | ||||
|         new_pdf = PdfReader(packet) | ||||
|         writer.add_page(new_pdf.pages[0]) | ||||
|      | ||||
| 
 | ||||
|     # Write the PDF to file | ||||
|     with open(file_name, 'wb') as f: | ||||
|         writer.write(f) | ||||
| 
 | ||||
|     # Clean up temporary image files | ||||
|     for i in range(image_count): | ||||
|         temp_image_path = f"temp_image_{i}.png" | ||||
|         if os.path.exists(temp_image_path): | ||||
|             os.remove(temp_image_path) | ||||
| 
 | ||||
| @given('the pdf contains {image_count:d} images on {page_count:d} pages') | ||||
| def step_pdf_contains_images(context, image_count, page_count): | ||||
|     if not hasattr(context, 'param_name'): | ||||
| @ -118,7 +156,6 @@ def step_pdf_contains_images(context, image_count, page_count): | ||||
|         context.files[context.param_name].close() | ||||
|     context.files[context.param_name] = open(context.file_name, 'rb') | ||||
| 
 | ||||
|      | ||||
| @given('the pdf contains {page_count:d} pages with random text') | ||||
| def step_pdf_contains_pages_with_random_text(context, page_count): | ||||
|     buffer = io.BytesIO() | ||||
| @ -186,6 +223,21 @@ def save_generated_pdf(context, filename): | ||||
| # WHEN # | ||||
| ######## | ||||
| 
 | ||||
| @when('I send a GET request to "{endpoint}"') | ||||
| def step_send_get_request(context, endpoint): | ||||
|     base_url = "http://localhost:8080" | ||||
|     full_url = f"{base_url}{endpoint}" | ||||
|     response = requests.get(full_url) | ||||
|     context.response = response | ||||
| 
 | ||||
| @when('I send a GET request to "{endpoint}" with parameters') | ||||
| def step_send_get_request_with_params(context, endpoint): | ||||
|     base_url = "http://localhost:8080" | ||||
|     params = {row['parameter']: row['value'] for row in context.table} | ||||
|     full_url = f"{base_url}{endpoint}" | ||||
|     response = requests.get(full_url, params=params) | ||||
|     context.response = response | ||||
| 
 | ||||
| @when('I send the API request to the endpoint "{endpoint}"') | ||||
| def step_send_api_request(context, endpoint): | ||||
|     url = f"http://localhost:8080{endpoint}" | ||||
| @ -278,7 +330,6 @@ def step_save_response_file(context, filename): | ||||
|         f.write(context.response.content) | ||||
|     print(f"Saved response content to {filename}") | ||||
| 
 | ||||
| 
 | ||||
| @then('the response PDF should contain {page_count:d} pages') | ||||
| def step_check_response_pdf_page_count(context, page_count): | ||||
|     response_file = io.BytesIO(context.response.content) | ||||
| @ -305,3 +356,26 @@ def step_check_response_zip_doc_page_count(context, doc_count, pages_per_doc): | ||||
|                 reader = PdfReader(pdf_file) | ||||
|                 actual_pages_per_doc = len(reader.pages) | ||||
|                 assert actual_pages_per_doc == pages_per_doc, f"Expected {pages_per_doc} pages per document but got {actual_pages_per_doc} pages in document {file_name}" | ||||
| 
 | ||||
| @then('the JSON value of "{key}" should be "{expected_value}"') | ||||
| def step_check_json_value(context, key, expected_value): | ||||
|     actual_value = context.response.json().get(key) | ||||
|     assert actual_value == expected_value, \ | ||||
|         f"Expected JSON value for '{key}' to be '{expected_value}' but got '{actual_value}'" | ||||
| 
 | ||||
| @then('JSON list entry containing "{identifier_key}" as "{identifier_value}" should have "{target_key}" as "{target_value}"') | ||||
| def step_check_json_list_entry(context, identifier_key, identifier_self, target_key, target_value): | ||||
|     json_response = context.response.json() | ||||
|     for entry in json_response: | ||||
|         if entry.get(identifier_key) == identifier_value: | ||||
|             assert entry.get(target_key) == target_value, \ | ||||
|                 f"Expected {target_key} to be {target_value} in entry where {identifier_key} is {identifier_value}, but found {entry.get(target_key)}" | ||||
|             break | ||||
|     else: | ||||
|         raise AssertionError(f"No entry with {identifier_key} as {identifier_value} found") | ||||
| 
 | ||||
| @then('the response should match the regex "{pattern}"') | ||||
| def step_response_matches_regex(context, pattern): | ||||
|     response_text = context.response.text | ||||
|     assert re.match(pattern, response_text), \ | ||||
|         f"Response '{response_text}' does not match the expected pattern '{pattern}'" | ||||
|  | ||||
| @ -22,7 +22,6 @@ services: | ||||
|       DOCKER_ENABLE_SECURITY: "false" | ||||
|       SECURITY_ENABLELOGIN: "false" | ||||
|       LANGS: "en_GB,en_US,ar_AR,de_DE,fr_FR,es_ES,zh_CN,zh_TW,ca_CA,it_IT,sv_SE,pl_PL,ro_RO,ko_KR,pt_BR,ru_RU,el_GR,hi_IN,hu_HU,tr_TR,id_ID" | ||||
|       INSTALL_BOOK_AND_ADVANCED_HTML_OPS: "true" | ||||
|       SYSTEM_DEFAULTLOCALE: en-US | ||||
|       UI_APPNAME: Stirling-PDF | ||||
|       UI_HOMEDESCRIPTION: Demo site for Stirling-PDF Latest | ||||
|  | ||||
| @ -99,7 +99,7 @@ public class CompressController { | ||||
|                 List<String> command = new ArrayList<>(); | ||||
|                 command.add("gs"); | ||||
|                 command.add("-sDEVICE=pdfwrite"); | ||||
|                 command.add("-dCompatibilityLevel=1.4"); | ||||
|                 command.add("-dCompatibilityLevel=1.5"); | ||||
| 
 | ||||
|                 switch (optimizeLevel) { | ||||
|                     case 1: | ||||
|  | ||||
| @ -22,8 +22,8 @@ | ||||
|                 <div class="mb-3"> | ||||
|                   <label th:text="#{PDFToPresentation.selectText.1}"></label> | ||||
|                   <select class="form-control" name="outputFormat"> | ||||
|                     <option value="ppt">PPT</option> | ||||
|                     <option value="pptx">PPTX</option> | ||||
|                     <option value="ppt">PPT</option> | ||||
|                     <option value="odp">ODP</option> | ||||
|                   </select> | ||||
|                 </div> | ||||
|  | ||||
| @ -22,8 +22,8 @@ | ||||
|                 <div class="mb-3"> | ||||
|                   <label th:text="#{PDFToWord.selectText.1}"></label> | ||||
|                   <select class="form-control" name="outputFormat"> | ||||
|                     <option value="doc">Doc</option> | ||||
|                     <option value="docx">DocX</option> | ||||
|                     <option value="doc">Doc</option> | ||||
|                     <option value="odt">Odt</option> | ||||
|                   </select> | ||||
|                 </div> | ||||
|  | ||||
| @ -264,6 +264,7 @@ | ||||
|   </div> | ||||
| 
 | ||||
|   <script> | ||||
|   	/* | ||||
|     document.addEventListener("DOMContentLoaded", function() { | ||||
|       const surveyVersion = "1.1"; | ||||
|       const modal = new bootstrap.Modal(document.getElementById('surveyModal')); | ||||
| @ -294,7 +295,7 @@ | ||||
|       if (localStorage.getItem('dontShowSurvey')) { | ||||
|         modal.hide(); | ||||
|       } | ||||
|     }); | ||||
|     });*/ | ||||
|   </script> | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -21,7 +21,7 @@ | ||||
|                 <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> | ||||
|                 <div class="mb-3"> | ||||
|                   <label for="fileInput" th:text="#{pageRemover.pagesToDelete}"></label> | ||||
|                   <input type="text" class="form-control" id="fileInput" name="pageNumbers" th:placeholder="#{pageRemover.placeholder}" required> | ||||
|                   <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> | ||||
|                 </div> | ||||
|                 <button type="submit" id="submitBtn" class="btn btn-primary" th:text="#{pageRemover.submit}"></button> | ||||
|               </form> | ||||
|  | ||||
| @ -20,9 +20,7 @@ | ||||
|               <form method="post" enctype="multipart/form-data" action="api/v1/security/add-watermark"> | ||||
|                 <div class="mb-3"> | ||||
|                   <label th:text="#{watermark.selectText.1}"></label> | ||||
|                   <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"> | ||||
|                     <input type="file" id="fileInput" name="fileInput" class="form-control-file" accept="application/pdf" required> | ||||
|                   </div> | ||||
|                   <div th:replace="~{fragments/common :: fileSelector(name='fileInput', multiple=false, accept='application/pdf')}"></div> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <div class="mb-3"> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user