More fixes for bug #49933, workaround the fact that some word6/word95 SEPX entries are compressed differently, and we don't have the specs for how they're stored
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@998621 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
100095bcb9
commit
8043f38bd7
@ -56,7 +56,11 @@ public final class OldSectionTable extends SectionTable
|
|||||||
{
|
{
|
||||||
// The first short at the offset is the size of the grpprl.
|
// The first short at the offset is the size of the grpprl.
|
||||||
int sepxSize = LittleEndian.getShort(documentStream, fileOffset);
|
int sepxSize = LittleEndian.getShort(documentStream, fileOffset);
|
||||||
byte[] buf = new byte[sepxSize];
|
// Because we don't properly know about all the details of the old
|
||||||
|
// section properties, and we're trying to decode them as if they
|
||||||
|
// were the new ones, we sometimes "need" more data than we have.
|
||||||
|
// As a workaround, have a few extra 0 bytes on the end!
|
||||||
|
byte[] buf = new byte[sepxSize+2];
|
||||||
fileOffset += LittleEndian.SHORT_SIZE;
|
fileOffset += LittleEndian.SHORT_SIZE;
|
||||||
System.arraycopy(documentStream, fileOffset, buf, 0, buf.length);
|
System.arraycopy(documentStream, fileOffset, buf, 0, buf.length);
|
||||||
_sections.add(new SEPX(sed, startAt, endAt, charConv, buf));
|
_sections.add(new SEPX(sed, startAt, endAt, charConv, buf));
|
||||||
|
@ -119,4 +119,24 @@ public final class TestHWPFOldDocument extends HWPFTestCase {
|
|||||||
assertEquals("\u000c", doc.getRange().getParagraph(4).text()); // Section line?
|
assertEquals("\u000c", doc.getRange().getParagraph(4).text()); // Section line?
|
||||||
assertEquals("\r", doc.getRange().getParagraph(5).text());
|
assertEquals("\r", doc.getRange().getParagraph(5).text());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Another word document with sections, this time with a
|
||||||
|
* few more section properties set on it
|
||||||
|
*/
|
||||||
|
public void testWord6Sections2() throws Exception {
|
||||||
|
HWPFOldDocument doc = HWPFTestDataSamples.openOldSampleFile("Word6_sections2.doc");
|
||||||
|
|
||||||
|
assertEquals(1, doc.getRange().numSections());
|
||||||
|
assertEquals(57, doc.getRange().numParagraphs());
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
"\r",
|
||||||
|
doc.getRange().getParagraph(0).text()
|
||||||
|
);
|
||||||
|
assertEquals(
|
||||||
|
"STATEMENT OF INSOLVENCY PRACTICE 10 (SCOTLAND)\r",
|
||||||
|
doc.getRange().getParagraph(1).text()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
test-data/document/Word6_sections2.doc
Normal file
BIN
test-data/document/Word6_sections2.doc
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user