From 085aa4207deefbafabca056ada75b237b85d4ac5 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 2 Nov 2023 15:35:52 +0100 Subject: [PATCH] Render rich text with only one text element --- src/display/xfa_layer.js | 21 ++++++++++++++++++--- test/pdfs/.gitignore | 2 ++ test/pdfs/issue17215.pdf | Bin 0 -> 16566 bytes test/test_manifest.json | 10 +++++++++- 4 files changed, 29 insertions(+), 4 deletions(-) create mode 100755 test/pdfs/issue17215.pdf diff --git a/src/display/xfa_layer.js b/src/display/xfa_layer.js index 802634844..9f713edbe 100644 --- a/src/display/xfa_layer.js +++ b/src/display/xfa_layer.js @@ -176,8 +176,8 @@ class XfaLayer { linkService, }); } - const stack = [[root, -1, rootHtml]]; + const isNotForRichText = intent !== "richText"; const rootDiv = parameters.div; rootDiv.append(rootHtml); @@ -187,13 +187,28 @@ class XfaLayer { } // Set defaults. - if (intent !== "richText") { + if (isNotForRichText) { rootDiv.setAttribute("class", "xfaLayer xfaFont"); } // Text nodes used for the text highlighter. const textDivs = []; + // In the rich text context, it's possible to just have a text node without + // a root element, so we handle this case here (see issue 17215). + if (root.children.length === 0) { + if (root.value) { + const node = document.createTextNode(root.value); + rootHtml.append(node); + if (isNotForRichText && XfaText.shouldBuildText(root.name)) { + textDivs.push(node); + } + } + return { textDivs }; + } + + const stack = [[root, -1, rootHtml]]; + while (stack.length > 0) { const [parent, i, html] = stack.at(-1); if (i + 1 === parent.children.length) { @@ -233,7 +248,7 @@ class XfaLayer { stack.push([child, -1, childHtml]); } else if (child.value) { const node = document.createTextNode(child.value); - if (XfaText.shouldBuildText(name)) { + if (isNotForRichText && XfaText.shouldBuildText(name)) { textDivs.push(node); } childHtml.append(node); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 3eff1fe26..4101b2eb0 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -617,3 +617,5 @@ !bug1851498.pdf !issue17065.pdf !issue17069.pdf +!issue17215.pdf + diff --git a/test/pdfs/issue17215.pdf b/test/pdfs/issue17215.pdf new file mode 100755 index 0000000000000000000000000000000000000000..d50846adeb5fea74c2958b76c7a2ded590c6384d GIT binary patch literal 16566 zcmcJ$by!sG)(1=q5)w*-4Bap@#L(T{El76_-Q6G^(j|zbN=tW2cOzXQ9V*}8^LUQ$ zdCvQO-#_2JxGpwp?tAaG?iIhahP7yv#U)ultej{xljp*v((>lQ;VJy}GBP8Jm);i>;Ntne!h{ zVgGMWk+U*&{!2KR48L|N8(I91Z5)4W6LEF1bb!*Y(Kw~9`LM#RP`X~mO>1%mnCsh< zC;;M6>tK(%!d0J} zeSrj{C^(q@Yf~+wvq3iSY2ivBy8WP#;op0dp$?|5CT39j3j)pPuO2}1SayAA)k-?L zNY-+B?E)U15tswvRF)5h27?~Qm7(MKE zc7aK4hbDEv=c#OZyU=U~4ZUy*m31s*g1dL8QdEH?;u^4FNUlKy$kg-kl7u<1*4fdG z30l75hE|eK zSo*PB5M?R7;U;MdKfYsGM}Asa*9W5wNhDlOqwVk)%6PiS$Cn6lreNq&>*tGz&$-XS z2mwjdQ$4H-ulei-u3lOXr$(3%WA2QGoUIcFW(r9f6gb3;SR@>TGh0;fS#J>>QA`l? zOTfw3@YgP2Mf&mUoijjr+}`P`o7YeB+MO_eww-bq6w z$~vD}!jI9)7#vpGQu<9|&N&Eq8{P6{kmmE#aI1xkE87miA>j^n8V1 zZLq~IWr%rk`mR`T=L+;Iea3mgVa(d`9C8EiziJz|R6SOwU;aw8^;R>Nf8FP+T_3wC zDa}d~jyrd(=6+^l<-4*KUBIhvJ(Z`TpV35|0;43A5;S{tbqSaxnilyxjg4X)efM8T zb)2mWMrmZ0PP<@Ebc>=&J7Rh4jm5nSFWSnlh#p9|K9OxO-Bv@RrP*TthM@0s!|X4H zSe}`kWrq(e23d=au;msh>UU71hVZm0d@igT!rUgGK8Y0Mo$GwdNY1>Tl59kr-pA55 z;IzSixy{Qb6L#xBlqC7#i1NwVQm=vVv$nH_>d=hgvCaEW;emybecrXbr!05v$nFD& zbc}1y5EK#|Z7?nn55*Y_A15cPt?pX*J)tjC!bz14p1-IsyEXn+iR+RfUsPJL_kGea zaw(xC`~%M_^PV-15K?LrDKXZ^C*AFfZaLjkqp2UhnoobR4}X?^)Vsy>L*{F>F!pG? z(u@~F4L!zQ^0n7QzUU!HUa7j|HoGs4 zpDHj)IM3q%d=(ym<1kZN)zT8mMLuJyU&Gt32FVycfWY4Y=5ILQ`XfsH4nu&4&;lnf19Si4SNYdIMZjOIJZusB^oYu3 z+i25gsDLmlg&H@|3ELANJ4$|Q=X~y;0Ywt@r-GXDu3u+)e%j&DXJG8n)e#EoowIN{ zy%W0Xy;BHREVU^{@6ARTCwgZz)E_3>tPl06>DXrmo zqwwpw$Z|ai38Q7$0jQdpz_K3*D})Qc#m>XZ1$jt%c(_+%%E(N zwyDmJh1ks4M}*oNU6ENR{k;wDK$A`4|g|NIZ*)U!4CgrP`|m8 zbb#9Z&78K9u{BJ}2loDUwED@-2DfM7Qr%jwbRF^4ff}nIQk8Al)Pyb~rB@pBD?>@w zPRO_)>-(@`*|fpCvY*j_Y9y7XWsT8+HeXLQzc;q_<83F7s?710tieU*S+T1S*i{x6 z9#fm4wLd9Lw@>(|Q~%=fUq_IsTQ3 z{_^3!70AiM!wO{Q;o*ikBnYN70EC16Z^EBi{FUSUvgZFqZ=gR@QIX%i2l~sY{}<<5 z&3xmv(W8D6f_K$xezNeNzW23zQ}853-@bfav^3iFVoTCSuUX_?tl^jQ{U0CxTin0A z?^kq!i7Q5*)=_Cv8K!WZiFmTibbldisrOFjo6?WLpQ;B=(zN=q&`IA+Z?rz!dt<*n?e>|spt+SV;Uq??)2jp$L}Ov{3fhN(>n1DPy5u6B}Pny*jOd^Pf=-rQne+yAKPx2+|vJ)_2ioKq?!w zpFi)Vo4P=#7*_CCWo}bcRmReXYU@Jmq0&?!Q2`ftq$_iug2@fI{XB&$+k3 z2Fj2@9R4d~Y_rd^E(RfeS(T=a=wyn$|HU2uEPMWKYJYjwFE4=M-mlpBZ`XnVA%AJ( z5AXU94gJ46*qR73bh9!sQ2I9H0Qu->CLb zQ~p{4f>oQp!=^fng@{Ap0s#;(7{CRK zZrt2F08UOW02l&+AqNaiU^I4i_FsQL&|sgv_*0nwk(D@`JQUYFKu#FE8#zjwSy@=Z zYG2?(Y4*VRugd#@O&C;II0HETlIfR8vv7eS02X!_e1U;L;KQC@$O01?X4GadxcLhm zejS3Mk)7FpKQ9?r&SYgGVsBw<_HbfqE@pO`0B+dbzhwUR0sbk(pQ+0K;Y45v_z(2K z4AZc&MI~FBGGppb)qXihpb%CDpiYvtu5~~4o~<-~L#t{v@695~#fxW{s(uRumb4(s zd+4byeKp|+3RHXG@*txQ*~ zhShhzS}V`@FLxzs$M&qych+VGi(D1_Xj7O0aK{{t$22_(nwR4kOLlJXv?@iyj?T zf?^h)4=wAr1ZnN|9;qA4Dp9M)X4=ZhNfjg0iOC#Qj9u<_Ezc92mts$#azBNzpFj5a zG#4j0wCIYj+Tn6v!1QjX>0E*n(@zN1d*i2QzW^b!ck+o`EA{g3!Bh3}!XlNgE)_8v zgXiw)X=0x^9Z3VxgLkQmbUfx>htRbN-+j$1ARdFOWgVc#E190D8Wca(;ot9mL<^+! z{(%v`K^;H+%0Zlj+sT&z4Z%K_yKiy!S!pbs@;u})_g&*)*ogn$@4kO<-XZx0d%T1u9cv8vjv*4W~1?_RpO^|;GV432ID;Ya6ogf4dY=931jY32$6b=7Yv8Swe|Oaa9% zIP;dKv=lKw$7{tqLq1`p%3bI?#i*Gz8>4s}8M)5T>Njrnne?H)ro`xpg`QnCq#v)Q zA`3YsT4fiMurW`t?9(&ebCC(Z%8pZbsyoeGVC4Gj^_9-vbt~<>J6rITs`5OZ(2I;& zeI+`Brc~{)g)`KU9)Oi$5r?1NfE=Zk!(8A;!WDl$M`N$+X=z3(K2ND{h-|83(-;B@ z8xj4li!l5w&LrNrqixsssf>`nZH80wa)|y0_G#Nxx7B{hFci4&?xQFF1zK4?D>jj%JL>M@3`eBqY`f zQ&j_XP{mG1oWn2@J(#SMQux3Jg6_+$5CFR0j;=;Z*ff==RW8tsM@FRKUEwdPT&f(* zOyv5g9cBMiVBUEX%iUYuq$ytgqN>8L(54W6glo{f>K;y^{ijGe;IlpT`lIQTILKm? z1u%h{e&b8{&zY`86O^<2_!k-K)?B8=HK7yL%_z1vV{FA7l+ql`liknOL`!X35sK?_ zw>!|21y$-@;q~O)b)swZkysJdOW>A&E>2EoS)ds+)L*<$IMHobl9UjykD2$>q+dS& zg}=Js;)b8Z_3B*y$pOV!-Ll%a9eyq5+fF)Yu|9g|4>teyhRN`icEZxA4oD0WODIB5 zBxLcVXR$&wjjA<*H$|;U=CrgWsuH|>06e0EU(rTI+d+v>@waN^3L*23M^)Law#eZX zLetN*Jx*nH9=nLSd}gk9<-S2#h69m4qEepeRj*Md4EGn(EyF90l`#nX$PP;PXkGK>~TlFKk#SgFCil6d}N zZwi3g!d7!iQo};w9@lH@%#|VA_?mryp(M!c5#OPotOdUMiL8r8YR>d!<9nG1O}Mdn z+w|yZteuH76u6|!0&+hC-LUVkHS1ez*(IO6gkujiT$!CyNCz%|c>30Xf7Owd@XjuQ z7`p-EjDA{PIbJe!5i)GC=cc7XhfAmVx^8!idt{1g**i&HQ+E0qVlBE@mDBuvy2YZ4N#dGGh$7 zJbkN)7M4eC?yAkMuY=j^x4#NJNoEDXcV%kU1ymj*rMD=0shdwdjx zMCoL`W1%mud^!0!WT=`d{geiirYcRh3evYPqEs~5t+H}A9rlLP(MLu z{=8<4?-IMN>a*z!KR92{(M98Xq*fFrXsLKk>d34Ehbe*Xd1-h(l%s}v=mqLF=?`Pl zYN2Ds{9w8vx9;~0MXO+-$33hBg(yD}nV8fDDUjy|;hl-0Z*T-j3*%1@>MClgvygfJ z^ADBd(UvD+`@Pp`?)L>A5}#bgi_L_1))bYb`QYoNjLlK27|Fz*_-&O$u;cT$a%8Wa z^afMG^9273jPZUgqzE5uft(kfyb|lvqGjSYT#`Z65J0*!AHROz7{-%3A(0Ex3H8Cahu3+TM|Rl zad>>Ffjs`PL#a$yPba@&L0W}q-}5eKuH>5(8C~wR1JcBZLKIkVpk5#0l{u?L!rOXG z|0g@A@x02d8e&&rXluhFMWQ!bcvhZWVcT(I+CkhYn=y z3E`2N&%R(rXaJc<1e)t)TkXG4)S;ba#CBTzkjK@%`Qoge1;J^by~aKQymCtd0VsJk zH_cT=vMK6o%Q4CwAzkOdZlJcM55*k@I|bq&_KJLFAnVWg9{e zt)}#j6d^eizcqu$UBK$ck5j_b3$sbtk`9yATgjJTdD?Q55M4C1m>xIm=4*1&n7Gl( zU9p82>Q91WW|o;F(@6ra1{gy$PUjWvKTw%s43g^={I2%(?h(63o;vGNt$En>*I|c$G?rQs*8DNCcx5wCk!t z@1vKMcQENPdZV;dk6M(#JH5qRakjI?xnCR9vT5FqXEW5&f42H`bBX>un4QJ^8V2}uTz?o7`KE+soBL%^FCBMkJNx4I^j9NmpLD3#W%Z-nrxH%^Y4wF1Gtdi} zd!5Vk2Y3oUeu%(geIde8{I&BV;`Te^I;J~V-R=FjU&BsL_ZJXkO5VdeFzX`8a z>q2&uXPL4K8N`Z;@4BCDblH#w28eAF=hxP{N9U`hX4f`#pIcr8)*|_&L<_bSr?MM2 zU9p_^P9`IOGw4;5Ez5>kjz(4w_pVyv5O(dnXB%E|SSp}A|w5xs~xm1nMxWM?WgP&gVX5C?>kV7$N-4K5d`F z-KNDkutG@Rl#L~B>QSEJ8JW$RWCsSh))ub$?(o`g3|=V@~AUMj4inUyWb_ecb`x17a@uDY&h(xQj z*Zag|YjV*?tvu57PjMVAqzBlh1wU?K_e(VUZ3Nd%lsm~egkWz%Aev>ajK=$$P?)SOsi^m<~l4%+%_fYwY-26wqNLyF18R&LAv@JbG+ zp!|?)+?;v*gM|N&$IhyCj}i!ZpBm6wI$PhZ@Z+-Ss+i{+D|6x}+)^vv8*{2TByDA& zC*RFYT;TJUJ!#dxUS&!ySFd8_WQh!h+6&HEjdIcK(B*Iqc~s9rO2y3iBayhmKJclxOq+1NbT zNIO8}V7YV6EvCMF=shN*+{e;cWz^(EHrK@plMxHiCNz^cBB76DL^w^~j@ysEc)kyb z11O`iZ>X+gdSl;kX1(h7_=xu=r12hgor9i))L`H?B>E9I2i8-6{*9=-SzYJOV7#o$ z(N3%jKB4k(j+_y5QgLD=;kEFUZ+8}id41?bX$v)BZScp`iu<*y(PmaE&6tUXR;TT4 zRKdgJ=nUbO=He7{v(r%DbDn1uOYkes7Z&$FP7>@`(wT#mmfBX*m4t~9kH0!kd_C&iY1NptvPT@^_v96tF9TbI(?b^j`MOm!D{_>H!NPM;=u=FZ6pZ ztu;dfq;{6CaZcQ1zk+2&MvPna@J-$#p1oPTQ8(Xz`!Z~RJ8%z>TcU~+=#a^KkiL$? zyFykuDyb5sfHvXaswE2jT!9j6x=ZRMuh;MT{0B<5_&mXGE9DZM&OQGZs>pqxOmD7* zhd^}B+M|4VI-Qr?}kE4Q#zt~-kxd6iRBZO0xyYZQ|Qg4Ywvr{OY7;bb_ z#=cRL4i~PvN^B(jtPyU@DV^fuES!bwZQO-E*-a;C3|zq|m#t%=3ld6gm79x!ud1SR zfhTc%hDe2C$o5(QabVx_K4F6pS4=uyBlAW21$Np?pXRmNZ+?5r0$__B z%JR+o2;#FCrHolIsO4V+vQMuPr2;86?+l+PNOey+ABn6CPeMhTt#Sw&-GsEesDDIL z%(h%VVRV^*zK2v8phGDbj8Gg4c&Z$9yse`o)b*a&Wmjave_dVAWG+$F5mpT!4_5n% z<$z7gYw%5}RTWJ&?^Jlv+AJ#~&S=)q*LddjOLfsh)*_ss;%^df#93yVdivYdBO{SK zWGS4>c}4r9Rh~uP!gsnWWVr-t;$?2!rmCmX5}yJ;X$nh`;ckG#_6C^MQ*hMF_*k1I zUn)m6a*Z_Uvm!DcI(ML;EY~84DkyZ@V8QRY&P=3eBS&CiUEYU4_K;XUrP#{Zaj48i zlQ~nZ`q|QZ;N`2ebi{Js-bjy)eqTC+xvFimtucjK@Y(Y@NVez1^Mbss`lz>{>4;J- za;5F$Q%c5^8+Kq@(q;MvF7aEBH}HxErWh>m*O&I2@33Eg%_56nnjgr{`>aiU^6Y)R z7Qh+Y=F8An=ifV2@|m&wv61)7n`sEU(R!TKuKoS%4oA^Gi}%899|VbvHp6X@ZuB*Y zZ@GUgY**^PA!`!cftwV9Y%Ly)eLbrrA`*%tdnLZJhxN2`>}{LHQ^@XDCBU zm3U7~Y8_G{-;~>7c&~<+g)+-H%x(%Q+Tz@1X7fiu{e&e6tS^5aOPOPaG$q$Ac2A<~ zPJrLsb<@AyV9JrVB6lEz1}KEM&T$H6KQ$u?P?~soAntIy z=Dit{Yj7hAyK7^97w0BR2d@hZ}wbpVg%&d`2AoEgY za<$8KEeDDEOLhnqL}aQyZp5!DlSj91ou5)Ch0vf<2{b(^QMwPtyZpfDn0CM%h=|Uy zoGLUm1YM?zibX6AY1M5n@*K)1O!Dbox1M9q0!h*9jO!l|5`4 zd)@3LpUcjolINNP+s$w@I(vsK(*L<9c9r0;ZjP+&MA%H zeEkZUQ&L!x^C&G`Izu+%a4M4^_0nxP1t&?0yGyU;V;gLm5u`-ze-MY3njJX(gWD%ARwg$#dj) zL`S0eQD6?}QY+|G)CiL2*DOcj56+fH#3*U{uQ)1N3hy0`^qg9ETk! zF2dP(%)LvkwrSR##NbXa?Wk=S+_O)*x92p$(g-{AW0N;sCftIz$lhyXq09{3LwgtP z!u$H|$t}vGOK#lmWkZ6VVxc#@@eJ|7i3r6+C#shOQ`iAJt^mwo4))0;dE_MuwBCw6 zg@(18M{(E;?m<@cT#VHfh1;dxa@!|G!>c(2l~hAT2#+x3n-j~wSgY|_4WBD6*pm0! zmx4YpS}-BD#uQB0_1NsbX4BDxi2E&8lzs2fU~9idBe_JXU2E)yq?qiG&;D3LH!r9K z0%}f)jKKv}nEh0U>P1$#TR(uRD(M7L%}WBCzD~~|3de4DD0xHlH?{~^Y)=h1CX+CF zKtSJ1kos}&9ZC-|I8S2TLp!e!cwxA1Gd(Qo*U04vA(k!UNWI5*&;X z8z?;|Bj?XeUJamY9HaIVTo{(B#m-*gMy{|8Wu$!?;jt+FH59z7%_vy3?#U&8@lQOkn1dpm1mLaCvpZ z&Z#e4yj#s}3zY_+KJPSrDpq%y!cko{g=QNs?3pM~P%Gs)2NXQRzJ3xx0Xn`H1y7jt zngUaLUL(y$xH1D9m($Sbw`?cD;AByZHF_P!b{Axx6RaY+%<(wFN0mo1M`WJ_lm_X3 zJZF3%U|Sj?VI4|WE@4gmwSt5`k%wzn$?6$BrN^#*)yQ1P@yI?!^J^sbo1H-obV-Ta z*WLbx&jmA1-Fn`zDeND>3oIAVzc$a|3g??FdG{RoQ+`OV(`p~xu)3hrz;mq%rslp> z9pphHI4tS3h4n*zq2m~BUB1`CAIV8v-5aT?(+DURNyHbUO#wS+vn;Ex=7+I2HIQh6 zoxSkb{X>e+xxO~-q2KoqvhsEJ#NH7gnB{7rsD}Ua91Xy#KbZuly>HHxS-P;m!1d<* z?D|y(;rr&2+p)tC`!NDWGNzor`A_#A#3wElE6+k!q$ksG({%#ZAfvcMq3E@Z6V@v5 zx%iNroDnp&uQ_M!L1rX&`vkA-DAXhs+!v%-io4mQVl7k&QH`1m2y&3d-UOkioOc`t zP1|NMS*)0waJ?sEFDICAAKYejA z?8AAv_jk5Zt}%;T+du53l-cIst8$z0P9cS{mpA1T*=F0J1jf&Z1mxBZoDUI&Hr5A} z(SCZA5i{95w2i{^7>Tj_OJl0Eug4dG6Gxhl7NhBGIGbha(sWXphY~ueGst7Hx>b22 zFHXBN(#5;OJ}z)uZ{&U`Z2L~7e9N}$MDd1GDD1t@6ZbO5d4K8EP!m-Qv)XSo- zQn3UsyOEZd`f@|i77>uy2*20^8Oo>E`d^fNZ%?UuN8U|pvM&%x4&gN)*(0BcWh@4( zs5Bt$g{U238K80cL!}Km?hpgeDGIPbk0di4l`H}dQzgRDA~ZglD4Ol^dr@$NkT9IF zV}HaCr8X0arQCY!k`a)P;1i01#(u65(yFGfTikx)MmS@B!(Mg8L&@gLwHiU9#hjAxFw7lTWQE?`xNkeMkhkc(x3lfZG7 zHhn{vj&Di|86h_f7x<##<@^sKVYoGbTZB9=)8@woPMj5zi}arr2m8J8-}_nR_gqIC zzdZTQit7{MB3BpmQP#P^{Ve(OMiUmq=L*60?OcLdtorm2otwtB%J?=;H*}kg#U0wX{#fScCW)CW*VQeIX9A|i3UTt@&FE{@Ai`mHf0 z;ya{0USlIx;eyp{J*E_oYvih|SP-sUM%y@|&T=;M;%72T`Z9Mr`}(s43izv|z4p2^ zoF!_h+ruSMhd!~@q`59-=?!c;Xt8DOh~qLL?Cm@T3@tVD=W~I%Y?wu=eX?}U?$SJSN`li_H*Or!CJg->_@Jo_CjCU17 z=u8$nhpDeWF^5hMe3->0>(adPQ0B$?EUKB9cDw`-YSxh;6Y+h`-LR6?YbRD~XY<$%b%y@fR32?Qa z5!yCDw;xba#10OKP(%BaCN)&`D)pk?Hd6rCI+Qx~h$!rGs8I;I!uDd+Ww>l-?N8WF zj&R?gI?-{kXBrC}a?5;W^xXvY(*$m7Pv?K3xv64Q`uY+XC_two-}lNqo;33Wyj9)B zC6I~cjOIp3{8cgB_lRpIi^Toh+mfU38h#_5=Tw#px_U#?xf=d+ZbG`V4B%V5Gcmj* z&QvUQT|n~V22hM!;a+Mglgfr#`JsWZ7TR@jWf9%lM(#8#$`rBxA+D_1V+hx8ndgX8 zEWoPfs3fXXFTaA2It7aff}J$LagSN&&?F$6!olaP(Wmsx5I&Vn3Ijlcx`^`W<)WR2 zd_ZBvU~tUZa^cxz3##1W>f?NVmgyDr*C)@(RE%+M8%siPsFq@tcyl{Ya<+vNtaMF6 z=f0k>CLh}6TC9DQ)x_kf`j~1~96z^Mr^9%4%ej%bB&W+2=&~d@hw^jXyI77m-anU# zfYnL{Z+I#te5MjvT0GCHu0!P6V^U|seeu($-Q&GRZ8_pY`E0Ul=GvQYQ2z_YnKtTN=U?>M^d3P@@!ATbH3 zZdi%cy3aHG^~b%|4C>)M1MS#G43xg4`RkB~$I5p};#>rxVA$;kJ4iAJqV!FrfMzD{8&AF>@7bErQ1LMV6x|WTKC!_m)v-^cJ|V7n6!hd2${~7InVVD! zX^NJRHD!+A7eA#{{6eYBG6WJ=W|dJ;-fwhy>KP6PRRtB61KmasiKsVsh=7x)BdM2a zgkbnB-NH71gc=&gPGf7M?H8ax$_Ue$cVHx{(NKqxABHTi!w)sr$1?_*fA*IU)uB4@ zoINJ3-}jalzHS(tsJDwFnm>YI=ST0AtNEQMRC)*$j|Z28=F6)F+j(lYxT9<2pJItq zJ&s0nlbTOt%y=I>xPa%+bQwJ5Hu)wHg}s<1A>|$cd%_#K{R%B`*lA*}6Kl6obJBdi zdBtreTvz6U*5oVd{6#jh5e3Xx?LhN-Ir;GNr^Lk!)av`$k|IvKFMFM1hVkR)5;0B^>C11>Y`pSMO*Vm&yJhG*uoi!QsIpAh*2uOj%`l0V_|) zO2)rXqNYKnctVcP31zfW!Vw=4KTQ@e!mrdoQjcCq+7+!PQaK^-uM1259xJb=;E&z$ zJd4DpFRakO!YJ{gMC9nvDs6HH!oBb2LSB}+0Bhta9bA+N4qN8;V^26lPPLK{mBDDv z=SGZ90$W$T_Akg!C87tRWrGV6!_Gs>0c=>?n*u7+(oU8BbID90w}V+y0;HgUw(QzG zROCWpZ7fu1@$SmZ>Cu?oe^n4ydnyU>q-mqZ*-9i#;nJNwbH$SL)|p7>Z|6E_x+ekWjGd_IqyZ)3WGx z@yyRf<5H|aynLo{qcl(T$kPU(67i*6?MZHthaGKJjXG+G21By_^J?C4;= zb6)%4C&mT?Elk3?5|g@)Jz#C5n=6q(nsv|#g<+6taM>GcBW~m8Tc<~DQR{V-r{7R! zm6L>ycNPxn?(AhYy(~X!jGMo_|2}@vTmIx@N>AO``_V>Ia3A@YVN9b?N5wbwPaZox z9CWeghx;C8W(SjwnsrAX_CGH1J!2IAuG>~Yl((hsTl!Z?lPC) zzVDB;+FG&FEryJ)XRn6BoF`>na&0`14xAb>{@MM=v1d{Qq~_tw%lmcwly`+xlC4&w z{>o%}sedoxd21tLNGI^Swu6IFGr;Pps&Ye`*V{@G`mC+wBayN9Ju9iN3{(Mhc%OPs zPujgVXA^ZyU(_PCf5=?8y$<>D>MrP5?WSq6Mrm^eC%^5cyDkX!y^7yr(|L5A5~UA{ zJx<=;ttK-TEul_k1}XaE!Tu-)|JuwZ)Mf?Iu3jyAN;HDo=F>PTYg0rOUcK?GPiu*n zug`cuNulqY4KBRb9aJHpyGdFWQK5N5CjTA}_4T_e9}_A~HzK(}Dde(Mh1evYYj{&I zR^79uH_jE~pmt>E=&K^!Y0qBc;X;4Dp}^+}F(R?ml`+9>5{uKLZ%&$XIxMVFqs-H!2KDUPOJTnMEmmDv2#{>k)-)+Q>F|d zLmS|h_&#Hk1~Nm*?Amvk#L$cdhAfAuI3wNKYLRo`#6F`?_ae&t)v%|LEanFqV9O6O z{1j%N+FV2TQ4v^+!C^gxh1-~TG>w{H2E5bA6#P~9&zs)4R{zEW8&VpR z?bSDk=e5dhHd(Fc5tR(aa(5WK!dx<`m~S}d>4Jh$1(TLz>=UDVGuU_}peI)%n%|810mdrZ}-J%4d- zv>Wxhf_RJ%?!m>(6+g^}crF>=7h{_u1XQBI$-T=DPUh&rU(rhbzD0}$PIV0l>hU*9 zfpBf0e-BouR>ED77T0NHUDTkj6`Wk~{^Wj8)g3Vr@|mLwZ@UE(WWJ!J{IUisC`Pnj z!?CTiruv1a-;7nJl&4PI=MiKvHopx^Cjyvh!z5>wV-N>!weYl|s;F;xLgml|lVp)qL?aZ^ z^fF8m(h*;J`hJ|-4fJ2;a%C^tov@2KS8)_^8Yuo!y2{1DepddiKG!JXShyy{z;e=M z(`CNgA4(tT-W$amZp~@-RQaF-fHpy1>&V3hM(koIGn^I2e&bAVzG_@_K@UExWk+08 z`1X#zf}`Mxp{K=Bc%p4-El!BxOha(0fNxQN^kZHg#*Ssj3xdpp1d(z>6QSH|(E2`c zB{J&E?E$Ijd9)U!MDE7iuXtmG^se?@5PzwW}^^|$U@Mbvob%OUy5+q8vZXG zst==0zdKZw0W2VHPFUCf->s^!p&NTsBd94FnOf)8w9}S6*TC}cC={T&1qt&>Rw{O>l^F(!~Mtg z=b)|!)XW?W2mpi8U`^eBUjQynPIgX!IpANkhl#X@3t;~*8i*6tSN* zq|1M-<9ujz|DQAv1o&TQ-2bHUaKQ!&{^wpW$3OW4bHTdg|8pIL;~%_$xjFwK8#}BY z_&@iu!zQWzL4!Or9RE*V*dg5ir15b7;~gBJf1V2mC-@)l<$$pNC(j_*r28N1T%bm< z{(I=JVJ#VPJ$_Mk9uY|(NP?Y*LsSGLDGC9LigH23fE*&?+!7G5m>@q7w>WHio(DD| z&jWiDhlGd-hbWknU7TB73@9lkDk=yYRFSbacL4l72_#`}0`+u+jpYBH%X4sW0sJ*w z$fjoHW%gh_Y-+!z5b3qdWVIzd6qPv4Wldc@HDFVf>L$uOOb$j$ismwkiX2R)5H~L< zL{!ew-NW6+O3hqDj!D(c0VpD&s?Ox@;V8;uV`*W>t?42rY3FImZ6O17SF%=76_K%4 zcGj{~;Bd205YyDR=azHRlw_0Rwl(*1F$3zD$jh54ONmLD+S-Dopr-CdijHoaVjQAU n5*7k5pU~2SHF*PI;|jk9(~O`lzpNf+!8{-|8X5^DNwoh5MSvzF literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index bcd70169b..4035622bf 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -8189,5 +8189,13 @@ "link": true, "rounds": 1, "type": "eq" - } + }, + { + "id": "issue17215-annotations", + "file": "pdfs/issue17215.pdf", + "md5": "968848af6ef593a3d1d6aba030ef47cb", + "rounds": 1, + "type": "eq", + "annotations": true + } ]