Home  ›  Guides  ›  Viewer preferences

Viewer preferences

New in v1.4.0. Control how a conforming reader presents your PDF the moment it opens — initial page layout, the bookmark/thumbnail panel, full-screen kiosk mode, window fit/centering, UI-chrome visibility, reading direction, and print scaling. Set via DocumentParams.layout.viewerPreferences. Purely presentational, PDF/A-safe, and zero overhead when unused.

TL;DR#

import { buildDocumentPDFBytes } from 'pdfnative';
import type { ViewerPreferences } from 'pdfnative';

const viewerPreferences: ViewerPreferences = {
  pageLayout: 'twoColumnLeft',  // continuous two-up, odd pages left
  pageMode: 'useOutlines',      // open the bookmark panel
  displayDocTitle: true,        // titlebar shows /Info /Title, not the filename
  fitWindow: true,
  centerWindow: true,
};

const bytes = buildDocumentPDFBytes({
  title: 'Annual Report',
  blocks: [/* … */],
  outline: 'auto',
  layout: { viewerPreferences },
});

Page layout (/PageLayout)#

How pages are arranged in the viewport:

Value Behaviour
singlePage One page at a time
oneColumn Continuous single column
twoColumnLeft / twoColumnRight Continuous two columns; odd pages on the left / right
twoPageLeft / twoPageRight Two pages at a time; odd pages on the left / right

Page mode (/PageMode)#

Which panel (if any) is open and whether the document opens full-screen:

Value Behaviour
useNone Neither bookmarks nor thumbnails
useOutlines Bookmark panel open
useThumbs Thumbnail panel open
fullScreen Full-screen presentation, no menu/panel
useOC Optional-content (layers) panel
useAttachments Attachments panel

An explicit pageMode overrides the /UseOutlines default that a document automatically gets when it has an outline.

ViewerPreferences flags#

Field Effect
hideToolbar Hide the reader tool bars
hideMenubar Hide the menu bar
hideWindowUI Hide scrollbars / navigation, leaving only the page
fitWindow Resize the window to the first page
centerWindow Centre the window on screen
displayDocTitle Show /Info /Title in the titlebar instead of the filename
nonFullScreenPageMode Mode to use after exiting full-screen
direction 'l2r' (default) or 'r2l' reading order
printScaling 'none' or 'appDefault' print-dialog default
duplex 'simplex', 'duplexFlipShortEdge' or 'duplexFlipLongEdge' print-dialog default (v1.7.0)
pickTrayByPDFSize Select the paper tray from the PDF page size (v1.7.0)
printPageRange Default print range as 1-based [from, to] pairs (v1.7.0)
numCopies Default copy count in the print dialog (v1.7.0)

The four print-dialog defaults ship with v1.7.0's print-production support — see the print production guide for bleed/trim boxes, printer's marks and /Trapped.

Full-screen kiosk#

const viewerPreferences: ViewerPreferences = {
  pageMode: 'fullScreen',
  nonFullScreenPageMode: 'useThumbs',
  hideToolbar: true,
  hideMenubar: true,
  direction: 'r2l',
  printScaling: 'none',
};

PDF/A note#

Viewer preferences are metadata only — no transparency, no scripting — so they are safe to combine with any PDF/A conformance level. Sample generators: viewer-prefs-showcase.ts.