Magazine viewer using JavaScript

You can implement the magazine viewer as shown in our web demo by writing some custom code.

Make the following customizations in Nutrient Web SDK:

  • Disable continuous scroll and default to double-page mode.
  • Move the main toolbar to the bottom.
  • Hide the toolbar items that aren’t needed.
  • Add a custom toolbar item that can be used to toggle the fullscreen view.
// Disable continuous scroll and default to double-page mode.
const initialViewState = new PSPDFKit.ViewState({
scrollMode: PSPDFKit.ScrollMode.PER_SPREAD,
layoutMode: PSPDFKit.LayoutMode.DOUBLE,
keepFirstSpreadAsSinglePage: true,
});
// A custom toolbar item to toggle fullscreen mode.
const fullScreenToolbarItem = {
type: 'custom',
title: 'Toggle full screen mode',
onPress: () => {
const container =
typeof defaultConfiguration.container === 'string'
? document.querySelector(defaultConfiguration.container).parentNode
: defaultConfiguration.container.parentNode;
// You can implement the fullscreen mode on your own. Either see our
// functions below for information on how to activate it, or look at our guides:
// https://www,nutrient.io/guides/web/features/fullscreen-mode/
if (isFullscreenEnabled()) {
exitFullscreen();
} else {
requestFullScreen(container);
}
},
};
// Only show the relevant toolbar items.
let toolbarItems = [
{ type: 'sidebar-bookmarks', dropdownGroup: null },
{ type: 'sidebar-thumbnails', dropdownGroup: null },
{ type: 'highlighter' },
{ type: 'zoom-in' },
{ type: 'zoom-out' },
{ type: 'spacer' },
{ type: 'search' },
fullScreenToolbarItem,
];
// Load Nutrient.
PSPDFKit.load({
...defaultConfiguration,
toolbarPlacement: PSPDFKit.ToolbarPlacement.BOTTOM,
initialViewState,
toolbarItems,
});
// All the functions written below are just utility functions used
// to toggle fullscreen mode.
function isFullscreenEnabled() {
return (
document.fullscreenElement ||
document.mozFullScreenElement ||
document.webkitFullscreenElement ||
document.msFullscreenElement
);
}
function isFullScreenSupported() {
return (
document.fullscreenEnabled ||
document.mozFullScreenEnabled ||
document.msFullScreenEnabled ||
document.webkitFullscreenEnabled
);
}
function requestFullScreen(element) {
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}
function exitFullscreen() {
if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.exitFullscreen) {
document.exitFullscreen();
}
}