diff --git a/pdf.js b/pdf.js index ee5d32c..a27385c 100644 --- a/pdf.js +++ b/pdf.js @@ -129,7 +129,12 @@ const makeTOCItem = (item) => ({ subitems: item.items.length ? item.items.map(makeTOCItem) : null, }); -export const makePDF = async (file) => { +export const makePDF = async (file, options = {}) => { + const cMapUrl = options.cMapUrl ?? pdfjsPath("cmaps/"); + const standardFontDataUrl = options.standardFontDataUrl ?? pdfjsPath("standard_fonts/"); + if (options.workerSrc) { + pdfjsLib.GlobalWorkerOptions.workerSrc = options.workerSrc; + } const transport = new pdfjsLib.PDFDataRangeTransport(file.size, []); transport.requestDataRange = (begin, end) => { file @@ -141,8 +146,8 @@ export const makePDF = async (file) => { }; const pdf = await pdfjsLib.getDocument({ range: transport, - cMapUrl: pdfjsPath("cmaps/"), - standardFontDataUrl: pdfjsPath("standard_fonts/"), + cMapUrl, + standardFontDataUrl, isEvalSupported: false, }).promise; diff --git a/view.js b/view.js index 7397ea2..d37f791 100644 --- a/view.js +++ b/view.js @@ -76,7 +76,7 @@ const fetchFile = async url => { return new File([await res.blob()], new URL(res.url).pathname) } -export const makeBook = async file => { +export const makeBook = async (file, options = {}) => { if (typeof file === 'string') file = await fetchFile(file) let book if (file.isDirectory) { @@ -105,7 +105,7 @@ export const makeBook = async file => { } else if (await isPDF(file)) { const { makePDF } = await import('./pdf.js') - book = await makePDF(file) + book = await makePDF(file, options.pdf) } else { const { isMOBI, MOBI } = await import('./mobi.js') @@ -230,10 +230,10 @@ export class View extends HTMLElement { this.renderer.goTo(resolved) }) } - async open(book) { + async open(book, options = {}) { if (typeof book === 'string' || typeof book.arrayBuffer === 'function' - || book.isDirectory) book = await makeBook(book) + || book.isDirectory) book = await makeBook(book, options) this.book = book this.language = languageInfo(book.metadata?.language)