#概要
TypeScriptでPDF.jsを使う際にコンパイルは通るが、実行時に致命的な機能がないと言われた時の対処方法です。
調べてもドキュメントが少なかったので、ここに残します。
#環境
Node.js:v14.17.0
@types/pdfjs-dist:2.7.3
pdfjs-dist:2.8.335
#発生事象
処理実行中下記メッセージが出力されてエラーとなる。
「The browser/environment lacks native support for critical functionality used by the PDF.js library (e.g.
ReadableStream
); please use alegacy
-build instead.'」
エラーとなったコード
test.ts
import { getDocument } from 'pdfjs-dist';
export class TestClass {
async getNumPages(file: Express.Multer.File) {
const pdf = getDocument({
data: file.buffer
}).promise;
const page = (await pdf).numPages;
return page;
}
}
#対処方法
エラーの指示通り、レガシーなモジュール(pdfjs-dist/legacy/build/pdf)を使い、解決しました。
修正済のコード
test.ts
import { getDocument } from 'pdfjs-dist/legacy/build/pdf';
export class TestClass {
async getNumPages(file: Express.Multer.File) {
const pdf = getDocument({
data: file.buffer
}).promise;
const page = (await pdf).numPages;
return page;
}
}