Get Started

play_arrow

Learn more

play_arrow

Common use cases

play_arrow

Open a document

play_arrow

Save a document

play_arrow

Viewer

play_arrow

UI Customization

play_arrow

Annotations

play_arrow

Collaboration

play_arrow

Forms

play_arrow

Signature

play_arrow

Measurement

play_arrow

PDF.js Express REST API

play_arrow

Integrating TypeScript with PDF.js Express JavaScript PDF library

Welcome to PDF.js Express. This guide will show you how to get started with a free trial of the PDF.js Express SDK with a basic TypeScript project using the declaration file using it to display a simple WebViewer element on a local server. Your free trial includes unlimited trial usage and support from solution engineers.

PDF.js Express now has a working beta TypeScript declaration file that you can use with your projects to reap the benefits of static type checking and autocomplete to improve the speed of your development process.

Get the TypeScript sample source code here

Prerequisites

Node.js is not required for PDF.js Express
PDF.js Express does not require Node, npm, or node_modules. It is only recommended to run the samples.
No trial license key required.
The trial of PDF.js Express SDK works without a license key. A commercial license key is required for use in a production environment. Please purchase a license key if you do not have one.

Initial setup

  1. Clone the pdfjs-express-typescript-sample repository:

    git clone https://github.com/pdfjs-express/pdfjs-express-typescript-sample.git
    
  2. Enter the directory and run npm install:

    cd pdfjs-express-typescript-sample
    npm install
    

    This will automatically download and extract the PDF.js Express WebViewer Package and other dependencies.

  3. Use the following command to watch for changes in .ts files present in the src folder. If you make changes, it will automatically recompile the index.ts file again to produce a matching index.js file which the browser will use.

    npm run watch
    

    You may get some errors regarding 'object' and 'Promise' types but they can be safely ignored. The watch command will occupy a process.

You are now ready to run the sample or use more WebViewer APIs.

Sample overview

After initial setup, the pdfjs-express-typescript-sample directory should be laid out like this:

pdfjs-express-typescript-sample
├── LICENSE
├── package.json
├── package-lock.json
├── README.md
├── tsconfig.json
├── node_modules
│   ├── ...
├── public  
│   ├── lib
│   │    ├── ...
│   └── index.html
└── src
    ├── index.ts
    └── index.js

Notable files and directories include:

File/Folder Description
LICENSE Lists the copyright and license information.
package.json Lists the manifest of the project and contains the author/version metadata.
public Contains the static index.html page that is loaded onto the browser and all other resources for the project including the icon. This is also where the PDF.js Express Webviewer lib is extracted to when you run npm install.
src Contains the TypeScript file with the WebViewer instantiation which is compiled down to JavaScript in index.js.

src/index.ts is also where the WebViewer API calls are placed (inside methods of the App class).

Run the sample

  1. Run the application by executing the following in a new shell service provider window (while the previous one is still running):
   npm start

Your app should look like this:

typescript WebViewer Sample

Note: If your browser does not open automatically to open the WebViewer, navigate to localhost:3000 to see the project.

Use more WebViewer APIs

To call more WebViewer APIs, open index.ts in your favorite text editor and add the API calls to the callback for the WebViewer instantiation:

WebViewer({
    path: '../public/lib', // path to the PDF.js Express 'lib' folder on your server
    licenseKey: 'Insert commercial license key here after purchase',
    initialDoc: 'https://pdftron.s3.amazonaws.com/downloads/pl/webviewer-demo.pdf',
    // initialDoc: '/path/to/my/file.pdf',  // You can also use documents on your server
  }, document.getElementById('viewer'))
  .then(function(instance) {
    const docViewer = instance.docViewer;
    const annotManager = instance.annotManager;
    // call methods from instance, docViewer and annotManager as needed

    // you can also access major namespaces from the instance as follows:
    const Tools = instance.Tools;
    const Annotations = instance.Annotations;
  });

For example, if you want to change the theme of the WebViewer to dark mode, you would add the following with the help of autocomplete and type intellisense in your IDE:

instance.setTheme('dark');

Execute npm start if it isn't already running, and the theme of the viewer will change. Refresh your browser page if the server is already running to see your changes.

typescript Sample Dark

Next step

Guides Samples API docs