org.apache.poi.ooxml

## Class POIXMLDocument

- java.lang.Object
- - org.apache.poi.ooxml.POIXMLDocumentPart
  - - org.apache.poi.ooxml.POIXMLDocument

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable
  Direct Known Subclasses:
    XMLSlideShow, XmlVisioDocument, XSLFSlideShow, XSSFWorkbook, XWPFDocument

      public abstract class POIXMLDocument
      extends POIXMLDocumentPart
      implements java.io.Closeable

  This holds the common functionality for all POI OOXML Document classes.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.poi.ooxml.POIXMLDocumentPart

      `POIXMLDocumentPart.RelationPart`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `DOCUMENT_CREATOR`
    `static java.lang.String` | `OLE_OBJECT_REL_TYPE`
    `static java.lang.String` | `PACK_OBJECT_REL_TYPE`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `POIXMLDocument(OPCPackage pkg)`
    `protected` | `POIXMLDocument(OPCPackage pkg, java.lang.String coreDocumentRel)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Closes the underlying `OPCPackage` from which this document was read, if there is one
    `abstract java.util.List<PackagePart>` | `getAllEmbeddedParts()` Get the document's embedded files.
    `java.util.List<PackagePart>` | `getAllEmbedds()` Deprecated. use `getAllEmbeddedParts` instead
    `protected PackagePart` | `getCorePart()`
    `OPCPackage` | `getPackage()` Get the assigned OPCPackage
    `POIXMLProperties` | `getProperties()` Get the document properties.
    `protected PackagePart[]` | `getRelatedByType(java.lang.String contentType)` Retrieves all the PackageParts which are defined as relationships of the base document with the specified content type.
    `protected void` | `load(POIXMLFactory factory)`
    `static OPCPackage` | `openPackage(java.lang.String path)` Wrapper to open a package, which works around shortcomings in java's this() constructor calls
    `void` | `write(java.io.OutputStream stream)` Write out this document to an Outputstream.

    - ### Methods inherited from class org.apache.poi.ooxml.POIXMLDocumentPart

      `_invokeOnDocumentRead, addRelation, commit, createRelationship, createRelationship, createRelationship, getNextPartNumber, getPackagePart, getParent, getRelationById, getRelationId, getRelationPartById, getRelationParts, getRelations, getTargetPart, isCommited, isCommitted, onDocumentCreate, onDocumentRead, onDocumentRemove, onSave, prepareForCommit, read, rebase, removeRelation, removeRelation, removeRelation, setCommited, setCommitted, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### DOCUMENT_CREATOR

          public static final java.lang.String DOCUMENT_CREATOR

      See Also:
        Constant Field Values

    - #### OLE_OBJECT_REL_TYPE

          public static final java.lang.String OLE_OBJECT_REL_TYPE

      See Also:
        Constant Field Values

    - #### PACK_OBJECT_REL_TYPE

          public static final java.lang.String PACK_OBJECT_REL_TYPE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### POIXMLDocument

          protected POIXMLDocument(OPCPackage pkg)

    - #### POIXMLDocument

          protected POIXMLDocument(OPCPackage pkg,
                                   java.lang.String coreDocumentRel)

  - ### Method Detail

    - #### openPackage

          public static OPCPackage openPackage(java.lang.String path)
                                        throws java.io.IOException

      Wrapper to open a package, which works around shortcomings in java's this() constructor calls
      Parameters:
        `path` - the path to the document
      Returns:
        the new OPCPackage
      Throws:
        `java.io.IOException` - if there was a problem opening the document

    - #### getPackage

          public OPCPackage getPackage()

      Get the assigned OPCPackage
      Returns:
        the assigned OPCPackage

    - #### getCorePart

          protected PackagePart getCorePart()

    - #### getRelatedByType

          protected PackagePart[] getRelatedByType(java.lang.String contentType)
                                            throws InvalidFormatException

      Retrieves all the PackageParts which are defined as relationships of the base document with the specified content type.
      Parameters:
        `contentType` - the content type
      Returns:
        all the base document PackageParts which match the content type
      Throws:
        `InvalidFormatException` - when the relationships or the parts contain errors
      See Also:
        `XSSFRelation`, `XSLFRelation`, `XWPFRelation`, `XDGFRelation`

    - #### getProperties

          public POIXMLProperties getProperties()

      Get the document properties. This gives you access to the core ooxml properties, and the extended ooxml properties.
      Returns:
        the document properties

    - #### getAllEmbedds

          @Deprecated
           @Removal(version="4.2")
          public java.util.List<PackagePart> getAllEmbedds()
                                                                                         throws OpenXML4JException

      Deprecated. use `getAllEmbeddedParts` instead
      Get the document's embedded files.
      Returns:
        the document's embedded files
      Throws:
        `OpenXML4JException` - if the embedded parts can't be determined

    - #### getAllEmbeddedParts

          public abstract java.util.List<PackagePart> getAllEmbeddedParts()
                                                                   throws OpenXML4JException

      Get the document's embedded files.
      Returns:
        the document's embedded files
      Throws:
        `OpenXML4JException` - if the embedded parts can't be determined
      Since:
        POI 4.0.0

    - #### load

          protected final void load(POIXMLFactory factory)
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### close

          public void close()
                     throws java.io.IOException

      Closes the underlying `OPCPackage` from which this document was read, if there is one

      Once this has been called, no further operations, updates or reads should be performed on the document.

      Specified by:
        `close` in interface `java.io.Closeable`
      Specified by:
        `close` in interface `java.lang.AutoCloseable`
      Throws:
        `java.io.IOException` - for writable packages, if an IO exception occur during the saving process.

    - #### write

          public final void write(java.io.OutputStream stream)
                           throws java.io.IOException

      Write out this document to an Outputstream. Note - if the Document was opened from a `File` rather than an `InputStream`, you must write out to a different file, overwriting via an OutputStream isn't possible. If `stream` is a `FileOutputStream` on a networked drive or has a high cost/latency associated with each written byte, consider wrapping the OutputStream in a `BufferedOutputStream` to improve write performance.
      Parameters:
        `stream` - - the java OutputStream you wish to write the file to
      Throws:
        `java.io.IOException` - if anything can't be written.

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.