org.apache.poi.hslf.usermodel

## Class HSLFSlideShow

- java.lang.Object
- - org.apache.poi.hslf.usermodel.HSLFSlideShow

- All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, GenericRecord, SlideShow<HSLFShape,HSLFTextParagraph>

      public final class HSLFSlideShow
      extends java.lang.Object
      implements SlideShow<HSLFShape,HSLFTextParagraph>, java.io.Closeable, GenericRecord

  This class is a friendly wrapper on top of the more scary HSLFSlideShow. TODO: - figure out how to match notes to their correct sheet (will involve understanding DocSlideList and DocNotesList) - handle Slide creation cleaner

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `POWERPOINT_DOCUMENT` Powerpoint document entry/stream name
    `static java.lang.String` | `PP95_DOCUMENT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `HSLFSlideShow()` Constructs a new, empty, Powerpoint document.
    `HSLFSlideShow(DirectoryNode root)` Constructs a Powerpoint document from an DirectoryNode.
    `HSLFSlideShow(HSLFSlideShowImpl hslfSlideShow)` Constructs a Powerpoint document from the underlying HSLFSlideShow object.
    `HSLFSlideShow(java.io.InputStream inputStream)` Constructs a Powerpoint document from an input stream.
    `HSLFSlideShow(POIFSFileSystem poifs)` Constructs a Powerpoint document from an POIFSFileSystem.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `addControl(java.lang.String name, java.lang.String progId)` Add a control in this presentation
    `int` | `addEmbed(POIFSFileSystem poiData)` Add a embedded object to this presentation
    `HSLFFontInfo` | `addFont(FontInfo fontInfo)` Add a font in this presentation
    `HSLFFontInfo` | `addFont(java.io.InputStream fontData)` Add a font in this presentation and also embed its font data
    `int` | `addMovie(java.lang.String path, int type)` Add a movie in this presentation
    `HSLFPictureData` | `addPicture(byte[] data, PictureData.PictureType format)` Adds a picture to the presentation.
    `HSLFPictureData` | `addPicture(java.io.File pict, PictureData.PictureType format)` Adds a picture to the presentation.
    `HSLFPictureData` | `addPicture(java.io.InputStream is, PictureData.PictureType format)` Adds a picture to the presentation.
    `void` | `close()`
    `MasterSheet<HSLFShape,HSLFTextParagraph>` | `createMasterSheet()`
    `HSLFSlide` | `createSlide()` Create a blank `Slide`.
    `HSLFPictureData` | `findPictureData(byte[] pictureData)` check if a picture with this picture data already exists in this presentation
    `Record` | `getCoreRecordForRefID(int refID)` For a given refID (the internal, 0 based numbering scheme), return the core record
    `Record` | `getCoreRecordForSAS(SlideListWithText.SlideAtomsSet sas)` For a given SlideAtomsSet, return the core record, based on the refID from the SlidePersistAtom
    `Document` | `getDocumentRecord()` Helper method for usermodel and model: Get the document record
    `HSLFObjectData[]` | `getEmbeddedObjects()` Returns the data of all the embedded OLE object in the SlideShow
    `HSLFFontInfo` | `getFont(int idx)` Get a font by index
    `java.util.List<HSLFFontInfo>` | `getFonts()`
    `java.util.List<? extends GenericRecord>` | `getGenericChildren()`
    `java.util.Map<java.lang.String,java.util.function.Supplier<?>>` | `getGenericProperties()`
    `HPSFPropertiesExtractor` | `getMetadataTextExtractor()`
    `Record[]` | `getMostRecentCoreRecords()` Returns an array of the most recent version of all the interesting records
    `java.util.List<HSLFNotes>` | `getNotes()` Returns an array of all the normal Notes found in the slideshow
    `HeadersFooters` | `getNotesHeadersFooters()` Return Header / Footer settings for notes
    `int` | `getNumberOfFonts()` get the number of fonts in the presentation
    `java.awt.Dimension` | `getPageSize()` Returns the current page size
    `java.lang.Object` | `getPersistDocument()`
    `java.util.List<HSLFPictureData>` | `getPictureData()` Returns all Pictures of this slideshow.
    `HeadersFooters` | `getSlideHeadersFooters()` Return Header / Footer settings for slides
    `java.util.List<HSLFSlideMaster>` | `getSlideMasters()` Returns an array of all the normal Slide Masters found in the slideshow
    `java.util.List<HSLFSlide>` | `getSlides()` Returns an array of all the normal Slides found in the slideshow
    `HSLFSlideShowImpl` | `getSlideShowImpl()`
    `HSLFSoundData[]` | `getSoundData()` Returns the data of all the embedded sounds in the SlideShow
    `java.util.List<HSLFTitleMaster>` | `getTitleMasters()` Returns an array of all the normal Title Masters found in the slideshow
    `HSLFSlide` | `removeSlide(int index)` Removes the slide at the given index (0-based).
    `void` | `reorderSlide(int oldSlideNumber, int newSlideNumber)` Re-orders a slide, to a new position.
    `void` | `setPageSize(java.awt.Dimension pgsize)` Change the current page size
    `void` | `write(java.io.OutputStream out)` Writes out the slideshow file the is represented by an instance of this class

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

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

    - ### Methods inherited from interface org.apache.poi.common.usermodel.GenericRecord

      `getGenericRecordType`

- - ### Field Detail

    - #### POWERPOINT_DOCUMENT

          public static final java.lang.String POWERPOINT_DOCUMENT

      Powerpoint document entry/stream name
      See Also:
        Constant Field Values

    - #### PP95_DOCUMENT

          public static final java.lang.String PP95_DOCUMENT

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### HSLFSlideShow

          public HSLFSlideShow(HSLFSlideShowImpl hslfSlideShow)

      Constructs a Powerpoint document from the underlying HSLFSlideShow object. Finds the model stuff from this
      Parameters:
        `hslfSlideShow` - the HSLFSlideShow to base on

    - #### HSLFSlideShow

          public HSLFSlideShow()

      Constructs a new, empty, Powerpoint document.

    - #### HSLFSlideShow

          public HSLFSlideShow(java.io.InputStream inputStream)
                        throws java.io.IOException

      Constructs a Powerpoint document from an input stream.
      Throws:
        `java.io.IOException`

    - #### HSLFSlideShow

          public HSLFSlideShow(POIFSFileSystem poifs)
                        throws java.io.IOException

      Constructs a Powerpoint document from an POIFSFileSystem.
      Throws:
        `java.io.IOException`

    - #### HSLFSlideShow

          public HSLFSlideShow(DirectoryNode root)
                        throws java.io.IOException

      Constructs a Powerpoint document from an DirectoryNode.
      Throws:
        `java.io.IOException`

  - ### Method Detail

    - #### getCoreRecordForSAS

          public Record getCoreRecordForSAS(SlideListWithText.SlideAtomsSet sas)

      For a given SlideAtomsSet, return the core record, based on the refID from the SlidePersistAtom

    - #### getCoreRecordForRefID

          public Record getCoreRecordForRefID(int refID)

      For a given refID (the internal, 0 based numbering scheme), return the core record
      Parameters:
        `refID` - the refID

    - #### write

          public void write(java.io.OutputStream out)
                     throws java.io.IOException

      Description copied from interface: `SlideShow`
      Writes out the slideshow file the is represented by an instance of this class
      Specified by:
        `write` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Parameters:
        `out` - The OutputStream to write to.
      Throws:
        `java.io.IOException` - If there is an unexpected IOException from the passed in OutputStream

    - #### getMostRecentCoreRecords

          public Record[] getMostRecentCoreRecords()

      Returns an array of the most recent version of all the interesting records

    - #### getSlides

          public java.util.List<HSLFSlide> getSlides()

      Returns an array of all the normal Slides found in the slideshow
      Specified by:
        `getSlides` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`

    - #### getNotes

          public java.util.List<HSLFNotes> getNotes()

      Returns an array of all the normal Notes found in the slideshow

    - #### getSlideMasters

          public java.util.List<HSLFSlideMaster> getSlideMasters()

      Returns an array of all the normal Slide Masters found in the slideshow
      Specified by:
        `getSlideMasters` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`

    - #### getTitleMasters

          public java.util.List<HSLFTitleMaster> getTitleMasters()

      Returns an array of all the normal Title Masters found in the slideshow

    - #### getPictureData

          public java.util.List<HSLFPictureData> getPictureData()

      Description copied from interface: `SlideShow`
      Returns all Pictures of this slideshow. The returned `List` is unmodifiable.
      Specified by:
        `getPictureData` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Returns:
        a `List` of `PictureData`.

    - #### getEmbeddedObjects

          public HSLFObjectData[] getEmbeddedObjects()

      Returns the data of all the embedded OLE object in the SlideShow

    - #### getSoundData

          public HSLFSoundData[] getSoundData()

      Returns the data of all the embedded sounds in the SlideShow

    - #### getPageSize

          public java.awt.Dimension getPageSize()

      Description copied from interface: `SlideShow`
      Returns the current page size
      Specified by:
        `getPageSize` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Returns:
        the page size

    - #### setPageSize

          public void setPageSize(java.awt.Dimension pgsize)

      Description copied from interface: `SlideShow`
      Change the current page size
      Specified by:
        `setPageSize` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Parameters:
        `pgsize` - page size (in points)

    - #### getDocumentRecord

          public Document getDocumentRecord()

      Helper method for usermodel and model: Get the document record

    - #### reorderSlide

          public void reorderSlide(int oldSlideNumber,
                                   int newSlideNumber)

      Re-orders a slide, to a new position.
      Parameters:
        `oldSlideNumber` - The old slide number (1 based)
        `newSlideNumber` - The new slide number (1 based)

    - #### removeSlide

          public HSLFSlide removeSlide(int index)

      Removes the slide at the given index (0-based).

      Shifts any subsequent slides to the left (subtracts one from their slide numbers).

      Parameters:
        `index` - the index of the slide to remove (0-based)
      Returns:
        the slide that was removed from the slide show.

    - #### createSlide

          public HSLFSlide createSlide()

      Create a blank `Slide`.
      Specified by:
        `createSlide` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Returns:
        the created `Slide`

    - #### addPicture

          public HSLFPictureData addPicture(byte[] data,
                                            PictureData.PictureType format)
                                     throws java.io.IOException

      Description copied from interface: `SlideShow`
      Adds a picture to the presentation.
      Specified by:
        `addPicture` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Parameters:
        `data` - The bytes of the picture
        `format` - The format of the picture.
      Returns:
        the picture data reference.
      Throws:
        `java.io.IOException`

    - #### addPicture

          public HSLFPictureData addPicture(java.io.InputStream is,
                                            PictureData.PictureType format)
                                     throws java.io.IOException

      Adds a picture to the presentation.
      Specified by:
        `addPicture` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Parameters:
        `is` - The stream to read the image from
        `format` - The format of the picture.
      Returns:
        the picture data.
      Throws:
        `java.io.IOException`
      Since:
        3.15 beta 2

    - #### addPicture

          public HSLFPictureData addPicture(java.io.File pict,
                                            PictureData.PictureType format)
                                     throws java.io.IOException

      Adds a picture to the presentation.
      Specified by:
        `addPicture` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Parameters:
        `pict` - the file containing the image to add
        `format` - The format of the picture.
      Returns:
        the picture data.
      Throws:
        `java.io.IOException`
      Since:
        3.15 beta 2

    - #### findPictureData

          public HSLFPictureData findPictureData(byte[] pictureData)

      check if a picture with this picture data already exists in this presentation
      Specified by:
        `findPictureData` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Parameters:
        `pictureData` - The picture data to find in the SlideShow
      Returns:
        `null` if picture data is not found in this slideshow
      Since:
        3.15 beta 3

    - #### addFont

          public HSLFFontInfo addFont(FontInfo fontInfo)

      Add a font in this presentation
      Parameters:
        `fontInfo` - the font to add
      Returns:
        the registered HSLFFontInfo - the font info object is unique based on the typeface

    - #### addFont

          public HSLFFontInfo addFont(java.io.InputStream fontData)
                               throws java.io.IOException

      Add a font in this presentation and also embed its font data
      Specified by:
        `addFont` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Parameters:
        `fontData` - the EOT font data as stream
      Returns:
        the registered HSLFFontInfo - the font info object is unique based on the typeface
      Throws:
        `java.io.IOException` - if the fontData can't be saved or if the fontData is no EOT font
      Since:
        POI 4.1.0
      See Also:
        EOT specification, googles sfntly library, Example on how to subset and embed fonts

    - #### getFont

          public HSLFFontInfo getFont(int idx)

      Get a font by index
      Parameters:
        `idx` - 0-based index of the font
      Returns:
        of an instance of `PPFont` or `null` if not found

    - #### getNumberOfFonts

          public int getNumberOfFonts()

      get the number of fonts in the presentation
      Returns:
        number of fonts

    - #### getFonts

          public java.util.List<HSLFFontInfo> getFonts()

      Specified by:
        `getFonts` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Returns:
        a list of registered fonts

    - #### getSlideHeadersFooters

          public HeadersFooters getSlideHeadersFooters()

      Return Header / Footer settings for slides
      Returns:
        Header / Footer settings for slides

    - #### getNotesHeadersFooters

          public HeadersFooters getNotesHeadersFooters()

      Return Header / Footer settings for notes
      Returns:
        Header / Footer settings for notes

    - #### addMovie

          public int addMovie(java.lang.String path,
                              int type)

      Add a movie in this presentation
      Parameters:
        `path` - the path or url to the movie
      Returns:
        0-based index of the movie

    - #### addControl

          public int addControl(java.lang.String name,
                                java.lang.String progId)

      Add a control in this presentation
      Parameters:
        `name` - name of the control, e.g. "Shockwave Flash Object"
        `progId` - OLE Programmatic Identifier, e.g. "ShockwaveFlash.ShockwaveFlash.9"
      Returns:
        0-based index of the control

    - #### addEmbed

          public int addEmbed(POIFSFileSystem poiData)

      Add a embedded object to this presentation
      Returns:
        0-based index of the embedded object

    - #### getMetadataTextExtractor

          public HPSFPropertiesExtractor getMetadataTextExtractor()

      Specified by:
        `getMetadataTextExtractor` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Returns:
        an extractor for the slideshow metadata

    - #### createMasterSheet

          public MasterSheet<HSLFShape,HSLFTextParagraph> createMasterSheet()

      Specified by:
        `createMasterSheet` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`

    - #### getSlideShowImpl

          @Internal
          public HSLFSlideShowImpl getSlideShowImpl()

      Returns:
        the handler class which holds the hslf records

    - #### close

          public void close()
                     throws java.io.IOException

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

    - #### getPersistDocument

          public java.lang.Object getPersistDocument()

      Specified by:
        `getPersistDocument` in interface `SlideShow<HSLFShape,HSLFTextParagraph>`
      Returns:
        the instance which handles the persisting of the slideshow, which is either a subclass of `POIDocument` or `POIXMLDocument`

    - #### getGenericProperties

          public java.util.Map<java.lang.String,java.util.function.Supplier<?>> getGenericProperties()

      Specified by:
        `getGenericProperties` in interface `GenericRecord`

    - #### getGenericChildren

          public java.util.List<? extends GenericRecord> getGenericChildren()

      Specified by:
        `getGenericChildren` in interface `GenericRecord`

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