Modified: poi/site/publish/changes.html URL: http://svn.apache.org/viewvc/poi/site/publish/changes.html?rev=1800210&r1=1800209&r2=1800210&view=diff ============================================================================== --- poi/site/publish/changes.html (original) +++ poi/site/publish/changes.html Wed Jun 28 23:22:37 2017 @@ -264,6 +264,32 @@ if (VERSION > 3) { +<a name="3.17-beta2"></a> +<div class="h3"> +<h3>Version 3.17-beta2 (2017-09-??)<a title="Permanent link" class="headerlink" href="#3.17-beta2">#</a> +</h3> +</div> + +<a name="Changes"></a> +<div class="h4"> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes">#</a> +</h4> +</div> +<table class="ForrestTable" cellspacing="1" cellpadding="4"> +<thead> +<tr class="b"> +<th>Type</th><th>Bug</th><th style="min-width: 100px;">Module</th><th style="width: 100%;">Description</th> +</tr> +</thead> +<tbody> + +<tr class="b"> +<td style="text-align: center;"><img class="icon" alt="fix" src="skin/images/fix.png" title="fix"></td><td><a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=61182">61182</a></td><td>OPC</td><td>Invalid signature created for streamed xslx file</td> +</tr> + +</tbody> +</table> + <a name="3.17-beta1"></a> @@ -291,9 +317,9 @@ if (VERSION > 3) { </ul> -<a name="Changes"></a> +<a name="Changes-N10054"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10054">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -431,9 +457,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N1020E"></a> +<a name="Summary-N10238"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N1020E">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N10238">#</a> </h4> </div> <ul> @@ -446,9 +472,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N1021E"></a> +<a name="Changes-N10248"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1021E">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10248">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -514,9 +540,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N102E8"></a> +<a name="Summary-N10312"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N102E8">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N10312">#</a> </h4> </div> <ul> @@ -529,9 +555,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N102F8"></a> +<a name="Changes-N10322"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N102F8">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10322">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -657,9 +683,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N104B4"></a> +<a name="Summary-N104DE"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N104B4">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N104DE">#</a> </h4> </div> <ul> @@ -676,9 +702,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N104CA"></a> +<a name="Changes-N104F4"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N104CA">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N104F4">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -868,9 +894,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N1077C"></a> +<a name="Summary-N107A6"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N1077C">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N107A6">#</a> </h4> </div> <ul> @@ -893,9 +919,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N1079C"></a> +<a name="Changes-N107C6"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1079C">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N107C6">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -1101,9 +1127,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N10A8D"></a> +<a name="Summary-N10AB7"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N10A8D">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N10AB7">#</a> </h4> </div> <ul> @@ -1120,9 +1146,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N10AAF"></a> +<a name="Changes-N10AD9"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10AAF">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10AD9">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -1316,9 +1342,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N10D65"></a> +<a name="Summary-N10D8F"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N10D65">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N10D8F">#</a> </h4> </div> <ul> @@ -1335,9 +1361,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N10D87"></a> +<a name="Changes-N10DB1"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10D87">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10DB1">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -1443,9 +1469,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N10EDC"></a> +<a name="Summary-N10F06"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N10EDC">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N10F06">#</a> </h4> </div> <ul> @@ -1471,9 +1497,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N10F0A"></a> +<a name="Changes-N10F34"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10F0A">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N10F34">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -1651,9 +1677,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1116B"></a> +<a name="Changes-N11195"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1116B">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11195">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -1907,9 +1933,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N114E9"></a> +<a name="Summary-N11513"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N114E9">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N11513">#</a> </h4> </div> <ul> @@ -1926,9 +1952,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N114FC"></a> +<a name="Changes-N11526"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N114FC">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11526">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -2114,9 +2140,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1177A"></a> +<a name="Changes-N117A4"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1177A">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N117A4">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -2226,9 +2252,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N118DE"></a> +<a name="Summary-N11908"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N118DE">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N11908">#</a> </h4> </div> <ul> @@ -2241,9 +2267,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N11906"></a> +<a name="Changes-N11930"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11906">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11930">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -2373,9 +2399,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N11AA9"></a> +<a name="Changes-N11AD3"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11AA9">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11AD3">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -2534,9 +2560,9 @@ if (VERSION > 3) { </div> -<a name="Summary-N11CAF"></a> +<a name="Summary-N11CD9"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N11CAF">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N11CD9">#</a> </h4> </div> <ul> @@ -2619,9 +2645,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N11D2C"></a> +<a name="Changes-N11D56"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11D2C">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11D56">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -2699,9 +2725,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N11E09"></a> +<a name="Changes-N11E33"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11E09">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11E33">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -2843,9 +2869,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N11FDD"></a> +<a name="Changes-N12007"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N11FDD">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12007">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -2887,9 +2913,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N1203F"></a> +<a name="Summary-N12069"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N1203F">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N12069">#</a> </h4> </div> <ul> @@ -2917,9 +2943,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N12055"></a> +<a name="Changes-N1207F"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12055">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1207F">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -2949,9 +2975,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1208D"></a> +<a name="Changes-N120B7"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1208D">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N120B7">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -3241,9 +3267,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N12485"></a> +<a name="Changes-N124AF"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12485">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N124AF">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -3417,9 +3443,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N126D6"></a> +<a name="Changes-N12700"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N126D6">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12700">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -3509,9 +3535,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N127E6"></a> +<a name="Changes-N12810"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N127E6">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12810">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -3681,9 +3707,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N12A28"></a> +<a name="Changes-N12A52"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12A28">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12A52">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -4037,9 +4063,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N12F1B"></a> +<a name="Summary-N12F45"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N12F1B">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N12F45">#</a> </h4> </div> <ul> @@ -4069,9 +4095,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N12F3D"></a> +<a name="Changes-N12F67"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12F3D">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N12F67">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -4337,9 +4363,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N132DB"></a> +<a name="Changes-N13305"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N132DB">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N13305">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -4553,9 +4579,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N135A5"></a> +<a name="Changes-N135CF"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N135A5">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N135CF">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -4897,9 +4923,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N13A2D"></a> +<a name="Changes-N13A57"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N13A2D">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N13A57">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -5061,9 +5087,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N13C30"></a> +<a name="Changes-N13C5A"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N13C30">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N13C5A">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -5173,9 +5199,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N13D85"></a> +<a name="Changes-N13DAF"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N13D85">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N13DAF">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -5353,9 +5379,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Summary-N13FDC"></a> +<a name="Summary-N14006"></a> <div class="h4"> -<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N13FDC">#</a> +<h4>Summary<a title="Permanent link" class="headerlink" href="#Summary-N14006">#</a> </h4> </div> <ul> @@ -5438,9 +5464,9 @@ if (VERSION > 3) { </ul> -<a name="Changes-N1404C"></a> +<a name="Changes-N14076"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1404C">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N14076">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -5498,9 +5524,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N140EA"></a> +<a name="Changes-N14114"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N140EA">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N14114">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -5678,9 +5704,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1432F"></a> +<a name="Changes-N14359"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1432F">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N14359">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -5806,9 +5832,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N144BE"></a> +<a name="Changes-N144E8"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N144BE">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N144E8">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -6165,9 +6191,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N14985"></a> +<a name="Changes-N149AF"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N14985">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N149AF">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -6326,9 +6352,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N14B94"></a> +<a name="Changes-N14BBE"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N14B94">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N14BBE">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -6565,9 +6591,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N14EC7"></a> +<a name="Changes-N14EF1"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N14EC7">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N14EF1">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -6812,9 +6838,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N15220"></a> +<a name="Changes-N1524A"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15220">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1524A">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -6995,9 +7021,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N15480"></a> +<a name="Changes-N154AA"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15480">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N154AA">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -7102,9 +7128,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N155CC"></a> +<a name="Changes-N155F6"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N155CC">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N155F6">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -7137,9 +7163,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N15610"></a> +<a name="Changes-N1563A"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15610">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1563A">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -7208,9 +7234,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N156CF"></a> +<a name="Changes-N156F9"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N156CF">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N156F9">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -7259,9 +7285,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N15740"></a> +<a name="Changes-N1576A"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15740">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1576A">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -7670,9 +7696,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N15CB2"></a> +<a name="Changes-N15CDC"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15CB2">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15CDC">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -7797,9 +7823,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N15E46"></a> +<a name="Changes-N15E70"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15E46">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15E70">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -7892,9 +7918,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N15F6B"></a> +<a name="Changes-N15F95"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15F6B">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N15F95">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8212,9 +8238,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N163B5"></a> +<a name="Changes-N163DF"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N163B5">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N163DF">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8323,9 +8349,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16513"></a> +<a name="Changes-N1653D"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16513">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1653D">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8378,9 +8404,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1659F"></a> +<a name="Changes-N165C9"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1659F">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N165C9">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8534,9 +8560,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16787"></a> +<a name="Changes-N167B1"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16787">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N167B1">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8602,9 +8628,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16837"></a> +<a name="Changes-N16861"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16837">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16861">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8646,9 +8672,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16893"></a> +<a name="Changes-N168BD"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16893">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N168BD">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8674,9 +8700,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N168B9"></a> +<a name="Changes-N168E3"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N168B9">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N168E3">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8710,9 +8736,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N168FA"></a> +<a name="Changes-N16924"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N168FA">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16924">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8746,9 +8772,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16938"></a> +<a name="Changes-N16962"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16938">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16962">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8786,9 +8812,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1698B"></a> +<a name="Changes-N169B5"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1698B">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N169B5">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8818,9 +8844,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N169C0"></a> +<a name="Changes-N169EA"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N169C0">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N169EA">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8846,9 +8872,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N169E6"></a> +<a name="Changes-N16A10"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N169E6">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16A10">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -8898,9 +8924,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16A57"></a> +<a name="Changes-N16A81"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16A57">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16A81">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9054,9 +9080,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16C60"></a> +<a name="Changes-N16C8A"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16C60">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16C8A">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9099,9 +9125,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16CB6"></a> +<a name="Changes-N16CE0"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16CB6">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16CE0">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9151,9 +9177,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16D18"></a> +<a name="Changes-N16D42"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16D18">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16D42">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9246,9 +9272,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16E0A"></a> +<a name="Changes-N16E34"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16E0A">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16E34">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9281,9 +9307,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16E48"></a> +<a name="Changes-N16E72"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16E48">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16E72">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9334,9 +9360,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16EB6"></a> +<a name="Changes-N16EE0"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16EB6">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16EE0">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9365,9 +9391,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16EE8"></a> +<a name="Changes-N16F12"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16EE8">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16F12">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9396,9 +9422,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16F1A"></a> +<a name="Changes-N16F44"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16F1A">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16F44">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9443,9 +9469,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16F7C"></a> +<a name="Changes-N16FA6"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16F7C">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16FA6">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9470,9 +9496,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16FA2"></a> +<a name="Changes-N16FCC"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16FA2">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16FCC">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9513,9 +9539,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N16FEC"></a> +<a name="Changes-N17016"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N16FEC">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17016">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9540,9 +9566,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N17012"></a> +<a name="Changes-N1703C"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17012">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1703C">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9567,9 +9593,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N17038"></a> +<a name="Changes-N17062"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17038">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17062">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9594,9 +9620,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1705E"></a> +<a name="Changes-N17088"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1705E">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17088">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9639,9 +9665,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N170A8"></a> +<a name="Changes-N170D2"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N170A8">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N170D2">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9666,9 +9692,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N170CE"></a> +<a name="Changes-N170F8"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N170CE">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N170F8">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9719,9 +9745,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N17130"></a> +<a name="Changes-N1715A"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17130">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1715A">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9748,9 +9774,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N17156"></a> +<a name="Changes-N17180"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17156">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17180">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9793,9 +9819,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N171AC"></a> +<a name="Changes-N171D6"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N171AC">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N171D6">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9838,9 +9864,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N171F6"></a> +<a name="Changes-N17220"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N171F6">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17220">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9871,9 +9897,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N17228"></a> +<a name="Changes-N17252"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17228">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17252">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9898,9 +9924,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1724E"></a> +<a name="Changes-N17278"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1724E">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17278">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9925,9 +9951,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N17274"></a> +<a name="Changes-N1729E"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N17274">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1729E">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9952,9 +9978,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N1729A"></a> +<a name="Changes-N172C4"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N1729A">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N172C4">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -9979,9 +10005,9 @@ if (VERSION > 3) { </h3> </div> -<a name="Changes-N172C0"></a> +<a name="Changes-N172EA"></a> <div class="h4"> -<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N172C0">#</a> +<h4>Changes<a title="Permanent link" class="headerlink" href="#Changes-N172EA">#</a> </h4> </div> <table class="ForrestTable" cellspacing="1" cellpadding="4">
Modified: poi/site/publish/changes.rss URL: http://svn.apache.org/viewvc/poi/site/publish/changes.rss?rev=1800210&r1=1800209&r2=1800210&view=diff ============================================================================== --- poi/site/publish/changes.rss (original) +++ poi/site/publish/changes.rss Wed Jun 28 23:22:37 2017 @@ -1,33 +1,5 @@ <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd"> <rss version="0.91"><channel><title>Apache POI Changes</title><link>https://poi.apache.org/changes.html</link><description>Apache POI Changes</description><language>en-us</language> -<item><title>XSSF: fix(bug 61203)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61203) - XSSF: XSSFDrawing.getAnchorFromParent handles CTOneCellAnchor incorrectly, ignores CTAbsoluteAnchor</description></item> -<item><title>SXSSF: fix(bug 56557)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 56557) - SXSSF: Output file get corrupted with SXSSFWorkbook and "chart sheet"</description></item> -<item><title>HSLF: fix(bug 61045)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61045) - HSLF: Allow for extra bytes in FormatRecord</description></item> -<item><title>SS Common: add(bug 52063)</title><link>https://poi.apache.org/changes.html</link><description>add by POI Developers (bug 52063) - SS Common: Add formula support for LOOKUP(lookup_value, array).</description></item> -<item><title>SL Common: fix(bug 61169)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61169) - SL Common: Text with Japanese characters overflows textbox</description></item> -<item><title>XSSF: add</title><link>https://poi.apache.org/changes.html</link><description>add by POI Developers - XSSF: XSSFTable improved support for creating columns and setting table areas, without needing to use CT classes</description></item> -<item><title>XSSF: fix</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers - XSSF: XSSFTable should format numeric/date cells when used as Column Header names as Excel does</description></item> -<item><title>HWPF: add(bug 61162)</title><link>https://poi.apache.org/changes.html</link><description>add by POI Developers (bug 61162) - HWPF: En-/decryption support for HWPF</description></item> -<item><title>XSSF: fix(bug 60230)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 60230) - XSSF: Round trip workbook encryption and decryption</description></item> -<item><title>XSSF: fix(bug 58325)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 58325) - XSSF: XSSFDrawing.getShapes() returns zero if sheet has more than one embedded OLE object</description></item> -<item><title>SL Common: fix(bug 61119)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61119) - SL Common: Fix preset shape rendering and shading</description></item> -<item><title>HSSF: fix(bug 61059)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61059) - HSSF: Allow workbooks to contain more than 32k names</description></item> -<item><title>XSSF: fix(bug github-55)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug github-55) - XSSF: Allow XSSFNames set with a long name that looks similar to a cell address</description></item> -<item><title>SXSSF: add(bug github-25)</title><link>https://poi.apache.org/changes.html</link><description>add by POI Developers (bug github-25) - SXSSF: Add lock/unlock sheet protection and tab colors</description></item> -<item><title>SS Common: update(bug github-32)</title><link>https://poi.apache.org/changes.html</link><description>update by POI Developers (bug github-32) - SS Common: Speed up Irr() formula evaluation</description></item> -<item><title>scratchpad: add(bug github-52)</title><link>https://poi.apache.org/changes.html</link><description>add by POI Developers (bug github-52) - scratchpad: Add a function to convert an HSSFWorkbook to an HTML document from an InputStream</description></item> -<item><title>XWPF: fix(bug github-53)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug github-53) - XWPF: fix NPE when iterating over paragraphs in certain *.docx files</description></item> -<item><title>XSSF: update(bug github-54)</title><link>https://poi.apache.org/changes.html</link><description>update by POI Developers (bug github-54) - XSSF: Decrease execution time and memory consumption when adding XSSFPictures to an XSSFWorkbook</description></item> -<item><title>HPSF: fix(bug 52117)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 52117) - HPSF: Invalid "last printed" summary field value</description></item> -<item><title>XSSF: fix(bug 60352)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 60352) - XSSF: Text extraction: Don't include the text "null" for empty cells</description></item> -<item><title>HPSF: fix(bug 52372)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 52372) - HPSF: OutOfMemoryError parsing a word file</description></item> -<item><title>HPSF: fix(bug 61062)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61062) - HPSF: Various HPSF related fixes</description></item> -<item><title>XSSF-SAX: fix(bug 61034)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61034) - XSSF-SAX: Call to XSSFReader.getSheetsData() returns duplicate sheets</description></item> -<item><title>SS: fix(bug 61049)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61049) - SS: Fix order of two built-in formats</description></item> -<item><title>XSSF: add(bug 61021)</title><link>https://poi.apache.org/changes.html</link><description>add by POI Developers (bug 61021) - XSSF: Extract Excel 2013 absPath info from xlsb</description></item> -<item><title>HSLF: fix(bug 60998)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 60998) - HSLF: HSLFTable.setRowHeight sets row height incorrect</description></item> -<item><title>XSSF: fix(bug 60996)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 60996) - XSSF: Multiple embedded objects on same sheet are ignored</description></item> -<item><title>HSLF: fix(bug 60993)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 60993) - HSLF: Grid and rowspan calculation in table cells is wrong</description></item> -<item><title>XDGF: fix(bug 60973)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 60973) - XDGF: Support for "PolylineTo" as well as existing alternate spelling "PolyLineTo"</description></item> +<item><title>OPC: fix(bug 61182)</title><link>https://poi.apache.org/changes.html</link><description>fix by POI Developers (bug 61182) - OPC: Invalid signature created for streamed xslx file</description></item> </channel></rss> \ No newline at end of file Modified: poi/site/publish/encryption.html URL: http://svn.apache.org/viewvc/poi/site/publish/encryption.html?rev=1800210&r1=1800209&r2=1800210&view=diff ============================================================================== --- poi/site/publish/encryption.html (original) +++ poi/site/publish/encryption.html Wed Jun 28 23:22:37 2017 @@ -265,11 +265,11 @@ if (VERSION > 3) { <h3>Overview<a title="Permanent link" class="headerlink" href="#Overview">#</a> </h3> </div> - + <p>Apache POI contains support for reading few variants of encrypted office files: </p> - + <ul> - + <li>Binary formats (.xls, .ppt, .doc, ...)<br> encryption is format-dependent and needs to be implemented per format differently.<br> Use <a href="https://poi.apache.org/apidocs/org/apache/poi/hssf/record/crypto/Biff8EncryptionKey.html"> @@ -278,7 +278,7 @@ if (VERSION > 3) { Setting a null password before saving removes the password protection.<br> The password is set in a thread local variable. Do not forget to reset it to null after text extraction. </li> - + <li>XML-based formats (.xlsx, .pptx, .docx, ...)<br> use the same encryption logic over all formats. When encrypted, the zipped files will be stored within an OLE file in the EncryptedPackage stream.<br> @@ -292,12 +292,12 @@ if (VERSION > 3) { <a href="http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html">JDK7</a>, <a href="http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html">JDK8</a>). </li> - + </ul> - + <p>Some "write-protected" files are encrypted with the built-in password "VelvetSweatshop", POI can read that files too.</p> - + <a name="Supported+feature+matrix"></a> @@ -305,7 +305,7 @@ if (VERSION > 3) { <h3>Supported feature matrix<a title="Permanent link" class="headerlink" href="#Supported+feature+matrix">#</a> </h3> </div> - + <table class="ForrestTable" cellspacing="1" cellpadding="4"> @@ -346,7 +346,7 @@ if (VERSION > 3) { </tr> <tr class="b"> - + <th colspan="1" rowspan="1"></th> <th colspan="1" rowspan="1">XSSF</th> <th colspan="1" rowspan="1">XSLF</th> @@ -391,7 +391,7 @@ if (VERSION > 3) { </tr> </table> - + <p>*) the xor encryption is flawed and works only for very small files - see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=59857">#59857</a>. </p> @@ -399,7 +399,7 @@ if (VERSION > 3) { <p>**) the <a href="https://msdn.microsoft.com/en-us/library/cc313071(v=office.12).aspx">MS-OFFCRYPTO</a> documentation only mentions the RC4 (without CryptoAPI) encryption as a "in place" encryption, but - apparently there's also a container based method with that key generation logic. + apparently there's also a container based method with that key generation logic. </p> @@ -409,12 +409,12 @@ if (VERSION > 3) { <h3>Binary formats<a title="Permanent link" class="headerlink" href="#Binary+formats">#</a> </h3> </div> - + <p>As mentioned above, use <a href="https://poi.apache.org/apidocs/org/apache/poi/hssf/record/crypto/Biff8EncryptionKey.html"> Biff8EncryptionKey</a>.<a href="https://poi.apache.org/apidocs/org/apache/poi/hssf/record/crypto/Biff8EncryptionKey.html#setCurrentUserPassword(java.lang.String)">setCurrentUserPassword</a>(String password) to specify the password.</p> - + <pre class="code"> // XOR/RC4 decryption for xls @@ -423,7 +423,7 @@ NPOIFSFileSystem fs = new NPOIFSFileSyst HSSFWorkbook hwb = new HSSFWorkbook(fs.getRoot(), true); Biff8EncryptionKey.setCurrentUserPassword(null); </pre> - + <pre class="code"> // RC4 CryptoApi support ppt - decryption @@ -455,11 +455,11 @@ os.close(); <h3>XML-based formats - Decryption<a title="Permanent link" class="headerlink" href="#XML-based+formats+-+Decryption">#</a> </h3> </div> - + <p>XML-based formats are stored in OLE-package stream "EncryptedPackage". Use org.apache.poi.poifs.crypt.Decryptor - to decode file:</p> + to decode file:</p> - + <pre class="code"> EncryptionInfo info = new EncryptionInfo(filesystem); Decryptor d = Decryptor.getInstance(info); @@ -476,12 +476,12 @@ try { } catch (GeneralSecurityException ex) { throw new RuntimeException("Unable to process encrypted document", ex); } - </pre> + </pre> - + <p>If you want to read file encrypted with build-in password, use Decryptor.DEFAULT_PASSWORD.</p> - + <a name="XML-based+formats+-+Encryption"></a> <div class="h3"> @@ -512,10 +512,10 @@ opc.close(); // Write out the encrypted version FileOutputStream fos = new FileOutputStream("..."); fs.writeFilesystem(fos); -fos.close(); +fos.close(); </pre> - + <a name="XML-based+formats+-+Signing+%28XML+Signature%29"></a> <div class="h3"> @@ -541,7 +541,7 @@ fos.close(); <li>Apache Santuario "xmlsec" (tested against 2.0.6)</li> -<li>and slf4j-api (tested against 1.7.12)</li> +<li>and slf4j-api (tested against 1.7.12)</li> </ul> @@ -549,12 +549,12 @@ fos.close(); and the activated <a href="https://poi.apache.org/apidocs/org/apache/poi/poifs/crypt/dsig/facets/package-summary.html">facets</a> various <a href="https://en.wikipedia.org/wiki/XAdES">XAdES levels</a> are supported - the support for higher levels (XAdES-T+) depend on supporting services and although the code is adopted, the integration is not well tested ... please support us on - integration (testing) with timestamp and revocation (OCSP) services. + integration (testing) with timestamp and revocation (OCSP) services. </p> <p>Further test examples can be found in the corresponding <a href="https://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java?view=markup">test class</a>.</p> - + <a name="Validating+a+signed+office+document"></a> <div class="h3"> @@ -573,14 +573,20 @@ boolean isValid = si.verifySignature(); ... </pre> - + <a name="Signing+an+office+document"></a> <div class="h3"> <h3>Signing an office document<a title="Permanent link" class="headerlink" href="#Signing+an+office+document">#</a> </h3> </div> + +<a name="Signing+a+file"></a> +<div class="h4"> +<h4>Signing a file<a title="Permanent link" class="headerlink" href="#Signing+a+file">#</a> +</h4> +</div> <pre class="code"> // loading the keystore - pkcs12 is used here, but of course jks & co are also valid @@ -618,6 +624,45 @@ pkg.close(); +<a name="Signing+a+stream+-+in-memory"></a> +<div class="h4"> +<h4>Signing a stream - in-memory<a title="Permanent link" class="headerlink" href="#Signing+a+stream+-+in-memory">#</a> +</h4> +</div> + +<p>When saving a OOXML document, POI creates missing relations on the fly. Therefore calling the signing method before + would result in an invalid signature. Instead of trying to fix all save invocations, the user is asked to save the stream + before in a intermediate byte array (stream) and process this stream instead.</p> + + +<pre class="code"> +// load the key and setup SignatureConfig ... - see "Signing a file" + +SignatureInfo si = new SignatureInfo(); +si.setSignatureConfig(signatureConfig); + +// populate sample object +XSSFWorkbook wb = new XSSFWorkbook(); +wb.createSheet().createRow(1).createCell(1).setCellValue("Test"); +ByteArrayOutputStream bos = new ByteArrayOutputStream(100000); +wb.write(bos); +wb.close(); + +// process the +OPCPackage pkg = OPCPackage.open(new ByteArrayInputStream(bos.toByteArray())); + +signatureConfig.setOpcPackage(pkg); +si.confirmSignature(); +bos.reset(); +pkg.save(bos); +pkg.close(); + +// bos now contains the signed ooxml document + </pre> + + + + <a name="Encrypting+temporary+files+created+when+unzipping+an+OOXML+document"></a> <div class="h3"> <h3>Encrypting temporary files created when unzipping an OOXML document<a title="Permanent link" class="headerlink" href="#Encrypting+temporary+files+created+when+unzipping+an+OOXML+document">#</a> @@ -637,6 +682,153 @@ pkg.close(); and other <a href="https://svn.apache.org/viewvc?view=revision&revision=1768744">files</a> that are needed for this example.</p> + + +<a name="Debugging+XML+signature+issues"></a> +<div class="h3"> +<h3>Debugging XML signature issues<a title="Permanent link" class="headerlink" href="#Debugging+XML+signature+issues">#</a> +</h3> +</div> + +<p>Finding the source of a XML signature problem can be sometimes a pain in the ... neck, because + the hashing of the canonicalized form is more or less intransparent done in the background.</p> + + + +<p>One of the tripping hazards are <a href="https://stackoverflow.com/questions/36063375">different + linebreaks in Windows/Unix</a>, therefore use the non-indent form of the xmls.</p> + + +<p>The next thing is to compare successful signed documents from Office vs. POIs generated signature, + i.e. unzip both files and look for differences. Usually the package relations (*.rels) will be different, + and the sig1.xml, core.xml and [Content_Types].xml due to different order of the references.</p> + + +<p>The package relationsships (*.rels) will be specially handled, i.e. they will be filtered and only + a subset will be processed - see <a href="https://www.ecma-international.org/activities/Office%20Open%20XML%20Formats/Draft%20ECMA-376%203rd%20edition,%20March%202011/Office%20Open%20XML%20Part%202%20-%20Open%20Packaging%20Conventions.pdf">13.2.4.24 Relationships Transform Algorithm</a>.</p> + + +<p>To check the processed files in the canonicalized form, the below UnsyncBufferedOutputStream class needs + to be injected/replaced. Put the .class file in separate directory and add the following JVM parameters:</p> + + +<pre class="code"> +-Djava.io.tmpdir=<em><custom temp directory></em> +-Xbootclasspath/p:<em><preload dir, which contains /org/apache/xml/security/utils/UnsyncBufferedOutputStream.class></em> +-Dorg.apache.poi.util.POILogger=org.apache.poi.util.CommonsLogger +-Djava.util.logging.config.file=<em><a dir containing ...></em>/logging.properties + </pre> + + +<a name="UnsyncBufferedOutputStream%3A"></a> +<div class="h4"> +<h4>UnsyncBufferedOutputStream:<a title="Permanent link" class="headerlink" href="#UnsyncBufferedOutputStream%3A">#</a> +</h4> +</div> + +<pre class="code"> +package org.apache.xml.security.utils; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; + +public class UnsyncBufferedOutputStream extends OutputStream { + static final int size = 8*1024; + static int filecnt = 0; + + private int pointer = 0; + private final OutputStream out; + private final FileOutputStream out2; + + private final byte[] buf; + + public UnsyncBufferedOutputStream(OutputStream out) { + buf = new byte[size]; + this.out = out; + synchronized(UnsyncBufferedOutputStream.class) { + try { + String tmpDir = System.getProperty("java.io.tmpdir"); + if (tmpDir == null) { + tmpDir = "build"; + } + File f = new File(tmpDir, "unsync-"+filecnt+".xml"); + out2 = new FileOutputStream(f); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + filecnt++; + } + } + } + + public void write(byte[] arg0) throws IOException { + write(arg0, 0, arg0.length); + } + + public void write(byte[] arg0, int arg1, int len) throws IOException { + int newLen = pointer+len; + if (newLen > size) { + flushBuffer(); + if (len > size) { + out.write(arg0, arg1,len); + out2.write(arg0, arg1,len); + return; + } + newLen = len; + } + System.arraycopy(arg0, arg1, buf, pointer, len); + pointer = newLen; + } + + private void flushBuffer() throws IOException { + if (pointer > 0) { + out.write(buf, 0, pointer); + out2.write(buf, 0, pointer); + } + pointer = 0; + + } + + public void write(int arg0) throws IOException { + if (pointer >= size) { + flushBuffer(); + } + buf[pointer++] = (byte)arg0; + + } + + public void flush() throws IOException { + flushBuffer(); + out.flush(); + out2.flush(); + } + + public void close() throws IOException { + flush(); + out.close(); + out2.close(); + } + +} +</pre> + + + +<a name="logging.properties"></a> +<div class="h4"> +<h4>logging.properties<a title="Permanent link" class="headerlink" href="#logging.properties">#</a> +</h4> +</div> + +<pre class="code"> +handlers = org.slf4j.bridge.SLF4JBridgeHandler +.level=ALL +org.slf4j.bridge.SLF4JBridgeHandler.level=ALL + </pre> + + --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
