Adding these lines seems to fix the code for me:

    
const bytes  = new Uint8Array( pdfBytes ); 
const blob   = new Blob( [ bytes ], { type: "application/pdf" } );
const docUrl = URL.createObjectURL( blob );
setPdfInfo( docUrl );

Or use it directly:

return <iframe src={docUrl} type="application/pdf" />
Answer from Saed Jaber on Stack Overflow
🌐
PDF-LIB
pdf-lib.js.org
PDF-LIB · Create and modify PDF documents in any JavaScript environment.
Works in any JavaScript runtime, including browsers, Node, Deno, and even React Native. Add, insert, and remove pages. Split a single PDF into separate ones. Or merge multiple PDFs into a single document.
🌐
React-pdf
react-pdf.org
React-pdf
React renderer for creating PDF files on the browser and server
🌐
npm
npmjs.com › package › react-pdf
react-pdf - npm
Display PDFs in your React app as easily as if they were images.. Latest version: 10.2.0, last published: 2 months ago. Start using react-pdf in your project by running `npm i react-pdf`. There are 986 other projects in the npm registry using ...
      » npm install react-pdf
    
Published   Oct 09, 2025
Version   10.2.0
Author   Wojciech Maj
🌐
npm
npmjs.com › package › pdf-lib
pdf-lib - npm
Designed to work in any modern JavaScript runtime. Tested in Node, Browser, Deno, and React Native environments. ... pdf-lib was created to address the JavaScript ecosystem's lack of robust support for PDF manipulation (especially for PDF ...
      » npm install pdf-lib
    
Published   Nov 06, 2021
Version   1.17.1
Author   Andrew Dillon
🌐
GitHub
github.com › Hopding › pdf-lib
GitHub - Hopding/pdf-lib: Create and modify PDF documents in any JavaScript environment
Designed to work in any modern JavaScript runtime. Tested in Node, Browser, Deno, and React Native environments. ... pdf-lib was created to address the JavaScript ecosystem's lack of robust support for PDF manipulation (especially for PDF ...
Starred by 8.1K users
Forked by 827 users
Languages   TypeScript 80.9% | HTML 9.9% | JavaScript 8.5% | Objective-C 0.3% | CSS 0.2% | Starlark 0.1% | Java 0.1%
🌐
npm
npmjs.com › package › @react-pdf › pdfkit
react-pdf/pdfkit
A JavaScript PDF generation library for Node and the browser. This project is a fork of pdfkit by @devongovett and continued under the scope of this project since it has react-pdf specific features.
      » npm install @react-pdf/pdfkit
    
Published   Sep 23, 2025
Version   4.0.4
Author   Devon Govett
Find elsewhere
Top answer
1 of 5
25

I spent too much time today, piecing together fragments of other answers to this question. So here is a complete answer.

First you install pdfjs-dist:

npm install pdfjs-dist

And here is how to use it in an actual viewer component:

import React, { useEffect, useState, useRef, useCallback } from 'react';
import pdfjsLib from "pdfjs-dist/build/pdf";
import pdfjsWorker from "pdfjs-dist/build/pdf.worker.entry";

export default function PdfViewer({url}){
  const canvasRef = useRef();
  pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker;

  const [pdfRef, setPdfRef] = useState();
  const [currentPage, setCurrentPage] = useState(1);

  const renderPage = useCallback((pageNum, pdf=pdfRef) => {
    pdf && pdf.getPage(pageNum).then(function(page) {
      const viewport = page.getViewport({scale: 1.5});
      const canvas = canvasRef.current;
      canvas.height = viewport.height;
      canvas.width = viewport.width;
      const renderContext = {
        canvasContext: canvas.getContext('2d'),
        viewport: viewport
      };
      page.render(renderContext);
    });   
  }, [pdfRef]);

  useEffect(() => {
    renderPage(currentPage, pdfRef);
  }, [pdfRef, currentPage, renderPage]);

  useEffect(() => {
    const loadingTask = pdfjsLib.getDocument(url);
    loadingTask.promise.then(loadedPdf => {
      setPdfRef(loadedPdf);
    }, function (reason) {
      console.error(reason);
    });
  }, [url]);

  const nextPage = () => pdfRef && currentPage < pdfRef.numPages && setCurrentPage(currentPage + 1);

  const prevPage = () => currentPage > 1 && setCurrentPage(currentPage - 1);

  return <canvas ref={canvasRef}></canvas>;
}
2 of 5
9

This import will clear the undefined issue:

import * as pdfjsLib from "pdfjs-dist/build/pdf";
🌐
npm
npmjs.com › package › react-native-pdf-lib
react-native-pdf-lib - npm
This library would not be possible without the following projects: https://github.com/galkahana/PDF-Writer is used for handling PDFs on iOS. (The static binaries for v3.6 are built with hummus-ios-build). https://github.com/TomRoush/PdfBox-Android is used for handling PDFs on Android. Create PDFs from HTML: https://github.com/christopherdro/react-native-html-to-pdf
      » npm install react-native-pdf-lib
    
