How to customize PDF.js

PDF.js is a great open-source project which is frequently updated and new features are being added to, however looks-wise it’s ugly, or maybe let’s say it looks outdated. How about getting the latest PDF features and fixes from PDF.js but having a slic…


This content originally appeared on DEV Community and was authored by GleamTech

PDF.js is a great open-source project which is frequently updated and new features are being added to, however looks-wise it's ugly, or maybe let's say it looks outdated. How about getting the latest PDF features and fixes from PDF.js but having a slick look on the presentation side?

The pdf viewer from PdfJsKit is unobtrusive, it doesn't directly change code of PDF.js, it just includes PDF.js in an iframe and at runtime override HTML, JS and CSS to offer a slick modern look and better ui structure and usability and new features. This way we can always update PDF.js to the latest version easily and get all bug fixes and improvements.

Other pdf viewers based on PDF.js usually don't update the default look, and the ones that does usually miss functionality due to separating into components but partially implementing them or offer a bad/partial API.

Getting started

Install the package to your project:

npm install pdfjskit

When the package is installed (or version is updated), assets (css, images etc.) used by PdfJsKit will be copied automatically from node_modules\pdfjskit\dist\pdfjskit to public\pdfjskit. Your project's public subdirectory is a common place for web assets, but if your JS framework has a different directory structure, you can move assets to another place.

By default PdfJsKit loads assets from pdfjskit subdirectory relative to host page but you can change this path via passing custom libraryPath option to PdfViewer constructor.

Usage

import PdfViewer from "pdfjskit";

var pdfViewer = new PdfViewer({
  documentUrl: "pdfjskit/sample.pdf",
  width: "80%",
  height: 720,
  resizable: true,
  language: "en-US",
  theme: "slate, classic-dark"
});

pdfViewer.render(document.getElementById("container"));

Note that the NPM package contains a ES6 module pdfjskit.min.mjs, also a script version pdfjskit.min.js is provided in GitHub dist/pdfjskit directory and in developer package offered here.

Using PdfJsKit in plain JS projects with Vite

You can use sse any JS framework (React, Vue, Angular, Svelte, Blazor etc) with PdfJsKit, however for simplicity in this post, I will show usage for plain JS projects.

For plain JS projects, I recommend using Vite, this way you can import from module in HTML files easily:

  1. Create a Vite project template:

    npm create vite@latest
    

    Choose the settings:

    ✔ Project name: … pdfjskit-vite-example
    ✔ Select a framework: › Vanilla
    ✔ Select a variant: › JavaScript
    
  2. A subdirectory with your project name will be created, do the following:

    cd pdfjskit-vite-example
    npm install
    npm install pdfjskit
    
  3. Edit index.html and replace contents with:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <title>PdfJsKit Vite Example</title>
      </head>
      <body>
    
        <div id="container"></div>
    
        <script type="module">
          import PdfViewer from "pdfjskit";
    
          var pdfViewer = new PdfViewer({
            documentUrl: "pdfjskit/sample.pdf",
            width: "80%",
            height: 720,
            resizable: true,
            language: "en-US",
            theme: "slate, classic-dark"
          });
    
          pdfViewer.render(document.getElementById("container"));
        </script>
    
      </body>
    </html>
    
  4. Now you can run the dev web server:

    npm run dev
    

    which will show:

    ➜  Local:   http://localhost:5173/
    ➜  Network: use --host to expose
    ➜  press h + enter to show help    
    

    Click the Local url with CTRL key to launch the browser.
    You will see that PDF Viewer is rendered in the page.

Documentation

Live Demos

Links:


This content originally appeared on DEV Community and was authored by GleamTech


Print Share Comment Cite Upload Translate Updates
APA

GleamTech | Sciencx (2024-10-19T18:38:21+00:00) How to customize PDF.js. Retrieved from https://www.scien.cx/2024/10/19/how-to-customize-pdf-js/

MLA
" » How to customize PDF.js." GleamTech | Sciencx - Saturday October 19, 2024, https://www.scien.cx/2024/10/19/how-to-customize-pdf-js/
HARVARD
GleamTech | Sciencx Saturday October 19, 2024 » How to customize PDF.js., viewed ,<https://www.scien.cx/2024/10/19/how-to-customize-pdf-js/>
VANCOUVER
GleamTech | Sciencx - » How to customize PDF.js. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/10/19/how-to-customize-pdf-js/
CHICAGO
" » How to customize PDF.js." GleamTech | Sciencx - Accessed . https://www.scien.cx/2024/10/19/how-to-customize-pdf-js/
IEEE
" » How to customize PDF.js." GleamTech | Sciencx [Online]. Available: https://www.scien.cx/2024/10/19/how-to-customize-pdf-js/. [Accessed: ]
rf:citation
» How to customize PDF.js | GleamTech | Sciencx | https://www.scien.cx/2024/10/19/how-to-customize-pdf-js/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.