From b6a88f09c8346cf8ac7fbd58e3869994ed5d125f Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 24 Feb 2015 12:09:30 +0000 Subject: [PATCH] Patch from rojotek from github-18 - Handle documents with a picture-only header git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1661908 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/xwpf/usermodel/XWPFDocument.java | 2 +- .../poi/xwpf/usermodel/TestXWPFDocument.java | 15 +++++++++++++++ test-data/document/zero-length.docx | Bin 0 -> 10469 bytes 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 test-data/document/zero-length.docx diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java index 9adc39704..6a28db2a8 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java @@ -92,7 +92,7 @@ public class XWPFDocument extends POIXMLDocument implements Document, IBody { /** * Keeps track on all id-values used in this document and included parts, like headers, footers, etc. */ - private IdentifierManager drawingIdManager = new IdentifierManager(1L,4294967295L); + private IdentifierManager drawingIdManager = new IdentifierManager(0L,4294967295L); protected List footers = new ArrayList(); protected List headers = new ArrayList(); protected List comments = new ArrayList(); diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java index 7621404b8..85da27b9e 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFDocument.java @@ -337,6 +337,21 @@ public final class TestXWPFDocument extends TestCase { doc.getPackage().revert(); } + public void testZeroLengthLibreOfficeDocumentWithWaterMarkHeader() throws IOException { + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("zero-length.docx"); + POIXMLProperties properties = doc.getProperties(); + + assertNotNull(properties.getCoreProperties()); + + XWPFHeader headerArray = doc.getHeaderArray(0); + assertEquals(1, headerArray.getAllPictures().size()); + assertEquals("image1.png", headerArray.pictures.get(0).getFileName()); + assertEquals("", headerArray.getText()); + + POIXMLProperties.ExtendedProperties extendedProperties = properties.getExtendedProperties(); + assertNotNull(extendedProperties); + assertEquals(0, extendedProperties.getUnderlyingProperties().getCharacters()); + } public void testSettings(){ XWPFSettings settings = new XWPFSettings(); diff --git a/test-data/document/zero-length.docx b/test-data/document/zero-length.docx new file mode 100644 index 0000000000000000000000000000000000000000..eb34b47b1a5f854f785c09ab9a2f6ec4b315c176 GIT binary patch literal 10469 zcmaKS1yEee7A@}X5;Qg5 z)!E%=t=_%6Pwyow2?~Y=1O){Jl-R5+0`!}~zWvs+H88iMqkX@Y$4E(n3cv-NJ);Yq zu9#B=4UXOt3tAE1K>8&gpN@}0GMSXWt_r}k$cAJMw7FcJf0(oweaVte3k?H+5d(p(D_qqH9s+jhdE7{zh4{>X)N~A|4sk_vN^lnZc$gmB>&=et=t-xVA9b zW~Bj;4t+JM#7G2s!e?mLgrP$`)lsO*G zS;P3*Et?%~^jv{ibWEVaD7eU%6+(Pzzm0zcXIp z`PP+L-yr4_VL#1$UVgC#ld5~7;2bNfu2679d?&|U+=7!#M;*kFA?JbYVpHwyJmr29 zgt?109{x3pMOYeQOvw}}u`>N{oAi4hB7($6^@U5^36*(cBbByoMZyIJQ^);UTUPa+ z4EY;%YXoe9d`-Q>EBRlmo|&=5Khd2fe0!1m-k)#^f+nZ1t1XUwft*Uo4zCihVX6v% zc*n~+HUL}rh6V}v-|&9;U%dKOdJYx_miGSzTplz04pjmrA8OmiGhf}#JOfUem{l0ImJxh#tYlIKt`Ptn<(jA0B@Tq_2(KenK@I|F-r z6H6nzcV2`eBoTV(;XVV>h%fO`RL+aVTDL&DfCbI6v%3zUsSUOr;t0$vq9_oEr403Iu&~WacnzTG zcVidVP$i<(_1o5>CK6$u%H>Hb)KTrtvie77l_wJH>KBmd9Yoh1vP0fNLbL^lPAfEh zh_@@}7P_voX(edzO1y=A$LKf{QJ(*XVEpa-|BrZ-zcCtGS=uY==$ae6gDjU7knW{N zYP*6Nb~>zs^vfwgN7?jq&DsH0H=0tZnTwtyxdt>zQxOejXRRKmFC;IhR`8{x^FXj> zP;z9V%M+St;c_ZodH`%+$-zalaLPWFZ6m8zC_4>jn{x|en4~v-pj_ymkC&*noB$qk z4~(nohlFJC=oNtHoz^(VNseu)HI+j{{P~^8B>{SF@UDOXC$s&viC`*RJnE_Y8XQuu3)G_dy6a^GdjE&eC^A13usme}{uC$}ay+4ETCuZs zh&)Mn8v7=#>yG9t!&L%6q|@#QG`8(%Bj9CL)2$r!LFE~kg5e_r7zoiGt2>wMT-nLvJHQAM;Jdrc|xFOLWNP1)H=zN{!QWV{^QKDkHV0)a2S)o}{SDJxu> zmt2-=Voh$h)iaoWoyF3Lcb}8vUA6+F0&G&uxvkO&j#*&IS|1YJtC5-z6`Tm2LNW-T z8L0C$7}cNFbpQ!~tjLJ?*|848Ll!-L^Lz_rwMdi5rcSrA1VnR#xZ>ctW6f_KUs5oyNzbFBHmfbYibK z#B1vq8AS#M3$U_Lsi~`{X5w2aXXt#QIM`2+eGK5Xha<6iLJ|}dtmO(#Umw*4#hN92*yoo}S%#7sIMBeyIyS}{TOny^pDL=_j0eDCfykUjfm zJQ%lJ&L5)KGZ{NbO%p$;VJ@sYA?u|@Aiuj=1UR?mRh#P&31fPWZ(DRDir>xT z6VlTqXRN;j35VHdWMWzX2V=%eNa#^pcnXslLp)5xZDq{aQ@EfZa&thDE34wlH!zs8 zC#uxyv_#k|-8!tH!96J{(Y)c|Q_Gkw30j|}gEKJ@E{di#e(C^a6QH4Ztj&Gu4z(mkmDh${`#IFq6a5ACnssnszL!Uc5`@?1nX9r-2u+8*48 z#O`INk^yHI7P`8+g|&K(Ie;%fuKD?ZmKd-U%O>;H{@z|L?v)bBuaAy1%s4s+iUo| zZd;)58Q~fm>J9dGJ9KAo^0#+LF9O0y&CN%&`@Rx8VOh#%L5`BJAOs9P3ikAb?>^Of zB*W-dP@$osq8=5L$H(igVj4lV)mJslY*a4cEei*lwj0ROsNBQtm-a`1orYiI`qh-) zUQI78?`{jFEH1Kbqoc7#5L86WX6F8ALkvadJi+^5e0PYzhw^+SGlT;eD5lU0t+}9x z-YL+web79Jed=wt?&xwnngM-wC&y;$1ICeKF0ULhQ)4o${R&@#ecXhHN#MmqP5otJ zlvZZMjIQx==2o%8oD~l9V(>=;KG7`XJw`CU#0GP|ylDz$xBik!BxpE1UFW zPR=0M(`b8qSRql48y>u;=jUI=(Wi@YI4*ppwj6lXwAtV6YE*xv zHl(I|C``>KK_Ud=CSo4D&7_Poaii*fNzKqdYWSU$UlK9w2Up%l3JtYNpVdsjM|j#BC2{JOopIKG+ZJ9rx>S^2Xl z%mLS5I9Q<_~PKh@eGzBgBJuWEi_ zjNz0WB+{b8U6Uh^Q(YBV>oP(QJA*__?d~dfjhTU zume|oLG%QkY{+ir#SnNfOS*JXuh#RAw#j|UH>8jQHS>wpy2{C3o{j~M15#UdVh={*( zMI-abnUBN`S02#V9tQ@5M5U0y+ec4MP6DOO_iA?@&+ci?og5u&)LAF$Wx&YF$5}Ge zuH?)aQ!hfn0}KEg{SXjvr$>5O=<2G!hGY~3i#Y`Buj(O1^TFTs#NEwGPkT^I2-@a2G;2FSA%0Y0$YwF=(F0cROL@BIO88ds^M}RE85}A@_fLtj zA%|n1SZ@dLKBuUwSpxxrIl0tEgTf=V=F^`bT(>0^9UU9a`Ys};a#v9JAt%eDM>Z9K zoHPO8I# zZWw?`0~>9D{V1b-hD?n_EapuJ$tR z&BGkbcClIQ9!j%14UkMv<-=|CTUwIeUXDB1IJKP17^aJQ!`FE136qdu(P?$GMFd(9 z_Q@Sb78FqWsQc9%H_l5Zw#4i`7SlCQ?hRe00RVvBes+mpDc%tCjhJKS-DHSgJ3Pa^ z4lZ|4_OZUZJ^RY;j*#MnQ1Xb1c3hnpckEb8v}Fni$6!LF@@%ti7P1pcqkvKA($?PG)ofvZ1A+fv1S*%FLq;&Nxq^Q0vZn z!Hjh*ps;{AAt518{X|wo`*PJL(L}r55IRMqCXNZjhI=@8T=6quNoLq~mTa9j3YxjO zr7%NiXGRh|jvdlaQkUyYN>8B*cfk`bj{YlN?4?Ch`*UGJ=C5CYAysbJux@E?yh$Sa zSU)o|!lYbR`n-nE%rrHra|eb*gt3bdjY<0gLG|>Sn>A5lVodhV)N>c`i;AAMI{Y(M zVfM;RAi3^}cNC*EhYwad6X+3lZ z44tzV`mE>k-HzaWUy)fxkTmETjEVEI3-@^O^RNTy=^5VgOYiez0>6Zl>AG<4P5THU zfj-Mob31rrcZbHKp$39;Q)t8s#_Mdn3eQZiF@10&b7 zVTSsOim=)TY#JJ-3mhCugw{Kvk)HkEl#3Rwt?P@6!moN^{f0pLYNCu!$U*wyDSj3m zR%Azv_G}5AaHo?Hah2q+hV8HUawrKkr%Wyy9M!ELPNW`r$yXNY7?Qax@zzn_IFd!vJ7F*nH%hYGrRz!~;c zT4Y2-PeGNVqodjt(9;&!53lS`u}GMJ2SmPfU;&v@^_5rZ47q6+X}N>Gq16nt3_BB% zr&lz1a#rv=#rvzFj_&TVyfaq1(aJglYq}-hfKf|e27??~=qkilOPNw%?9PYmpJSOE zvxOyf;L9T=D+JvNb8K~O1i+hxIXRq$yKv^?Y*+U~5A$hhAW4O}G5Xzwms)`YA{iF! z5B^q`9kMtn8EM-Xv}NTi6v@{ss>X9EkTi48nYcjO(#khSTUeP%$->H6?TQpDv)@QB z(+FmxQ&Un35Wj*Pv)L1D2Ksta80ubMY9;CDsHt=nPF`B{gHh>D z<4!3I$Pfy6zoLOb(OHOi?^KhQ8A9K$wA5_JPN{Cq9}xrlCD2ijp5{x$E__tUWu>q% zqPs^vtdyDZNKVAerbJ z!jy=(xNBh%7+L2fNs0&^Zv>x28n-DOP)i3l(2_RrVLqRV5d(`{E1Hd5kG zGR%{pSF~(wb0*&;L}lpAjl~Lc<~s31!?*@jlB^t*22j1-D}#Elak79)hoZUyMp>eV zn;Z*#NEA&+Bj@IYKmRoPMtw?3#mRww^tne)DZGJnImj`5$SMlMg@5gmuFfH4W?B=BYF}0Ija;T}mNkOGP-wTBC z2L`;i1eR6}Z+Pmm^0HO2N+>mFF{Bjs?AOvB@Luu5q6`~Cdm-7qw*72WdpH*td0vkAh75qwYsx){s9ssRm2_G47H)=t6Q?UT{}l1#!A7Z)eR zO_hPzK^P*Mn84ra@0yED9YKnc)Bs(zx~U$rmBDe4Te-kAFxWvy41>imgQ#L%Nv1V_ zwOs6+X@D~VNThiV86otVZFt$48U5tqt7%uoS-p8WZ8n-dsTb;Wk2U4w*O3kseR+8i zm(KuLcX0D%?vZ`k3qP8>pr)n{8XP=za}IJ`fGM$&WnyIDAUIpdmw2Q)m z^2}A+v^BqLtIQb&ZBrG@c>(sTyS=s*H#G_g4Ozga_WAhuE<8NEi->Tke5by?_wQw|6j+l$12dP*GL+CIe7w z$J3a`@lszhskkS=_uYgjt=A>|kw1#KH}$D;2s_GqqTJj2jw{izMj$zb@1@Y-7)G%8YEU^eVmXoT&HQ z$Eq>0v3#DdywysYTJ7AQ)V$DC?`@;8CdR>hlQfk|iKH(Jc6yy6APgLns6VZg@Mwb{ zv%HS(+Bx1*<5b_E8k6tsFeBcVy-1kZh(}5ZOG*8FJF7wE`O4p3kP%uZKhHo#OiVoT zL*#i%QwfK&C9-R5netMds;CO=o39(d$GB>*FsnpiZyEpuiD4jIgOUrvu-7apM;&7| z|0GQT41@+G79JKhA_)g%?2UO336ciFF4WWG3B)1@9EXs!x(jPj4Ht9DO@pkg0g-O# z@_o|-e3G)kloU20TT$Vw1;`At^=C;{J`dL#O#~rrm(Lk8V7!^sm`*#TXGdp$Nkj1U<_AWsQuuicXdV>BueI83f!msp9OQEBm~4p zagec`DSQNg*2c$?=9;^DC!nT=w=`LPd?FiV3zQFSE}y*CAB^g>=)87FVwd89{&pUrBoaBGCkXfQfdg;*8x#!BGIRZnbSaeSR z0RhtQG-rcj=DDA`4@6g9yzlJwIhcNVc9NR% zVQ)kCEDD7nsW`btMDbeH*_H9pb~)Yx9xOhb&O$g*TVhN-J9%v?#`mTH+HLu8k~Mrg zN6WYp7~Mk1+Cc7F;&B$*x2@mD5V*05yyj=}jwH<&a9EqaMP!BsTmENA3#TN0X0aOir>ZJDtnMX;`KH(XO~G_!a+1Rdb! zL6Xe0K+inzWFpC?GzKHZg}K3x^?Deh4uBKxfOU+QY^xn?!@u5m=+z=#J9J3&XEcmZ|8P2^U!4aQzSU2B9#dQK;ne#c zO*)9k-^}Y@tCuIi*5p53I57ePi>4QW`=!tACtHwZ9V0|2?T&4`6kr#s%aH~Fp|he# zGHx?m%Z_x#Uy)KRi21wxzDwJ|d95^3*){Ozbqf+)w05CVWY2<#eJqg}afi7k zP*o#ORWoldOKj}onD2ew1V@g-KD-r~Mj`)g-XQ)xZ|v+{%nkl3GxaIyyic3w4lU$+ zH*p=P_z>?FX(*CeDNxTYmS)!34@;NLewRm12-4qK;Y3PL6gHhW*4hE1O46gJRPoE% zA5HAZZUGO(0_mxOhc0B6R-} z?2sz)yY=Vn&W|*~aMP`Dmxoi8F>#<=+{Q~FK0N2vffV;qSg9mEQH^S6bNlB%Zfr7E zqzp7qWW=~a#YrXyQ*j7GW~9ngObjKj%W_O!OF(^p3L??h-6kp8R+8Ke8EQO2`c(`n zBc$rOevVi4<->=D!K7IRaMxAcBDdV7L{fsEtIjA{#nerm^0%~~h#10;Cmlu|J!agm zj+;XYa1U8dt!X;zj#I!P?I0WAc2dU;qJzcHMOYTiimEJldJamAdCClQ4jClR!c6&6 zzY~Y)QkOX#9~y7`>YGd`QeJd!>=I)P~S+eiH)<C_?^`Q1Z?maT=^M(~Y|c>*U=KT45~5Bu=O}PmgCIa( zm&bJO6nI5m33-ZugGq#K8RZJxpgFmq&%ZOTwVOWvV%&|xdm8BbytV7he8ZT1Un!Jl z#vwf_*(t%n`@p>~A-?2lMLE?mabWcxnXM57KpJn6i3I&`k@?>e=8-#Mc9@v~-tVo)XZQLnt#SB7~j=xjFGIE0ftiJorNH#-LMt17X`cl6xnj zKxDK>_7|oSvznEGJu!ma@JfuD>^3p=;JLWj5N@J4sC(T)pa)D=1{Acc-RK1$MSea3 z(7wlL=DWqd$1MKg)tbQ~<`R@^4W5V)=nSfh^HI@-t|0qgOJ_kpgv;h+`jmdy;f^h> z7_y;yiiLR57)$5 zLP4^=8J_lJS8ULZN^Oz;rn|b-H=8}j8PjNa@*r*99b1!^j!Fyv*9+qN*j8dq=cKY*0gI` z+!p;AAVo3VzO~go;8vpX97ltc^RcY2np_ydc#!jh>BYX~y|8{Xiy9BIAPs9!js?OY zzHvYof^Gs>SUpzqp2SaMk#kOr;{NGtw6@IO;kdKP(@KfZ6c*vXAj91?Q9`q(h=Ds~X?7ylT-h=nQ0QIbF z|0-=;L{CWf5~2m1d4vSG!C1_Yo3vv6s$gcQ4(;a>jKr&!1usD_hXb+E`92zK5Pc#kt-W_=vQL zB&bfWN74ACUB{2T8lq1F2MVvJvYYZ$$b?I`>24PWdUdY78qyeyK6d(5rf%meohLT9QX*fhM7muH@6H5o^i zsQpU5{fMQ5X%U-()aC}udQy_Mn$k0C7Bhb>SiY@F&%4sEu6e>(^07W;zHhpl&1N z$JAv%+hZYJITJ zFuahAdDIZl$M92K5+4P5$Tg#pHa^Heqk8;LpcjiwktHO_mEVA- zWh_laCGha>f8F~WVQ94IaqKscirs+sBueGBBKLFwBx9x>L{4_YL6FpB+wU6E#kb@Q zuLOfc;aa`!!|eqDnu-euRpnh?Q+bYOA2xYiPWVf<^vK_2BKEQ2K8W;ra?SDTSLFE9)BsR z{%q-YvC8|j{l^I3a@b!j{Vu}!)BSfj#=D~B9|HsXkNf}VTmJO_{q^QuwDFJWyb=Fb z_kT(_{%qp+o!)z9{m0~R{?o*7Z$*E4|GpZ(?*{*|V7$Na|95Zrr}OXW{(s5)NcbP; z-v{7N_urH0|33LE(QgU#KP$wa-oGb||LuI8_&4vr)9;_|zX$kxR{6&`N&cTXMphCW S;{7JLw-3ZyYz&dU|NB2GD7i}j literal 0 HcmV?d00001