From f4f823b94c0a40877223e4d7e3ce847eb4630b06 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Mon, 31 Aug 2009 16:57:03 +0000 Subject: [PATCH] Support for extraction of header / footer images in HWPF, see Bugzilla 47733 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@809659 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../apache/poi/hwpf/model/PicturesTable.java | 2 +- .../apache/poi/hwpf/usermodel/TestPictures.java | 8 ++++++++ test-data/document/header_image.doc | Bin 0 -> 39936 bytes 4 files changed, 10 insertions(+), 1 deletion(-) create mode 100755 test-data/document/header_image.doc diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index adbbc7991..a27f2971d 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -33,6 +33,7 @@ + 47773 - Support for extraction of header / footer images in HWPF moved all test data to a top-level directory 47721 - Added implementation for INDIRECT() 45583 - Avoid exception when reading ClipboardData packet in OLE property sets diff --git a/src/scratchpad/src/org/apache/poi/hwpf/model/PicturesTable.java b/src/scratchpad/src/org/apache/poi/hwpf/model/PicturesTable.java index d61d7f64d..8e8bf701c 100644 --- a/src/scratchpad/src/org/apache/poi/hwpf/model/PicturesTable.java +++ b/src/scratchpad/src/org/apache/poi/hwpf/model/PicturesTable.java @@ -189,7 +189,7 @@ public final class PicturesTable public List getAllPictures() { ArrayList pictures = new ArrayList(); - Range range = _document.getRange(); + Range range = _document.getOverallRange(); for (int i = 0; i < range.numCharacterRuns(); i++) { CharacterRun run = range.getCharacterRun(i); String text = run.text(); diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java index fefdcf8c4..897ca86f1 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestPictures.java @@ -143,4 +143,12 @@ public final class TestPictures extends TestCase { List pics = doc.getPicturesTable().getAllPictures(); assertEquals(pics.size(), 2); } + + public void testPicturesInHeader() { + HWPFDocument doc = HWPFTestDataSamples.openSampleFile("header_image.doc"); + + List pics = doc.getPicturesTable().getAllPictures(); + assertEquals(pics.size(), 2); + } + } diff --git a/test-data/document/header_image.doc b/test-data/document/header_image.doc new file mode 100755 index 0000000000000000000000000000000000000000..23444cdc1a6e9c1d712182271cbf307c7d93145a GIT binary patch literal 39936 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 literal 0 HcmV?d00001