A Netless App that renders PDF files with PDF.js.
npm add @netless/app-pdfjs
Important
This app only implements viewing PDF files.
It does not support dispatchDocsEvent()
nor export PDF
.
-
Get a static URL pointing to the PDF file.
This package only synces the URL for each client to download the PDF. You have to obtain a static URL to the file first to continue. For example, you can use an OSS to achieve this.
-
Register this app before joinning room.
import { register } from "@netless/fastboard" import { install } from "@netless/app-pdfjs" install(register) // the app is named 'PDFjs'
-
Add this app after joinning room.
fastboard.manager.addApp({ kind: 'PDFjs', options: { title: 'a.pdf', scenePath: '/pdf/paper' // ! This is required. }, attributes: { src: 'https://cdn.jsdelivr.net/gh/mfogel/polygon-clipping/paper.pdf' } })
This package downloads the latest PDF.js release from jsDelivr:
https://cdn.jsdelivr.net/npm/pdfjs-dist@latest/build/
To alter this URL or choose a different version, set the app option:
install(register, {
appOptions: {
pdfjsLib: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@latest/build/pdf.min.mjs',
workerSrc: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@latest/build/pdf.worker.min.mjs'
}
})
If the URL is blocked by your CSP,
you have to add them to your script-src
policy:
Content-Security-Policy: script-src https://cdn.jsdelivr.net/
This package only targets modern browsers that support native ES modules.
As the package name implies, it uses PDF.js to render the file. It is possible that PDF.js has a bug when rendering some files. Please raise an issue there to ask for help.
MIT @ netless