From a31fbb53dba76736b37213b98b64937f05929a67 Mon Sep 17 00:00:00 2001 From: Pallavi Jadhav Date: Thu, 6 Feb 2014 13:58:03 +0530 Subject: [PATCH] fdo#74566:DOCX: Preservation tag for Break to Next Page Issue : 'Break to Next Page' gets converted to 'Page Break Before' in RT. XML diffrenece : - LO exports as in document.xml - The page break is written into wrong paragraph. Implementation : 1] Removed implementation to export . 2] Added a check to write in correct paragraph. 3] Modified code to handle SectionBreak() even if Text node has no string. It is required when DOCX contains a PageBreak with footer. 4] Written Export Unit Test case. Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport.cxx Reviewed on: https://gerrit.libreoffice.org/7891 Change-Id: I237b9c5fdd3083b441f6e81cd8442f458eccf1a0 --- sw/qa/extras/ooxmlexport/data/fdo74566.docx | Bin 0 -> 12675 bytes sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 20 +++++++++++++++++++ sw/source/filter/ww8/docxattributeoutput.cxx | 5 +---- sw/source/filter/ww8/wrtww8.hxx | 2 +- sw/source/filter/ww8/ww8atr.cxx | 17 ++++++++-------- 5 files changed, 31 insertions(+), 13 deletions(-) create mode 100644 sw/qa/extras/ooxmlexport/data/fdo74566.docx diff --git a/sw/qa/extras/ooxmlexport/data/fdo74566.docx b/sw/qa/extras/ooxmlexport/data/fdo74566.docx new file mode 100644 index 0000000000000000000000000000000000000000..b197b946a4a8fb53ae629d95ff8a74f2466035a0 GIT binary patch literal 12675 zcmWIWW@Zs#U}NB5U|>*W;8baEYGhw8%*?^O$zM(v$&!07$&Gu+0_7rmxmWU|r94!Y)FrNgA0yX=fk>iWyae@t_gXgTSU z$-5+n_k`Qw)7=M4-ZCh!GMlkUiKYCwg-w{zh+O6+8phvB8?tD52f6Xd9>EqY3l6q z4FP=XIhsF)wZD3@;o!D+GZ%f-YR*uqsSuiF@Z-|2p7gMDre7z>OwW9{rE;B$$=9i~ zK8GUW#w{Gk5|21vhBv|w`I)& z8cTwG_Wf%r41cjB^qot@q2H(X2fpbnZ+c=P75p*o5NGFqgC4hC!b%tRFyD{)onD-i z(ieFt#b-~c$M3`c7rnjPv|?4VlqI{JMn;&+?GDqvE!F4V@vnM2&GFi!v*x!;esD4{ z{Qu9)fSPmVCQ5Dp%)r3l$Hc(E&A`DFUzD0ttgi}Cn$mgQ&uz%e%fF^?GjYm7n;yf}iym!mb5yZYN;BTD zIHvW)zK~rLWIQ>8`zM}}{@Sy8*S_Ol!kK5yTy`sxH#7ac!`9;wX7ShfV$G%MxYFL= zINd3Ff;}<+re2a(j_0wW-Ym_pI#M|X=T+xUOj^Tb_8@c7)vqr9bvPGtcAo!S zQ#yw^DvrP8=Az2u>#gM#BXz`TtA9H;Z`RMSW5kw6YOJSQDlsxJ>||zOkYV6pEYB}W z(T8M|l>Fq<+|;}hPz?vmG>jSx7#QK9H$oX}Cj0ug7(j~oOS?tFVta3H5;wiMdfmr6 zy1^MO(@Ku<|Jy6Nnd{Udc0J#;S^Lgk_S_w{|7z$LCb{0tO-l<8DQ!6Q^q5$aZBD+w zUSx|(uAX+f;|8$_Yd1e$d{s7N(ji41-{wG%jT#Z2S7HkLR<%SWy^-3G=x!bF&9zj& zLiy@sod*3$DJN^~n^T+5WK8CMX8u#Ndt0vXiTZTwwY^Q*%jacpFll_DbC<&2t(tc{JlpG0j$dc^jl2J= zrtWwW^DWfgy#RfkBXgfdQPxkW<&1(35$$4FvXzzp&@nb9_?P zVb7Kmj&DsI8^jDAeT%suqADn6$>JGZx__T@ZrLk^6J-;3oSpssUct^?|CCoJ9Pbrf z5G2&EBvf!zL3owN$@TNMr;Dp>=v&njwxGi6+nq_TZ$9@AFP+4A+iP7+gTN`Zt!bK? zb1!>JM1>W3zV+ZrJK*%rjVFbpQcr?E+aU6XYS-drOL-0Qbe}~BY+XF9q~MbXuSxg} zZFc3Ao0Sb*HCEot`6{_6`_+-CkV9_;t!I5Rm@sK=pr`wb9EB&&lcoiHf319`vrGNc zwu$C*nSGC4_`qe^uxaT9cFBBK=gw6B%Jj4HLRO6Zq3<~ocS%3LEXJPH0Z3SLS#|AhCxZJ;$o|LEOqXaB;&-g zPkj5gzS-*FX|-w(PZ8Jn#YdIY{$Aic|8iSVU7FnS=Z{^5GizqdzRQ&yyI~0{|E*`` z3x9;ZSpG*m{9*X~B`+G{W+xq$T%q&hg-mv{%bmEz)>2a^d}!Vgeq|T?I-|UbXS%bb z{mePu-F>-4#xi_iG2>ZT^R@HOzH$%yRdw)K{5oy-Ugt|nhd2H3($t#x_r3Lu;B6n7 z__FseO#XW+EHaq?^vvk0ht7BVSFP^88b4>%$G4sOf49b}t8QB^{<(xHxbo$llSdrd+s3jOZ0qynz!G@8B^xC|Cn~wlds`ad)~%UU-PWXhAVXRHqA1c z^3qwV^T)Njk`JF&ex7#7FvW77nd6T4QJubqw|o1N|9-ak&5kYM8r*f(T*1b`utb`H zK@^s7OEOY(Q}w~5p3=KkZ_!z2m5-GUlQ+D*EB8%*ZKa3S9F`d$Tej@goOo|* z@Avz=yRL`2BsC?}DqSzU-95$Y`t)f__zy?KJ=63|$UEcOBf6)nKvUoc$BSb*nLERx zW4jD}ZKgbsIB`#^f2IG0fXQFXiXPdrt?!&vbs#-yfv0eK>p?d5(%uQdH&dBpldgSh z@ITPs_GI5Dfx|%uU2d!cxxl>D@D;Hf-CnF2C;Pt{lgL4LKEE1tA7&ze}&x zj%KZ8PRNqG{`%{#y;Y9q88*CcUKTdZ=&W1)+IuH6r#XBpoL9E}+8WcCn$CZx=A2pU zxBPNW>ZXWAY$@{6#Xq**%1SQ2c~E-7QS;{?de5b8-~H+V?}RSmeD~;Smj&+qH!*}ER+pC@bo zTshaa=sM>(Bal{=^9X{i4Gzi-YTmtSl@ukQ1wi{e)+B9Hz5by$7>pFfqR0+-U& z&UNe0|MTt5$?o-bfB)`w7yaPd=$`sx!ZDXcv!8Ih{VXA399F2Ru3WfJ^f1TePhDqK zrdS-D<<0tcUYE?5vzlo$%VjLBj%3}&MGD( zD$)J3*33!^&qGqCi$g!|qGkI1dhrZLod z``tenuu<#ozSGM#c8he$g$u)p82A~gj>MYSWtA|9={#J`ZT1Viy0v77d+1CcY=#+>YE%3FVU&AL`Akw#AzSH>TY3*NgAy9^)2&sU-QZ zA;s=e)%o8m^5#rAerk?V6u&gjuLl)fSH12;&3YqUVBJ0W)Eg=88&B_53+q1>wD~L) zU_G->M^jzh`$FLDY}4tpw53I?nz>YQYWu(;r$&v`DV(`Gqcym z7@BjwD)^fC)^7QRVD=!zt76k8^70x_ZDsH_QP=)oBz&eSkSio)@n+ABo7fJ1SntVL zRub!dEcwyuO`E-yZLHvU}zv$aO zJC9m=@A}j`ikGSTf^+lQk7v0n=gf3ICbftsjJ2Fux#yXbB>)p8)Na|(Vk-l5hgC0 zcN7)>vVXJJs!7{l_JX(c#P@~Ulzvn!>~y^05E8$sm;Dm!CBD7|g`1kqW|(MZ-&#|8 zDeScQYwmX?-22pf)~Z@}??0dUW|3v_P0O7X6OWzKd2{1dpRS2%#kZ8MLl-RUPe>e} zaX#g#eq>Dvzsz3N`#fqsp29vK=6WT(Sjeu%ukcgXeRIiUeFkh*+sbLKu{F#L3>!I+ z+GNG4B_)}8>BXRGZA;kgyxSH6webu7C%o9%r*hnvOVRJ*uGe=(3Zp}A@-H~D(Wk|H z!W7Z(udP*%uE@N!AY-Hdvb1Msz81XbHZN~F&zGPRTr_p6x~m!UO|4TY+fV)5ee+Cw zy7B9dB`w;VtKV>#RTuw!w7z@crUx>!Zc6T&uubT#)@|$Mt8KQwm1Ehc?$zw_)KAh; zrf!y=_>nu`s_tnm>`dl;d`9-OYv7#J#nM|(RVlB&cr<3iHI3C}=bW{+-rgv7Y<`Qu zej#(E`>VH!E5vrpkbW?uc~aT=Exz}TystVe^!?t|HUSt)~{LBxt1vWR0$;m4*MlXTE7QpKWsVcG6zG z`Ir94d|sz>-v7E>^T*>W7Jce|ym{xI4t4ueGdoNogfB|CrA6Q=r?9RSqqnFYL zu5#Vaezni@)K43&H41a`C%pC))N5FwvH6$no2KY}s>^2o=@WbAsd;ZT|Mz`=Y*|0| z2kz~=$mU!k6UY^=H+`|a+Fes&&%EEu{4_dWKeP_jf4RK*Bj4whw$4vKgmQ-LSKH)0 znZa`ZuNS_Bi|$qSShmSthYNPg%VFw(iT9k{_-gS-IqWw@Z|EFF35fo?Cv& z*QpD?R(xRl*b(+PanfA1n=e%k|CM?>ZStGYNqc9dq=%#GjDZOkvf z*3xp-J=+amt@78%d!$dXX!>BViv5AZNBJU2EiPSWt84BTeO7-{Q9C!Y)HLJHDL+Xa zOPxd04}Sg<|M-(M)~qVNK+KPck%3_iBLjm7tQA_GniPzbTYD}X^kOy?V0*Cpfwj)g z?Kh_?Z7SKW5cE;0=@&z0S()^iltVsQYy9(Xtx|}qI;}FZe`fv8Uk>qmnY$NXSeX{L znyYE)!Pb?*>-AsX>|LcY(?G(X(P}Gu;Oc*$l4joKnVs&j^3Rl28jew0=H6N+6210l z9%JtrO(%_hWy4t^Uh_<(>TVyMsoJBqv-h*!+pnRq@vHOO&Ie}5%x$&aWZg2M@9(UG z;uD*4VyDRK&R?ARNYN-#K=bzk`^t=%AE~pB+H=fJ6_UEVM`y9W@Jr^a~KlI(L5WKJQ+?({I+s6X}gTKMvJCT>1Oq-}&`>ZpSUT>3txWoyXOQIR)yyX4Wue9%mt{qBWvh+mocJ15QL|}kr~S;iKK@_)3zcl=EpynN zbWzy*?xC0)Thx-}7_)UJPe^^a(ML{A(Od5G4~{j*b%eDAJKnJ7%%3wo?a86DlV2<< zcyYpNNn4CWdsqD_K~Lo_+Zf|dQB{>E7W)XRbMhZxms~0>`2LW^6{(gTnz2={xE^Wp zocg})ZUoQfGGW`O=&VQ~8*9t!+UupFyo@eH>^jZc zz4LX;y`yKHRfM;39a#MK%b7sYm;2aPepp(5_PP%LrjS~nyvdJ}KYITE9O)MMDn~!! z6=xy45L1{FBisHsx0MACrO#b@VTYtx@yPPsH#qe~#V8goo$S zo=(<&dT@0*W4GL?bQ`N(KLfv}JUq1c_tL5@OuMF zNzV?RVm8j1TPUCyV3=wmptXCmrN*qEAGE_KpZ??{CXmaJ5W4xpMzhBYd>4dxFTU|X zH@<%IJ>~DyC2KYom~zYAyMIT`Nljrf_xHEaM_byx<+|1%`o1$u;OOSx8Ok;P&bPUL z*Zf|7zP|3-r1%oC3Eo5tGbF|Wuc^jZtc5eo| z>8iRP`JHoS$-G;dV-c)-_Ts$!>z8`-Q?0u%R|XgJ6?sBtV(Czy5YTxn8W-xfxBKhtkjO`Ej}&uZNi3%$19FS zmGAb}nf_Dj@Xl3FzZ7hYN$U)`eRiH?)gKx|F*Nd(9 zr!3vsX205E#Zy!D^>?);Po&Ice=7B2YP)46Ycz`<%O|C6-vX5k)z?1=|MW7ZO773I zww1v}dSzB#3npAn)Tr9{Fj-N3sakcglgks9s}aUb*)y&QIiy_tdvt!wFJ*(Rk{MIC zRiC~0wC0u(^M$5>>KF5Op856t!e+6vhlBEzeiVD2l9hS8CG}}yrmOADI`O>g`d1TR`V>SgFv zzQ=I^#NZWwUw5M7QE$S;tp~HRLiY$N{N;KYUdz3z%bdyO8r$NsqxXAG?OVRK(vFJh%YF9<>ip$eDwL(8UCMC{WE9*?I0Mu0O*Rn$5KCO8zjbYo`?^1N zkDy3V)2v6m3npw177p3%>AK+r=ctmw-j;d%#iu$=0dcwQa{m+{pbcU_KIQz$X!dgi#Jp#JN%l;>`)~dcnM^% zl9c-%!37T=-Q}0`-y^8A$t=QmEhu!SvBN^S^qkna?nV8}{i3@Vs?RO3x!S;XE^1N> zs~F?IN7?fZtaZ9qZ> zI)<0l3(X4@SM0d9m~C~n-G@c{LPBk>{m+jMc$lv6s?m4KcE)M!=8LQXjy9H8vw6yw zuWyd_JDTlY7H;Ha-hKJwZrdr9@2^Up_1kY;DzxWtdTr32;y#(bT_>|HJMNgXH1^eJ zfuL<%XGD#EJXHIncqq5f`n1aB`m|#rHT6fEA6Q=&zhor2eZSO)(zJbZ=e^*IFy1;T zQtj}!kDYc3>uhhPGn`uZs^{m5ri}HIHTc7AH2Y?6pSI+c%rCWDuP2$L$3}ZGT3@!l ze`@}v@Bf(@u*~>PP~FZ`#>l|%oC(yc;b2V3PYx)`FDTYe&M!&@^=cFrv5Zb(FfcIm z1ReA{Y{0Wu`6GYmyWC5B0wKBTjJG;HJ$M>-v>v&AXqJiBrqZXcJ#Vj#W@XRYc>nX} zzjJbSO;6pxob0-^NW`6mbwR|@)~Kg1N)5U50~2IJ=S-X0Bx9Ozam$W9CuaCXrarhC zBGn_Dz`TA*&Z&~VYv*2yB%i*fu(H?2xw0Tq(sM5VS+49;W+ki^ici?Q3#J6S7ivqq zauk$Rv6NQ%dTq*FhI9$92@B>NEfjeye7$kvxARSWmdRcZrQViX^;EAr8_Cc2X0Iso z#&xe(%qvO$@iY04U47NdFy7Xzy-5vSJ)5s^hC5Asc=_`FH{U*U&v<>=`2k~E!>&^z z+X55zwZ41Rckb$YaVf{NnKxFeIN+*#UEvqii2 zRrKs%EjB#g^N-Hx5$$K%YyEhAO;E_<56TztN3t$=Ut>2z(@ckB0GJ!N>T?``ZGJHh`K>bBgv zT0T`_Z{>FZ_j~>`pL(f#*Z+ET<9mwGivZPf@BiPPUA{Pf-*oATElQUe2qziQJ_h9P^Io8SUJAX5HpTn|2(spI?$x^!}gElg1!(gCz+HVF|B4S5DHF zpXV`g_UD++X8!Hp);9Y$-3eKfZ8sch|jHYkDL0my&hV+~{QClH&i{ALaczQ@P{Nx+O{t2@R4P4TUB#6&;c4 zopSczO{PyrV{7i;EEKg~%*`Ri5OGx}=9-&K5vx)9Qz40Yr_PGY{+aOb)Pd%u{W?1; zt1IVf&UKum_xJjGUE#cSDQoOj8%!zNC-OaS@>;H^_R%x%JTt1<_5ZD~T79D7h22LS zzWa;MU=5V3tKmq=x-90Se#q^|DYJ$njRheVHx|yVdeyr-aPgzF_1{md?0)EYDvZne zuCfajd9Ldcrd~1rvboW@J~`a>Ui?h1>cILPPqKfsa8GVlePbom zc;}VIl$qtq@-Z%wZ`W_xUbMRB-Z@^L*W#tyP48uOt8N!ByJhs^t@6V+^?{asj?Yu9 zatoK9x6o``u3LFC@6T$Ut9tkNc@s^GUVWJ(_)Lmv_YGSYbu*W8}&c(la^;*AYOKg`|;59w_?7f#Z`I3wpj!R6xY@ciPH~U3o z_p?CF>70LJCVBU}&E9^-Mr-W}_3-x+hH_y)Bo-u!PGFP@FUlm)9QgdKixxl8kPnVse3K&(q&;sXEP+7cII5wWzKlyT3hp@-r^_IyUiO9@dX5f!lERr zDXPo7@hD$FZ>X1SqiJ7-u)~ZQ%|~Z5914$PI23t=^D^9Y++mTEyWw|E;(m?F>Q`G- zIamDV`L=wY56e5-6oKeV&95F+udT1x(tG#wG#16h zSFD1hwwKsH(wlqAvE}EY$0`TU-WR`@Ue2)WB46;UpXa14Y(s4IT8>YCb5QZc@=BkF zC;WEZkIY+pkWsOE-D(S_7WXH54;=yu*Bm$7_PpkSt4&Dgon!xRi-r8)aml&i!Wx~x zTA;LwIW(t2|GUD&vhP+qQp0V^p1kxpwr}>)cR!Y!PN{x>Q||1!I_cfQdlsMH5xl3k z$EN0}>(-l&7IRu-U%ggr$&uZuoc7_N5$8c?3zd%lro{(&g_xZRw34p_0|f%t(^4c(bh8$TEdUdh|i3+ z{Gf8{^OTb6*yx}}t4sd1x9d;c|HqH5uJzsaZQdb928Kl}3=BfBx;8C8uOuWfDF@s# zTr$ZQv<9K|J8KnthiGcP{neoq9BL3u=)13 z{H3pBTbO>!UI{Z>(!FuLChJX2?SzNbPdD87mEd~h{)XjYE%)31`BmNSUa|ewi;6|6 z$^0psIIr*cvF&P5?blBUQ@dBrXG^_s(fUORfBN=^Qri!<$I9;sVc4849IZ2Gsa+^%D-V;S@M6Io2*JX?juj&3!mk}lEu za;P#uCfhwx>X6sA#P1b-`A4Tc_I&X|!CKJa=uf57McQl3mT%^2W;@Xu=YDhU*To!F zG8)qz-ft{u(9J$!eojK$TzZn|y$M{c*T1frVi8g|Z<+P!$b(NFB%D-_edvFZUG&S$ zU6E1)%2DXiosLdTUP5X}`k;0(+D{@&~?Kd%4TKb(`A? zj=~3lnvCbB?e)}=xxLBv>Ob4rZQC60e8^0{CU?G%cl+&gDbhTF*1ON7UsgJQ!E5=J z+-X0fzZyh7iS#+7l{n{U>b}D>?tl7h9KrtFP^H&UnNxatn4zMS1Tj|Fqh9_KiIn>m>4oqgt~b^*8-oP_fzbzi6o6w||eSw|-8U;oLgc zTuHJ1<=Yu6i&iq1r7SG+oZ(e|BHcxvagA&9#Pf~3tTj6pD9sl%4B3$7Dqs}Y@aLD% z4UR)|zq@%))QJ4ICbi(=Rn6+V=@Y&lZ|vR9@HA-AA12B$&#GrR~w$^FFyai_Q#BxGDF>rx6IZBU(}Av zAKniiu4ZJ?Wx%z{91=AM63d$N0B=+SP#3!*v@$U4VrF1~tmp%;;zQSnx&jbc<2^R$ zS}llfhm JAw>_w0{{$OWIzA_ literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 194b7c6d582b..73d3393d8f2d 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -3641,6 +3641,26 @@ DECLARE_OOXMLEXPORT_TEST(testFooterContainHyperlink,"footer-contain-hyperlink.do // Check the value of Target which is http://www.google.com/. assertXPath(pXmlRels,"/rels:Relationships/rels:Relationship","Target","http://www.google.com/"); } + +DECLARE_OOXMLEXPORT_TEST(testPageBreak,"fdo74566.docx") +{ + /* Break to next page was written into wrong paragraph as . + * LO was not preserving Page Break as . + * Now after fix , LO writes Page Break as the new paragraph and also + * preserves the xml tag . + */ + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; + + uno::Reference xParagraph2 = getParagraph(2); + uno::Reference xParagraph4 = getParagraph(4); + + getRun(xParagraph2, 1, "First Page Second Line"); + assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[2]/w:br","type","page"); + getRun(xParagraph4, 1, "Second Page First line after Page Break"); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index b27aadc8c433..46258f94593e 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -399,10 +399,7 @@ void DocxAttributeOutput::SectionBreaks(const SwTxtNode& rNode) if ( aNextIndex.GetNode().IsTxtNode() ) { const SwTxtNode* pTxtNode = static_cast< SwTxtNode* >( &aNextIndex.GetNode() ); - // If next node has no string - it is an empty node, so no need to output the section break - - if (!pTxtNode->GetTxt().isEmpty()) - m_rExport.OutputSectionBreaks( pTxtNode->GetpSwAttrSet(), *pTxtNode, m_tableReference->m_bTableCellOpen ); + m_rExport.OutputSectionBreaks( pTxtNode->GetpSwAttrSet(), *pTxtNode, m_tableReference->m_bTableCellOpen, pTxtNode->GetTxt().isEmpty() ); } else if ( aNextIndex.GetNode().IsTableNode() ) { diff --git a/sw/source/filter/ww8/wrtww8.hxx b/sw/source/filter/ww8/wrtww8.hxx index 755e36e5217f..fb63531bb2ee 100644 --- a/sw/source/filter/ww8/wrtww8.hxx +++ b/sw/source/filter/ww8/wrtww8.hxx @@ -699,7 +699,7 @@ public: sal_uLong GetSectionLineNo( const SfxItemSet* pSet, const SwNode& rNd ) const; /// Start new section. - void OutputSectionBreaks( const SfxItemSet *pSet, const SwNode& rNd, bool isCellOpen = false); + void OutputSectionBreaks( const SfxItemSet *pSet, const SwNode& rNd, bool isCellOpen = false, bool isTextNodeEmpty = false); /// Write section properties. /// diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 7f5f64e0359b..7178b96cd16d 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -398,7 +398,7 @@ bool MSWordExportBase::SetAktPageDescFromNode(const SwNode &rNd) // Es duerfen nur Funktionen gerufen werden, die nicht in den // Ausgabebereich pO schreiben, da dieser nur einmal fuer CHP und PAP existiert // und damit im falschen landen wuerden. -void MSWordExportBase::OutputSectionBreaks( const SfxItemSet *pSet, const SwNode& rNd, bool isCellOpen) +void MSWordExportBase::OutputSectionBreaks( const SfxItemSet *pSet, const SwNode& rNd, bool isCellOpen, bool isTextNodeEmpty) { if ( bStyDef || bOutKF || bInWriteEscher || bOutPageDescs ) return; @@ -419,9 +419,11 @@ void MSWordExportBase::OutputSectionBreaks( const SfxItemSet *pSet, const SwNode // Even if pAktPageDesc != pPageDesc ,it might be because of the different header & footer types. if (pAktPageDesc != pPageDesc) { - if (isCellOpen && (pAktPageDesc->GetName() != pPageDesc->GetName())) + if ( (isCellOpen && (pAktPageDesc->GetName() != pPageDesc->GetName())) || isTextNodeEmpty ) { - // Table cell is open and page header types are different,so do not output section break. + // Table cell is open and page header types are different,so do not output section break OR + // PageBreak is present but text node has no string - it is an empty node, do not prepare + // new page descriptor i.e. bNewPageDesc should be false. } else { @@ -486,6 +488,8 @@ void MSWordExportBase::OutputSectionBreaks( const SfxItemSet *pSet, const SwNode { bNewPageDesc |= SetAktPageDescFromNode( rNd ); } + if( isTextNodeEmpty ) + bNewPageDesc = false; } if ( !bNewPageDesc ) AttrOutput().OutputItem( *pItem ); @@ -3643,10 +3647,6 @@ void AttributeOutputBase::FormatBreak( const SvxFmtBreakItem& rBreak ) // From now on(fix for #i77900#) we prefer to save a page break as // paragraph attribute, this has to be done after the export of the // paragraph ( => !GetExport().bBreakBefore ) - if ( !GetExport().bBreakBefore ) - PageBreakBefore( true ); - break; - case SVX_BREAK_PAGE_AFTER: case SVX_BREAK_PAGE_BOTH: nC = msword::PageBreak; @@ -3663,7 +3663,8 @@ void AttributeOutputBase::FormatBreak( const SvxFmtBreakItem& rBreak ) break; } - if ( ( bBefore == GetExport().bBreakBefore ) && nC ) + if ( (( bBefore != GetExport().bBreakBefore ) && ( nC == msword::PageBreak)) || + (( bBefore == GetExport().bBreakBefore ) && ( nC == msword::ColumnBreak)) ) { // #i76300# bool bFollowPageDescWritten = false;