diff options
author | Yegor Kozlov <yegor@apache.org> | 2009-07-18 09:28:38 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2009-07-18 09:28:38 +0000 |
commit | 92f5bf236020aae397dbdb0af40b1c28c0b82960 (patch) | |
tree | e61ec006bd94673ef9d712a9365ac414ba230f19 /src/ooxml/java | |
parent | 1aafa117225908ae3d4f1961de0bfd79fff09ddb (diff) | |
download | poi-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')
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) { |