PDF.js Express Plusplay_arrow

Professional PDF.js Viewing & Annotations - Try for free

side menu

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

Searching

play_arrow

Measurement

play_arrow

Compare

play_arrow

Advanced Capabilities

play_arrow

PDF.js Express REST API

play_arrow

Migration Guides

play_arrow

Default UI for WebViewer

The following features are available in:

check

PDF.js Express Viewer

help_outline

PDF.js Express Viewer is a free viewer with limited capabilities compared to PDF.js Express Plus

check

PDF.js Express Plus

help_outline

PDF.js Express Plus is a commercial PDF SDK for viewing, annotating, signing, form filling and more

A complete and responsive user interface is provided out of the box in the WebViewer download package, allowing you to quickly get started integrating a document viewer into your web app. Zooming, thumbnails, searching, annotation tools and comments are just a few of the features provided by the UI.

APIs are provided to allow you to customize the look and feel of the UI and the code is open source for more advanced customizations. The UI uses WebViewer's core document APIs to handle rendering and document manipulation.

WebViewer UI

How it works behind the scenes

When using the UI your web app HTML page might look something like this:

<!-- Your app's HTML page -->
<html>
  <head>
    <script src="my-app-code.js"></script>
    <script src="webviewer/lib/webviewer.min.js"></script>
  </head>
  <body>
    <!-- viewerElement passed to WebViewer -->
    <div id="viewer">
    </div>
  </body>
</html>

When the page loads, webviewer.min.js will create an iframe inside the specified viewer element with the src set to the WebViewer UI's index.html:

<div id="viewer">
  <iframe src="webviewer/lib/ui/build/index.html#d=...">
    <html>
      <body>
        <div id="app">
          <!-- The WebViewer UI and document scrollview elements -->
        </div>
        <!-- The WebViewer core JS library -->
        <script src="../../core/CoreControls.js"></script>
      </body>
    </html>
  </iframe>
</div>

The UI's HTML file loads CoreControls.js and uses those APIs to render the document.

<div id="viewer">
  <iframe src="webviewer/lib/ui/build/index.html#d=...">
    <html>
      <body>
        <div id="app">
          <!-- The WebViewer UI and document scrollview elements -->
        </div>
        <!-- The WebViewer core JS library -->
        <script src="../../core/webviewer-core.min.js"></script>
      </body>
    </html>
  </iframe>
</div>

The UI's HTML file loads webviewer-core.min.js and uses those APIs to render the document.