Select a product

PDF.js Express Free Viewerplay_arrow

Professional PDF.js Viewing - Free

PDF.js Express Plusplay_arrow

Professional PDF.js Viewing & Annotations - Try for free

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

Add a watermark to a document using the Express REST API

The following features are available in:

check

PDF.js Express Viewer

help_outline

PDF.js Express Viewer is a free viewer that has limited capabilities compared to PDF.js Express Pro

check

PDF.js Express Plus

help_outline

PDF.js Express Plus is a paid product that supports annotating, signing, form filling and more

This endpoint adds a watermark to your document.

Each successful call to this endpoint counts as one action.

NOTE: It is strongly recommended to use the Rest API Utility package

Endpoint

POST https://api.pdfjs.express/watermark

Body params

The request body must be formatted as multipart/form-data

NameTypeDescription
fileBinary or URLThe file to add the watermark too
licensestringYour PDF.js Express API license key. You must pass the correct license key depending if you are making the request from the server or the client. If no license key is provided, the output will be watermarked and usage will be heavily limited.
textstringThe text to apply as the watermark. Defaults to 'PDF.js Express'
colorstringThe color the text should be. Should be a valid css color with no opacity. Defaults to 'cornflowerblue'
position'center', 'top', or 'bottom'Where to position the watermark. Defaults to 'center'
scaleNumber between 0 and 1The scale of the text compared to the document. Is ignored if 'fontSize' is set.
fontSizenumberThe size of the text that gets watermarked
opacitynumber between 0-1The opacity of the watermark. Defaults to 0.3
rotationnumberThe rotation of the watermark in degrees. Defaults to 45
headersstringified JSONHeaders to forward when the API downloads your file. Only used if file param is a URL. See this guide for more details.

Response body (success)

A success response will come back in json format and will contain the following:

PropertyTypeDescription
urlstringThe URL where the processed file can be downloaded from (using proper authentication)
idstringThe unique id of the file. Used to delete the file
keystringAn authentication required used to GET the file. See details here

Response body (error)

See the list of error responses for details.

Example

The following adds a watermark to the document when the user downloads it.

WebViewer({...options})
  .then(instance => {

  const { docViewer } = instance;

  // a callback function to some "download" button
  const onSave = async () => {
    const fileData = await docViewer.getDocument().getFileData({});

    const data = new FormData();
    data.append('file', fileData);
    data.append('license', my_license_key);
    data.append('text', "Property of my app")
    data.append('rotation', 0);
    data.append('color', 'red');

    // Process the file
    const response = await fetch('https://api.pdfjs.express/watermark', {
      method: 'post',
      body: data
    }).then(resp => resp.json());

    const { url, key, id } = response;

    // Download the file
    const watermarkedFileBlob = await fetch(url, {
      headers: {
        Authorization: key
      }
    }).then(resp => resp.blob())

    // Do something with blob...
    // save(watermarkedFileBlob)
  }

})

WebViewer({...options})
  .then(instance => {

  const { documentViewer } = instance.Core;

  // a callback function to some "download" button
  const onSave = async () => {
    const fileData = await documentViewer.getDocument().getFileData({});

    const data = new FormData();
    data.append('file', fileData);
    data.append('license', my_license_key);
    data.append('text', "Property of my app")
    data.append('rotation', 0);
    data.append('color', 'red');

    // Process the file
    const response = await fetch('https://api.pdfjs.express/watermark', {
      method: 'post',
      body: data
    }).then(resp => resp.json());

    const { url, key, id } = response;

    // Download the file
    const watermarkedFileBlob = await fetch(url, {
      headers: {
        Authorization: key
      }
    }).then(resp => resp.blob())

    // Do something with blob...
    // save(watermarkedFileBlob)
  }

})