Browse Source

Test that shows we handle word floating and fixed pictures properly

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1002123 13f79535-47bb-0310-9956-ffa450edef68
tags/POI-3.7
Nick Burch 13 years ago
parent
commit
7033853c36

+ 1
- 1
src/scratchpad/src/org/apache/poi/hwpf/model/types/CHPAbstractType.java View File

@@ -985,7 +985,7 @@ public abstract class CHPAbstractType

/**
*
* @return the fSpec field value.
* @return is the fSpec field value set? (Also known as sprmCFSpec)
*/
public boolean isFSpec()
{

+ 41
- 0
src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java View File

@@ -261,4 +261,45 @@ public final class TestPictures extends TestCase {
assertEquals("10a8", picture.suggestFullFileName());
assertEquals("image/unknown", picture.getMimeType());
}
/**
* In word you can have floating or fixed pictures.
* Fixed have a \u0001 in place with an offset to the
* picture data.
* Floating have a \u0008 in place, which references a
* \u0001 which has the offset. More than one can
* reference the same \u0001
*/
public void testFloatingPictures() throws Exception {
HWPFDocument doc = HWPFTestDataSamples.openSampleFile("FloatingPictures.doc");
PicturesTable pictures = doc.getPicturesTable();
// There are 19 images in the picture, but some are
// duplicate floating ones
assertEquals(17, pictures.getAllPictures().size());
int plain8s = 0;
int escher8s = 0;
int image1s = 0;
Range r = doc.getRange();
for(int np=0; np < r.numParagraphs(); np++) {
Paragraph p = r.getParagraph(np);
for(int nc=0; nc < p.numCharacterRuns(); nc++) {
CharacterRun cr = p.getCharacterRun(nc);
if(pictures.hasPicture(cr)) {
image1s++;
} else if(pictures.hasEscherPicture(cr)) {
escher8s++;
} else if(cr.text().startsWith("\u0008")) {
plain8s++;
}
}
}
// Total is 20, as the 4 escher 8s all reference
// the same regular image
assertEquals(16, image1s);
assertEquals(4, escher8s);
assertEquals(0, plain8s);
}
}

BIN
test-data/document/FloatingPictures.doc View File


Loading…
Cancel
Save