aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js/render/plugins/pdf-viewer.ts
blob: 40623be05576f30a5846b783ad6251509be57701 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import type {FileRenderPlugin} from '../plugin.ts';

export function newRenderPluginPdfViewer(): FileRenderPlugin {
  return {
    name: 'pdf-viewer',

    canHandle(filename: string, _mimeType: string): boolean {
      return filename.toLowerCase().endsWith('.pdf');
    },

    async render(container: HTMLElement, fileUrl: string): Promise<void> {
      const PDFObject = await import(/* webpackChunkName: "pdfobject" */'pdfobject');
      // TODO: the PDFObject library does not support dynamic height adjustment,
      container.style.height = `${window.innerHeight - 100}px`;
      if (!PDFObject.default.embed(fileUrl, container)) {
        throw new Error('Unable to render the PDF file');
      }
    },
  };
}