For the complete documentation index, see llms.txt. This page is also available as Markdown.

Open and Load PDFs and Documents Using JavaScript

There are a few ways to open a document such as from a URL, a blob, arrayBuffer, the filesystem, or base64 data. Additionally, there are loading options to help WebViewer determine the type of the file being loaded.

Opening a document in WebViewer from URL

If you have a URL for a document, you can open it by including initialDoc as a constructor option or by using the loadDocument API.

Use the initialDoc constructor option to provide the document when mounting WebViewer.

WebViewer({
  ...,
  initialDoc: 'https://myserver.com/myfile.pdf',
}, document.getElementById('viewer')).then(instance => {
    const { documentViewer } = instance.Core;
    documentViewer.addEventListener('documentLoaded', () => {
      // perform document operations
    });
});
WebViewer({
  ...,
  initialDoc: 'https://myserver.com/myfile.pdf',
}, document.getElementById('viewer')).then(instance => {
    const { docViewer } = instance;
    docViewer.on('documentLoaded', () => {
      // perform document operations
    });
});

Use loadDocument to load documents with additional loading options after mounting WebViewer.

WebViewer(...)
  .then(instance => {
    instance.UI.loadDocument('https://myserver.com/myfile.pdf', { filename: 'myfile.pdf' });
    const { documentViewer } = instance.Core;
    documentViewer.addEventListener('documentLoaded', () => {
      // perform document operations
    });
  });
WebViewer(...)
  .then(instance => {
    instance.loadDocument('https://myserver.com/myfile.pdf', { filename: 'myfile.pdf' });
    const { docViewer } = instance;
    docViewer.on('documentLoaded', () => {
      // perform document operations
    });
  });

Opening a document in WebViewer from Blob

If your document is already in Blob format you can pass the Blob object directly to loadDocument function.

WebViewer(...)
  .then(instance => {
    // `myBlob` is your blob data which can come
    // from sources such as a server or the filesystem
    instance.UI.loadDocument(myBlob, { filename: 'myfile.pdf' });

    const { documentViewer } = instance.Core;
    documentViewer.addEventListener('documentLoaded', () => {
      // perform document operations
    });
  });
WebViewer(...)
  .then(instance => {
    // `myBlob` is your blob data which can come
    // from sources such as a server or the filesystem
    instance.loadDocument(myBlob, { filename: 'myfile.pdf' });

    const { docViewer } = instance;
    docViewer.on('documentLoaded', () => {
      // perform document operations
    });
  });

Opening a document from ArrayBuffer

If your document is already in ArrayBuffer format you can convert the ArrayBuffer object to a Blob and then pass resulting Blob directly to loadDocument function.

Opening a document in WebViewer from file system

Enable File Browser Option

If you wish to allow users to open files from their local file system, you can enable this feature with:

You can enable the file picker with Features at any point in time.

You can also specify this via the WebViewer constructor at the very beginning.

And this option will be available to users in the top-right of the WebViewer UI:

With a File Object

If you have the File object, from a file picker for example, you can pass the object directly to the loadDocument function. File objects are similar to Blobs and should load fine.

Opening a document in WebViewer from base64 data

If you have the file data as a base64 string, the best way to load the document in WebViewer is to first convert it to a Blob and then load it as described for Blobs. Below is some example code showing how to convert base64 to a Blob.

See more WebViewer events such as documentLoaded to understand when to execute API operations.

Loading options

WebViewer provides various options to load a document. Whether you are loading a document through the initialDoc option in the constructor or calling loadDocument after mounting, you can always provide options to load your document.

The extension option

When loading a document using a URL, WebViewer will use the URL to determine what type of file it is. For example http://myserver.com/myfile.docx ends with .docx so WebViewer will assume it's a docx file. However, what happens if you are loading from a blob or extensionless URL? That's where the extension option comes in.

You can use the extension option to explicitly tell WebViewer what type of file it is. For example, extension: 'docx' or extension: 'png'. By default WebViewer will assume it's a PDF file but that might not be correct.

Via WebViewer Constructor

Via API

The filename option

The filename option is used to indicate the name of the file when you press the download button in the viewer. However, the option can also be used as a way of indicating the type of file you are opening when the URL does not end with a file extension. Note that the extension property has precedence over filename for determining the document type.

Via WebViewer Constructor

Via API

The customHeaders option

If your document server requires additional options in the HTTP request, you can use the second argument in loadDocument function to pass them. This is especially useful when you need the Authorization header in the request with your auth key.

The password option

For password-protected documents, it can be provided during the loadDocument call via the options argument. It can either take the password string or a function that will eventually provide a password via a callback provided as a parameter.

The customHandlerId option

An Apryse custom security handler easily encrypts and secures documents with our algorithm to allow opening the document only in WebViewer (or PDFNet).

For these types of documents, it is necessary to provide the integer custom handler ID along with the password.

If you run into any issues loading a document, please visit our FAQ for loading errors.

Last updated

Was this helpful?