javascript - 如何在Vue项目中导入Mozilla PDF.js?

标签 javascript node.js vue.js pdf.js pdfjs-dist

问题很简单。如何将 PDF.js 库正确导入 Vuejs 项目?

当我记录它时,库是 undefined

See my problem in a codesandbox live here .

这就是我现在尝试的方式:

<script>
import pdfjsLib from "pdfjs-dist/build/pdf";
// import { PDFViewer } from "pdfjs-dist/web/pdf_viewer";
import "pdfjs-dist/web/pdf_viewer.css";

pdfjsLib.GlobalWorkerOptions.workerSrc =
  "https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.943/build/pdf.worker.min.js";

export default {
  name: "PdfViewer",
  mounted() {
    pdfjsLib.getDocument("./sample.pdf").then((doc) => {
      console.log("doc: ", doc);
    });
  },
  methods: {},
};
</script>

但这给了我以下错误:Cannot read property 'GlobalWorkerOptions' of undefined

最佳答案

我认为如果 pdfjsLib 不属于全局范围就会出现错误 ,另见 codesandbox :

<template>
  <div id="pageContainer">
    <div id="viewer" class="pdfViewer"></div>
  </div>
</template>

<script>
import pdfjsLib from "pdfjs-dist/build/pdf";
import { PDFViewer } from "pdfjs-dist/web/pdf_viewer";
import "pdfjs-dist/web/pdf_viewer.css";

pdfjsLib.GlobalWorkerOptions.workerSrc =
  "https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.943/build/pdf.worker.min.js";

export default {
  name: "PdfViewer",
  props: { docPath: String },
  mounted() {
    this.getPdf();
  },
  methods: {
    async getPdf() {
      let container = document.getElementById("pageContainer");
      let pdfViewer = new PDFViewer({
        container: container,
      });
      let pdf = await pdfjsLib.getDocument(this.docPath);
      pdfViewer.setDocument(pdf);
    },
  },
};
</script>

<style>
#pageContainer {
  margin: auto;
  width: 80%;
}

div.page {
  display: inline-block;
}
</style>

使用它:

<PdfViewer docPath="./sample.pdf" />

关于javascript - 如何在Vue项目中导入Mozilla PDF.js?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65750584/

相关文章:

javascript - jQuery onclick div 检查复选框

node.js - 如何在nodejs上使用RabbitMQ的消息

javascript - VueJS 不适用于移动设备

javascript - Firebase:FacebookAuthProvider 不是构造函数

node.js - 在 Mongoose 中更新/创建模型时,有什么理由将用户输入的数据列入白名单?

javascript - 数组项的 Ajax post req 给我一个空响应

javascript - 将导航栏菜单类设置为事件状态,直到单击另一个菜单或直到用户停留在某个 Controller 中?

javascript - 我应该如何使用 jquery 查找内部类。我是新手,所以我知道如何选择单个类而不是内部类?

Javascript - 多个自定义下拉列表无法按预期工作

node.js - Rich Embed 中的 Discord.js 标签 channel