Class POIDocument

    • Constructor Detail

      • POIDocument

        protected POIDocument​(DirectoryNode dir)
        Constructs a POIDocument with the given directory node.
        Parameters:
        dir - The DirectoryNode where information is read from.
      • POIDocument

        protected POIDocument​(POIFSFileSystem fs)
        Constructs from the default POIFS
        Parameters:
        fs - the filesystem the document is read from
    • Method Detail

      • getDocumentSummaryInformation

        public DocumentSummaryInformation getDocumentSummaryInformation()
        Fetch the Document Summary Information of the document
        Returns:
        The Document Summary Information or null if it could not be read for this document.
      • getSummaryInformation

        public SummaryInformation getSummaryInformation()
        Fetch the Summary Information of the document
        Returns:
        The Summary information for the document or null if it could not be read for this document.
      • createInformationProperties

        public void createInformationProperties()
        Will create whichever of SummaryInformation and DocumentSummaryInformation (HPSF) properties are not already part of your document. This is normally useful when creating a new document from scratch. If the information properties are already there, then nothing will happen.
      • readProperties

        protected void readProperties()
        Find, and create objects for, the standard Document Information Properties (HPSF). If a given property set is missing or corrupt, it will remain null;
      • getPropertySet

        protected PropertySet getPropertySet​(java.lang.String setName)
                                      throws java.io.IOException
        For a given named property entry, either return it or null if if it wasn't found
        Parameters:
        setName - The property to read
        Returns:
        The value of the given property or null if it wasn't found.
        Throws:
        java.io.IOException - If retrieving properties fails
      • getPropertySet

        protected PropertySet getPropertySet​(java.lang.String setName,
                                             EncryptionInfo encryptionInfo)
                                      throws java.io.IOException
        For a given named property entry, either return it or null if if it wasn't found
        Parameters:
        setName - The property to read
        encryptionInfo - the encryption descriptor in case of cryptoAPI encryption
        Returns:
        The value of the given property or null if it wasn't found.
        Throws:
        java.io.IOException - If retrieving properties fails
      • writeProperties

        protected void writeProperties()
                                throws java.io.IOException
        Writes out the updated standard Document Information Properties (HPSF) into the currently open NPOIFSFileSystem
        Throws:
        java.io.IOException - if an error when writing to the open POIFSFileSystem occurs
      • writeProperties

        protected void writeProperties​(POIFSFileSystem outFS)
                                throws java.io.IOException
        Writes out the standard Document Information Properties (HPSF)
        Parameters:
        outFS - the POIFSFileSystem to write the properties into
        Throws:
        java.io.IOException - if an error when writing to the POIFSFileSystem occurs
      • writeProperties

        protected void writeProperties​(POIFSFileSystem outFS,
                                       java.util.List<java.lang.String> writtenEntries)
                                throws java.io.IOException
        Writes out the standard Document Information Properties (HPSF)
        Parameters:
        outFS - the NPOIFSFileSystem to write the properties into
        writtenEntries - a list of POIFS entries to add the property names too
        Throws:
        java.io.IOException - if an error when writing to the POIFSFileSystem occurs
      • validateInPlaceWritePossible

        protected void validateInPlaceWritePossible()
                                             throws java.lang.IllegalStateException
        Called during a write() to ensure that the Document (and associated POIFSFileSystem) was opened in a way compatible with an in-place write.
        Throws:
        java.lang.IllegalStateException - if the document was opened suitably
      • write

        public abstract void write()
                            throws java.io.IOException
        Writes the document out to the currently open File, via the writeable POIFSFileSystem it was opened from.

        This will fail (with an IllegalStateException if the document was opened read-only, opened from an InputStream instead of a File, or if this is not the root document. For those cases, you must use write(OutputStream) or write(File) to write to a brand new document.

        Throws:
        java.io.IOException - thrown on errors writing to the file
        java.lang.IllegalStateException - if this isn't from a writable File
        Since:
        POI 3.15 beta 3
      • write

        public abstract void write​(java.io.File newFile)
                            throws java.io.IOException
        Writes the document out to the specified new File. If the file exists, it will be replaced, otherwise a new one will be created
        Parameters:
        newFile - The new File to write to.
        Throws:
        java.io.IOException - thrown on errors writing to the file
        Since:
        POI 3.15 beta 3
      • write

        public abstract void write​(java.io.OutputStream out)
                            throws java.io.IOException
        Writes the document out to the specified output stream. The stream is not closed as part of this operation. Note - if the Document was opened from a File rather than an InputStream, you must write out using write() or to a different File. Overwriting the currently open file 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, or use write() / write(File) if possible.
        Parameters:
        out - The stream to write to.
        Throws:
        java.io.IOException - thrown on errors writing to the stream
      • close

        public void close()
                   throws java.io.IOException
        Closes the underlying POIFSFileSystem from which the document was read, if any. Has no effect on documents opened from an InputStream, or newly created ones.

        Once close() has been called, no further operations should be called on the document.

        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException
      • clearDirectory

        @Internal
        protected void clearDirectory()
        Clear/unlink the attached directory entry
      • initDirectory

        @Internal
        protected boolean initDirectory()
        check if we were created by POIFS otherwise create a new dummy POIFS for storing the package data
        Returns:
        true if dummy directory was created, false otherwise
      • replaceDirectory

        @Internal
        protected void replaceDirectory​(DirectoryNode newDirectory)
        Replaces the attached directory, e.g. if this document is written to a new POIFSFileSystem
        Parameters:
        newDirectory - the new directory
      • getEncryptedPropertyStreamName

        protected java.lang.String getEncryptedPropertyStreamName()
        Returns:
        the stream name of the property set collection, if the document is encrypted
      • getEncryptionInfo

        public EncryptionInfo getEncryptionInfo()
                                         throws java.io.IOException
        Returns:
        the encryption info if the document is encrypted, otherwise null
        Throws:
        java.io.IOException - If retrieving the encryption information fails