Digital Publishing Suite 101: How to Hide a Slideshow

Creating a slideshow using InDesign for a Digital Publishing Suite (DPS) folio is done using multi state objects (MSOs). One of the choices in the folio overlays panel for slideshows is to Hide Before Playing. At first glance this would be of good use when you don’t want your content to show. But once the slideshow is played, there’s no way to hide it again. So, what to do when you want to be able to not only show content in a slideshow but also hide it?

The answer is actually quite simple. Because each state in an MSO can contain just about anything, we’re going to add a state to our MSO that to your reader, looks like nothing. Let’s see how it’s done.

As you can see in the screenshot below, I’ve already created an MSO, but I want to be able to “hide” it.


We can’t just hide an MSO but we can add a state that appears to hide it. Let’s draw a frame, making sure that it has no fill and no stroke. We’re going to add that as a new state. This is done by selecting the MSO and the empty frame and clicking the New button at the bottom of the Object States panel:

add state

Voila. We now have a new state in our MSO that, to the naked eye, contains nothing.


We can now create a button that will select that state and appear to hide the slideshow:


We’ll finish it up by adding that button to the first four visible states in our MSO. With InDesign’s native features this is, quite frankly, a royal pain. The object needs to be added to each state individually and the go to state action will be lost when you do so, meaning you have to reapply it to each button.

Fortunately, as I wrote about recently at InDesign Secrets, this is now a piece of cake with an inexpensive extension called Object States Assistant which I’ll use to add my button to those states, while keeping the go to state action. This is done by using the add objects to some states command:


That button will now appear in the visible states and the user can tap it to “close” the slideshow.

If you don’t have Object States Assistant you can cut the button to the clipboard and navigate to each state in the Object State panel and choose the Add button to paste it into the visible state but don’t forget to reapply the go to state action to it:

paste into

Final notes

What ever you choose for the first state in your MSO is what will show when the reader goes to that page in the folio. If you want the slideshow “hidden” by default, just drag the empty state to the top of the stack in the Object States panel.

There are any number of ways to navigate through a slideshow; buttons, swiping or even allowing it to run by itself. There’s no best answer here since it will depend on the content.

I hope you find this tip useful.



  1. Would this be an efficient way to implement a video introduction to an app? At this point in my DPS career I don’t even know if a video can be used as an MOS. I’m trying to add a short video intro I made in AfterEffects that would play each time the app is launched so that my sponsor gets a “Presented by…” credit. I see this technique all the time but haven’t been able to find anything on the world wide interwebs that explains the process. Your course was the most helpful resource I’ve come across for learning DPS. Unless I’m missing them, Adobe TV hasn’t kept up with the latest versions. Thanks!

    • Thanks for the kind words about the course.

      You many not even need an MSO for this.

      Set the video to have no poster image and then add the text below the video and set the video to auto play with a 3 or 4 second delay (experiment to get the best result).

  2. Hi Bob –

    I see what you’re doing there with the blank frame in the MSO, but if you want the slideshow to loop around the frames that have content on, how do you do that without periodically displaying the blank frame?



    • Off the top of my head…Add a blank last state. The duplicate the MSO. Delete the blank first and last states and set the first MSO to play once and stop at last image. Set the second one to autoplay with a delay equal to the duration of the first MSO with hide before playing enabled. I’ve not tested this so it make take a bit of finagling to get it working exactly as you wish.

What do you think?