微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在 Vue 项目中导入 Mozilla PDF.js?

问题很简单。如何将 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" />
,

Pdf.js 为我们提供解决方案。 Webpack.js 包含在项目中。

const pdfjsLib = require("pdfjs-dist/webpack");

如果出现如下错误:

./node_modules/pdfjs-dist/build/pdf.min.js 22:36927
Module parse failed: Unexpected token (22:36927)

然后我们必须使用es5/build/pdf.js,这样我们就可以创建src/pdfjs-webpack.js :

"use strict";

var pdfjs = require("pdfjs-dist/es5/build/pdf.min.js");
var PdfjsWorker = require("worker-loader?esModule=false&filename=[name].js!pdfjs-dist/es5/build/pdf.worker.min.js");

if (typeof window !== "undefined" && "Worker" in window) {
  pdfjs.GlobalWorkerOptions.workerPort = new PdfjsWorker();
}

module.exports = pdfjs;

然后:

const pdfjsLib = require("../pdfjs-webpack");
,

@NKSM

使用:var pdfjs = require('pdfjs-dist/es5/build/pdf.min.js');

但是错误


* pdfjs-dist/es5/build/pdf.min.js in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/utils/preview/Index.vue?vue&type=script&lang=js&

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。