想明白了(有点)。
首先,我的
pdfjsLib
需要正确导入并提供
工人
打电话之前
getDocument
。这是我第二个问题的原因。以下是在Vue 2/Typescript项目中导入lib和worker的正确方法:
import * as pdfjsLib from 'pdfjs-dist'
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry'
然后将worker提供给库并调用getDocument:
pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker
const doc = await pdfjsLib.getDocument(YOUR_PDF_DATA).promise
OP中的其余代码工作正常。请注意
pdf.worker.entry
没有类型定义(或者至少我在任何地方都找不到它们),但它仍然有效。
多次调用处理程序的第一个问题似乎是Vuetify中的一个已知问题(或行为,如果您愿意的话)。他们建议使用
native
或
prevent
或
stop
定义时
click
属性(如
@click.stop="importButtonHandler"
)以减轻该行为。我试过,但没有成功。我的处理程序仍然被调用了两次。在我的特定情况下,这不会造成任何功能伤害,所以我现在可以忍受,但我可以想到这种行为可能是灾难性的。
希望这对以后的人有所帮助。