How to set initial view properties?

I want to set the properties available under the Initial View tab in Adobe Acrobat for an existing PDF programmatically. Document Options: Show = Bookmarks Panel and Page Page Layout = Contin

I want to set the properties available under the Initial View tab in Adobe Acrobat for an existing PDF programmatically.

Document Options:

  • Show = Bookmarks Panel and Page
  • Page Layout = Continuous
  • Magnification = Fit Width
  • Open to Page number = 1

Window Options:

  • Show = Document Title

I tried to achieve this using the following code:

PdfStamper stamper =
    new PdfStamper(reader, new FileStream(dPDFFile, FileMode.Create));
stamper.AddViewerPreference(PdfName.DISPLAYDOCTITLE, new PdfBoolean(true));
the above code is used to set the document title show, but the following code is not working:

// For page layout
stamper.AddViewerPreference(PdfName.PAGELAYOUT, new PdfName("OneColumn"));
// For Bookmarks Panel and Page:
stamper.AddViewerPreference(PdfName. PageMode, new PdfName("UseOutlines"));
Finally I also want to set the language to English. The PS Script to do this looks like this [ {Catalog} > /PUT pdfmark. How is it done in PDF?

Posted on StackOverflow on Jun 23, 2014 by Thirusanguraja Venkatesan

When you have a PdfWriter instance named writer, you can set the Viewer preferences like this:

writer.ViewerPreferences = viewerpreference;

In this case, the viewerpreference is a value that can have one of the following values:

  • PdfWriter.PageLayoutSinglePage

  • PdfWriter.PageLayoutOneColumn

  • PdfWriter.PageLayoutTwoColumnLeft

  • PdfWriter.PageLayoutTwoColumnRight

  • PdfWriter.PageLayoutTwoPageLeft

  • PdfWriter.PageLayoutTwoPageRight

See the PageLayoutExample for more info.

You can also change the page mode as is shown in the ViewerPreferencesExample. In which case the different values are "OR"-ed:

  • PdfWriter.PageModeFullScreen

  • PdfWriter.PageModeUseThumbs

  • PdfWriter.PageLayoutTwoColumnRight | PdfWriter.PageModeUseThumbs

  • PdfWriter.PageModeFullScreen | PdfWriter.NonFullScreenPageModeUseOutlines

  • PdfWriter.FitWindow | PdfWriter.HideToolbar

  • PdfWriter.HideWindowUI

Currently, you've only used the PrintPreferences example from the official documentation:

writer.AddViewerPreference(PdfName.PRINTSCALING, PdfName.NONE);
writer.AddViewerPreference(PdfName.NUMCOPIES, new PdfNumber(3));
writer.AddViewerPreference(PdfName.PICKTRAYBYPDFSIZE, PdfBoolean.PDFTRUE);

But in some cases, it's just easier to use:

writer.ViewerPreferences = viewerpreference;

As for setting the language, this is done like this:

stamper.Writer.ExtraCatalog.Put(PdfName.LANG, new PdfString("EN"));

The result is shown in the following screen shot:

RUPS: looking at the internal structure of a PDF
RUPS: looking at the internal structure of a PDF

As you can see, there is now a Lang entry with value EN added to the catalog.

Taken from the additional answer by Chris Haas:

The items Magnification = Fit Width and Open to Page number = 1 are also part of the /Catalog but in a special key called /OpenAction. You can set this using Writer.SetOpenAction().

In your case you're looking for:

//Create a destination that fit's width (fit horizontal)
var D = new PdfDestination(PdfDestination.FITH);
//Create an open action that points to a specific page using this destination
var OA = PdfAction.GotoLocalPage(1, D, stamper.Writer);
//Set the open action on the writer
stamper.Writer.SetOpenAction(OA);

Share this article

Ready to use iText?

Try our iText 7 Library and add-ons FREE for 30 days. Test your proof of concept, and see if our solution is right for you.

Get my FREE trial
Contact

Still have questions? 

We're happy to answer your questions. Reach out to us and we'll get back to you shortly.

Contact us
Stay updated

Join 11,000+ subscribers and become an iText PDF expert by staying up to date with our new products, updates, tips, technical solutions and happenings.

Subscribe Now