diff options
author | Nick Burch <nick@apache.org> | 2008-05-23 15:05:12 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2008-05-23 15:05:12 +0000 |
commit | 8c9bade1fcc7bd16c0a29479f795dd95489fd986 (patch) | |
tree | 28e9b4675caead598e2ed93634f4eebd108296a2 /src/ooxml/java/org/apache | |
parent | 6c9ab3d4ef790d1b3b2dfc8daccf1f216c71009a (diff) | |
download | poi-8c9bade1fcc7bd16c0a29479f795dd95489fd986.tar.gz poi-8c9bade1fcc7bd16c0a29479f795dd95489fd986.zip |
Patch from Yury from bug #45018 - Support for fetching embeded documents from within an OOXML files
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@659564 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/java/org/apache')
3 files changed, 30 insertions, 1 deletions
diff --git a/src/ooxml/java/org/apache/poi/POIXMLDocument.java b/src/ooxml/java/org/apache/poi/POIXMLDocument.java index 9fa4789db0..7be6372759 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLDocument.java +++ b/src/ooxml/java/org/apache/poi/POIXMLDocument.java @@ -19,6 +19,8 @@ package org.apache.poi; import java.io.IOException; import java.io.InputStream; import java.io.PushbackInputStream; +import java.util.LinkedList; +import java.util.List; import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.util.IOUtils; @@ -39,6 +41,8 @@ public abstract class POIXMLDocument { public static final String EXTENDED_PROPERTIES_REL_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"; + public static final String OLE_OBJECT_REL_TYPE="http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject"; + /** The OPC Package */ private Package pkg; @@ -50,6 +54,10 @@ public abstract class POIXMLDocument { */ private POIXMLProperties properties; + /** + * The embedded OLE2 files in the OPC package + */ + private List<PackagePart> embedds; protected POIXMLDocument() {} @@ -62,6 +70,12 @@ public abstract class POIXMLDocument { // Get core part this.corePart = this.pkg.getPart(coreDocRelationship); + + // Get any embedded OLE2 documents + this.embedds = new LinkedList<PackagePart>(); + for(PackageRelationship rel : corePart.getRelationshipsByType(OLE_OBJECT_REL_TYPE)) { + embedds.add(getTargetPart(rel)); + } } catch (OpenXML4JException e) { throw new IOException(e.toString()); } @@ -190,4 +204,12 @@ public abstract class POIXMLDocument { } return properties; } + + /** + * Get the document's embedded files. + */ + public List<PackagePart> getAllEmbedds() throws OpenXML4JException + { + return embedds; + } } diff --git a/src/ooxml/java/org/apache/poi/POIXMLTextExtractor.java b/src/ooxml/java/org/apache/poi/POIXMLTextExtractor.java index ae8514c278..8df75d949d 100644 --- a/src/ooxml/java/org/apache/poi/POIXMLTextExtractor.java +++ b/src/ooxml/java/org/apache/poi/POIXMLTextExtractor.java @@ -47,4 +47,11 @@ public abstract class POIXMLTextExtractor extends POITextExtractor { public ExtendedProperties getExtendedProperties() throws IOException, OpenXML4JException, XmlException { return document.getProperties().getExtendedProperties(); } + + /** + * Returns opened document + */ + public POIXMLDocument getDocument(){ + return document; + } } diff --git a/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java b/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java index 8ca4f0349b..64c8e3f780 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java +++ b/src/ooxml/java/org/apache/poi/xwpf/extractor/XWPFWordExtractor.java @@ -58,7 +58,7 @@ public class XWPFWordExtractor extends POIXMLTextExtractor { public static void main(String[] args) throws Exception { if(args.length < 1) { System.err.println("Use:"); - System.err.println(" HXFWordExtractor <filename.xlsx>"); + System.err.println(" HXFWordExtractor <filename.docx>"); System.exit(1); } POIXMLTextExtractor extractor = |