Some test text!

Hamburger Icon

Web / Guides / Integrate via NPM

Get Started with WebViewer via NPM

This guide will show you how to get started with the WebViewer SDK through npm. By the end of this guide, you should be able load WebViewer into any app.


Prior to starting, you should have already installed Node and npm.

Get your Apryse trial key.

Apryse collects some data regarding your usage of the SDK for product improvement.

If you wish to continue without data collection, contact us and we will email you a no-tracking trial key for you to get started.

Integrate into your application

1. Install via NPM

Run the following command in your project:

npm i @pdftron/webviewer

This will install the main JS entrypoint, as well as download some static assets required for WebViewer to run.

2. Copy static assets

Next, we must copy the static assets required for WebViewer to run into a public location that will be served via HTTP/HTTPS (usually a dist or build folder). The static files are located in node_modules/@pdftron/webviewer/public.

Below are a few ways you could automate this process:

NPM script




You could add a script to your package.json that moves the static files for you after your build completes. This will copy all required files into the dist/public folder after your build is complete.
  "scripts": {
    "move-static": "cp -a ./node_modules/@pdftron/webviewer/public/. ./dist/public/webviewer",
    "build": "mybuildscript && npm run move-static"

3. Usage

When using WebViewer in your code, you will have to tell it where you copied these static files using the path parameter. Add your own license key in place of 'YOUR_LICENSE_KEY'.

Starting in version 10.2 you can choose to instantiate WebViewer using a web component instead of an iframe. See this guide for more information.

For example, if you copied the static files into dist/public/webviewer, your code would look something like this:


Web Component

import WebViewer from '@pdftron/webviewer'

  path: '/public/webviewer',
  licenseKey: 'YOUR_LICENSE_KEY',
}, document.getElementById('viewer'))
  .then(instance => {
    const { UI, Core } = instance;
    const { documentViewer, annotationManager, Tools, Annotations } = Core;
    // call methods from UI, Core, documentViewer and annotationManager as needed

    documentViewer.addEventListener('documentLoaded', () => {
      // call methods relating to the loaded document


Next step

Usage Guides Samples API docs

Have questions? Connect with our experts on Discord.