aboutsummaryrefslogtreecommitdiffstats
path: root/src/ooxml/java
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2009-07-18 09:28:38 +0000
committerYegor Kozlov <yegor@apache.org>2009-07-18 09:28:38 +0000
commit92f5bf236020aae397dbdb0af40b1c28c0b82960 (patch)
treee61ec006bd94673ef9d712a9365ac414ba230f19 /src/ooxml/java
parent1aafa117225908ae3d4f1961de0bfd79fff09ddb (diff)
downloadpoi-92f5bf236020aae397dbdb0af40b1c28c0b82960.tar.gz
poi-92f5bf236020aae397dbdb0af40b1c28c0b82960.zip
Support for extraction of endnotes from docx files
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@795329 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/java')
-rw-r--r--src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java12
-rw-r--r--src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java5
-rwxr-xr-xsrc/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java6
3 files changed, 22 insertions, 1 deletions
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
index 2e86e79c7d..dc08bdcce7 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
@@ -53,6 +53,7 @@ public class XWPFDocument extends POIXMLDocument {
protected List<XWPFParagraph> paragraphs;
protected List<XWPFTable> tables;
protected Map<Integer, XWPFFootnote> footnotes;
+ protected Map<Integer, XWPFFootnote> endnotes;
/** Handles the joy of different headers/footers for different pages */
private XWPFHeaderFooterPolicy headerFooterPolicy;
@@ -81,6 +82,7 @@ public class XWPFDocument extends POIXMLDocument {
paragraphs = new ArrayList<XWPFParagraph>();
tables= new ArrayList<XWPFTable>();
footnotes = new HashMap<Integer, XWPFFootnote>();
+ endnotes = new HashMap<Integer, XWPFFootnote>();
try {
DocumentDocument doc = DocumentDocument.Factory.parse(getPackagePart().getInputStream());
@@ -143,6 +145,12 @@ public class XWPFDocument extends POIXMLDocument {
for(CTFtnEdn ctFtnEdn : footnotesDocument.getFootnotes().getFootnoteArray()) {
footnotes.put(ctFtnEdn.getId().intValue(), new XWPFFootnote(this, ctFtnEdn));
}
+ } else if (relation.equals(XWPFRelation.ENDNOTE.getRelation())){
+ EndnotesDocument endnotesDocument = EndnotesDocument.Factory.parse(p.getPackagePart().getInputStream());
+
+ for(CTFtnEdn ctFtnEdn : endnotesDocument.getEndnotes().getEndnoteArray()) {
+ endnotes.put(ctFtnEdn.getId().intValue(), new XWPFFootnote(this, ctFtnEdn));
+ }
}
}
}
@@ -218,6 +226,10 @@ public class XWPFDocument extends POIXMLDocument {
return footnotes.get(id);
}
+ public XWPFFootnote getEndnoteByID(int id) {
+ return endnotes.get(id);
+ }
+
public Collection<XWPFFootnote> getFootnotes() {
return footnotes == null ? new ArrayList<XWPFFootnote>() : footnotes.values();
}
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
index 1ddda9d4fc..81a4add75e 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFParagraph.java
@@ -93,7 +93,10 @@ public class XWPFParagraph {
if (o instanceof CTFtnEdnRef) {
CTFtnEdnRef ftn = (CTFtnEdnRef) o;
footnoteText.append("[").append(ftn.getId()).append(": ");
- XWPFFootnote footnote = document.getFootnoteByID(ftn.getId().intValue());
+ XWPFFootnote footnote =
+ ftn.getDomNode().getLocalName().equals("footnoteReference") ?
+ document.getFootnoteByID(ftn.getId().intValue()) :
+ document.getEndnoteByID(ftn.getId().intValue());
boolean first = true;
for (XWPFParagraph p : footnote.getParagraphs()) {
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
index c1b91bb07a..d28915e357 100755
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRelation.java
@@ -112,6 +112,12 @@ public final class XWPFRelation extends POIXMLRelation {
null,
null
);
+ public static final XWPFRelation ENDNOTE = new XWPFRelation(
+ null,
+ "http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes",
+ null,
+ null
+ );
private XWPFRelation(String type, String rel, String defaultName, Class<? extends POIXMLDocumentPart> cls) {