Overriding Dependency
@pdf-viewer/react@^1.5.0 requires pdfjs-dist as a peer dependency with a default version of 4.10.38. This means you do not need to manually install pdfjs-dist unless you want to use a different version.
If your project relies on a specific version of pdfjs-dist that differs from the default, you can override by adding an override in your package.json.
Install pdfjs-dist to Override
Section titled “Install pdfjs-dist to Override”Here is how you can install package pdfjs-dist with the latest version which is above 4.10.38.
bun add pdfjs-dist npm install pdfjs-dist --save pnpm add pdfjs-dist yarn add pdfjs-distBased on the example above, installing without specifying a version will install the latest version of
pdfjs-dist. To specify a version, you can add a suffix withpdfjs-dist@version(e.g.,npm install pdfjs-dist@4.7.76).
Using React with Webpack
Section titled “Using React with Webpack”- Install package
copy-webpack-plugin
bun add copy-webpack-plugin --dev npm install copy-webpack-plugin --save-dev pnpm install copy-webpack-plugin -D yarn add copy-webpack-plugin -D- Add configurations to
webpack.config.js
const CopyPlugin = require('copy-webpack-plugin')
module.exports = { // ...config plugins: [ new CopyPlugin({ patterns: [ { from: 'node_modules/pdfjs-dist/legacy/build/pdf.worker.min.mjs', to: 'pdf.worker.min.mjs' } ] }) /// ...other plugins ]}- Add
/pdf.worker.min.mjsto theworkerUrlprop in theRPConfigcomponent
import { RPConfig, RPProvider, RPDefaultLayout, RPPages } from '@pdf-viewer/react'import React from 'react'
export default function App() { return ( <div> <RPConfig workerUrl={'/pdf.worker.min.mjs'}> <RPProvider src="https://cdn.codewithmosh.com/image/upload/v1721763853/guides/web-roadmap.pdf"> <RPDefaultLayout> <RPPages /> </RPDefaultLayout> </RPProvider> </RPConfig> </div> )}import { RPConfig, RPProvider, RPDefaultLayout, RPPages } from '@pdf-viewer/react'import React from 'react'
export default function App() { return ( <div> <RPConfig workerUrl={'/pdf.worker.min.mjs'}> <RPProvider src="https://cdn.codewithmosh.com/image/upload/v1721763853/guides/web-roadmap.pdf"> <RPDefaultLayout> <RPPages /> </RPDefaultLayout> </RPProvider> </RPConfig> </div> )}Using React with Vite
Section titled “Using React with Vite”- Add configurations to
vite.config.jsorvite.config.ts
import { defineConfig } from 'vite'
export default defineConfig({ // ...config optimizeDeps: { include: ['pdfjs-dist'] // ... }})- Add
/pdf.worker.min.mjsto theworkerUrlprop in theRPConfigcomponent
import { RPConfig, RPProvider, RPDefaultLayout, RPPages } from '@pdf-viewer/react'import workerSrc from 'pdfjs-dist/build/pdf.worker.min.mjs?url'
function AppPdfViewer() { return ( <RPConfig workerUrl={workerSrc}> <RPProvider src="https://cdn.codewithmosh.com/image/upload/v1721763853/guides/web-roadmap.pdf"> <RPDefaultLayout> <RPPages /> </RPDefaultLayout> </RPProvider> </RPConfig> )}export default AppPdfViewerimport { RPConfig, RPProvider, RPDefaultLayout, RPPages } from '@pdf-viewer/react'import workerSrc from 'pdfjs-dist/build/pdf.worker.min.mjs?url'
function AppPdfViewer() { return ( <RPConfig workerUrl={workerSrc}> <RPProvider src="https://cdn.codewithmosh.com/image/upload/v1721763853/guides/web-roadmap.pdf"> <RPDefaultLayout> <RPPages /> </RPDefaultLayout> </RPProvider> </RPConfig> )}export default AppPdfViewerNext.js
Section titled “Next.js”- Add configurations to
next.config.jsornext.config.ts
const path = require('path')
/** @type {import('next').NextConfig} */const nextConfig = { // Config options here webpack: (config, { webpack }) => { config.plugins.push( new webpack.NormalModuleReplacementPlugin(/^pdfjs-dist$/, (resource) => { resource.request = path.join(__dirname, './node_modules/pdfjs-dist/webpack') }) ) return config }}
module.exports = nextConfig;import { NextConfig } from "next";import path from 'path';
const nextConfig: NextConfig = { /* config options here */ webpack: (config, { webpack }) => { config.plugins.push( new webpack.NormalModuleReplacementPlugin(/^pdfjs-dist$/, (resource: any) => { resource.request = path.join(__dirname, './node_modules/pdfjs-dist/webpack') }) ) return config }};
export default nextConfig;TypeScript
Section titled “TypeScript”For TypeScript, you may get an error Cannot find module 'pdfjs-dist/build/pdf.worker.min.mjs?url' or its corresponding type declarations. from import import workerSrc from 'pdfjs-dist/build/pdf.worker.min.mjs?url'.
To resolve this issue, you can add file .d.ts (e.g., global.d.ts) with the content below to your project
declare module '*?url' { const content: string export default content}