genus-pdf-viewer
v0.1.9
Published
Angular PDF viewer built on pdf.js (`pdfjs-dist`) with a small API and worker setup that works in Amplify/Capacitor.
Readme
@genus/pdf-viewer
Angular PDF viewer built on pdf.js (pdfjs-dist) with a small API and worker setup that works in Amplify/Capacitor.
Install
npm i pdfjs-distThis library declares pdfjs-dist as a dependency and Angular as peer dependencies.
Worker setup (recommended: library provider)
Use the provider shipped by the library, which sets a sensible default and allows overrides.
// main.ts or app.config.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { provideGenusPdfViewer } from '@genus/pdf-viewer';
import { AppComponent } from './app/app.component';
bootstrapApplication(AppComponent, {
providers: [
provideGenusPdfViewer({
// optional overrides:
// workerSrc: '/assets/pdf.worker.min.mjs',
// tryModuleWorker: true,
})
]
});Notes:
- The provider first tries a module worker (
new URL('pdfjs-dist/build/pdf.worker.min.mjs', import.meta.url)) and falls back toworkerSrcif needed. - Default
workerSrcis/assets/pdf.worker.min.mjs. If using that, copynode_modules/pdfjs-dist/build/pdf.worker.min.mjstosrc/assets/pdf.worker.min.mjsand ensureangular.jsonincludessrc/assets. - Optional CMaps: copy
node_modules/pdfjs-dist/cmapstosrc/assets/cmaps/and setcMapUrl/cMapPackedif you enable text layer.
Manual alternative (not recommended): set GlobalWorkerOptions.workerSrc yourself at bootstrap.
Usage
import { GenusPdfViewerComponent } from '@genus/pdf-viewer';<genus-pdf-viewer
[src]="docUrl"
[fit]="'width'"
[continuous]="true"
[showToolbar]="true">
</genus-pdf-viewer>Inputs: src, page, zoom, maxZoom, minZoom, fit, disableTextLayer, continuous, showToolbar.
Methods (via ViewChild): goTo(page), zoomIn(step), zoomOut(step).
Features
- Continuous scrolling with width-fit for a doc-like reading experience.
- Toolbar: zoom in/out, page nav, Download, Print.
- Pan when zoomed: cursor changes to grab/grabbing; drag to scroll.
Build
ng build genus-pdf-viewerArtifacts appear in dist/genus-pdf-viewer.
Notes
- Keep worker at
/assets/pdf.worker.min.mjsfor Amplify/Capacitor. - Ensure your server supports range requests for streaming PDFs.
