react-pdf本地引入pdf.worker.min.js

2 篇文章 0 订阅
1 篇文章 0 订阅

官网提供的示例

import { pdfjs } from 'react-pdf';
pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.js`;

使用官方提供的的链接引入worker可能会存在加载错误的问题,可能由于服务器的问题导致,所以使用本地引入可以很好的避免这类问题;
本地引入示例代码

import { Document, Page } from 'react-pdf/dist/esm/entry.webpack5';
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.min';

我使用的是webpack5,官方推荐从react-pdf/dist/esm/entry.webpack5中引入,但是直接从react-pdf中引入也没有问题,可以使用,之后引入Workerpdfjs-dist/build/pdf.worker.min;但是按照官方的写法需要加载到pdfjs.GlobalWorkerOptions.workerSrc上面去,首先想到的是从pdfjs-dist/build/pdf.worker.min中引入之后直接赋值

import { Document, Page } from 'react-pdf/dist/esm/entry.webpack5';
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.min';
// 这样赋值会报错
pdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker;

后来发现Document组件提供了一个属性options,可以使用该属性来加载文件,代码如下:

 <Document
    file={pdfFile}
    onLoadSuccess={onDocumentLoadSuccess}
    options={{ workerSrc: pdfjsWorker }}
  >
    <Page scale={1} pageNumber={pageNumber} />
 </Document>

这样的好处再与不用请求官方提供的url了,对worker稳定获取很有帮助,不好的地方在于文件有点大,将近1M的大小会打包到项目;
我是ts项目,再引入pdfjs-dist/build/pdf.worker.min会报错,原因是没有对应的声明文件,加上声明文件就好了,代码如下:

declare module 'pdfjs-dist/build/pdf.worker.min';

还有一种方法,可以将该文件放在自家服务器上,访问也会稳定一些;

好了,希望可以帮到大家,散会~~(^ v ^)~~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值