Published   Feb 09, 2020
Version   1.0.0
Author   Andrew Dillon
🌐
ThemeSelection
themeselection.com › home › blog › collections › 7 useful react pdf library and viewers 2025
7 Useful React PDF Library and Viewers 2025 - ThemeSelection
August 29, 2025 - React-PDF is a popular open-source library that enables developers to render PDF documents in React applications. Furthermore, it allows developers to display PDF documents directly within React applications, providing a seamless and efficient ...
🌐
GitHub
github.com › Hopding › react-native-pdf-lib
GitHub - Hopding/react-native-pdf-lib: Library for creating and editing PDFs in React Native.
If you're using React Native <= 59, you want to use v0.2.1 of this library. See here for manual installation instructions (manual installation should not be necessary). ... // Import from 'react-native-pdf-lib' import PDFLib, { PDFDocument, PDFPage } from 'react-native-pdf-lib'; // Create a PDF page with text and rectangles const page1 = PDFPage .create() .setMediaBox(200, 200) .drawText('You can add text and rectangles to the PDF!', { x: 5, y: 235, color: '#007386', }) .drawRectangle({ x: 25, y: 25, width: 150, height: 150, color: '#FF99CC', }) .drawRectangle({ x: 75, y: 75, width: 50, height: 50, color: '#99FFCC', }); // Create a PDF page with text and images const jpgPath = // Path to a JPG image on the file system...
Starred by 200 users
Forked by 78 users
Languages   C 75.5% | C++ 22.6% | Objective-C++ 0.9% | Java 0.7% | JavaScript 0.3% | Ruby 0.0%
🌐
Nutrient
nutrient.io › web › react
React PDF library: Fast & easy implementation | Nutrient SDK
Add PDF viewing, annotation, and editing capabilities to your React-based web application with Nutrient Web SDK. It offers developers a client-side JavaScript library that's fully compatible with React and enables seamless integration into both ...
🌐
React PDF Viewer
react-pdf-viewer.dev
A React component to view PDF documents - React PDF Viewer
import '@react-pdf-viewer/core/lib/styles/index.css'; import '@react-pdf-viewer/default-layout/lib/styles/index.css'; // Create new plugin instance · const defaultLayoutPluginInstance = defaultLayoutPlugin(); <Viewer · fileUrl='/assets/pdf-open-parameters.pdf' plugins={[ // Register plugins ·
🌐
Nutrient
nutrient.io › blog › sdk › how to build a reactjs pdf viewer with react pdf
React PDF viewer: Complete guide to building with react-pdf in 2025
August 12, 2025 - While the previous section demonstrated basic PDF viewing with react-pdf, many applications require additional document processing capabilities. Nutrient’s React PDF library provides a comprehensive platform with minimal setup time.
🌐
LogRocket
blog.logrocket.com › home › managing pdfs in node with pdf-lib
Managing PDFs in Node with pdf-lib - LogRocket Blog
June 4, 2024 - pdf-lib is a third-party package that runs in Node.js, Deno, React Native, and the browser. The features that make pdf-lib better than most of the other similar JavaScript packages include:
🌐
Nutrient
nutrient.io › blog › sdk › how to build a javascript pdf editor
JavaScript PDF editor tutorial using pdf‑lib
November 4, 2024 - pdf-lib(opens in a new tab) is a versatile JavaScript library for creating and modifying PDF documents in any JavaScript environment, including browsers, Node.js, Deno, and React Native.
🌐
GitHub
github.com › Shogobg › rn-pdf-lib
GitHub - Shogobg/rn-pdf-lib: Library for creating and editing PDFs in React Native.
If you see any issue and you're using an old React Native version, plase upgrade and try again. This library supports Android devices >= API 31, and iOS devices >= iOS 8.0. Latest version that supported Android API 18 was 1.0.3 · See here for manual installation instructions (manual installation should not be necessary). ... import PDFLib, { PDFDocument, PDFPage } from '@shogobg/react-native-pdf'; // Create a PDF page with text and rectangles const page1 = PDFPage .create() .setMediaBox(200, 200) .drawText('You can add text and rectangles to the PDF!', { x: 5, y: 235, color: '#007386', }) .drawRectangle({ x: 25, y: 25, width: 150, height: 150, color: '#FF99CC', }) .drawRectangle({ x: 75, y: 75, width: 50, height: 50, color: '#99FFCC', }); // Create a PDF page with text and images const jpgPath = // Path to a JPG image on the file system...
Starred by 10 users
Forked by 2 users
Languages   C 75.4% | C++ 22.6% | Objective-C++ 0.9% | Java 0.8% | JavaScript 0.3% | Ruby 0.0%
🌐
CloudDefense.ai
clouddefense.ai › code › javascript › example › pdf-lib
Top 10 Examples of pdf-lib code in Javascript
Since this is a Node script, we can just // save the `pdfBytes` to the file system, where it can be opened with a PDF // reader. const filePath = `${__dirname}/modified.pdf`; fs.writeFileSync(filePath, pdfBytes); console.log(`PDF file written to: ${filePath}`); ... // JavaScript runtime (e.g. ...
🌐
GitHub
github.com › diegomura › react-pdf
GitHub - diegomura/react-pdf: 📄 Create PDF files using React
React renderer for creating PDF files on the browser and server
Starred by 16.2K users
Forked by 1.3K users
Languages   TypeScript 83.1% | JavaScript 16.8%