react 加载预览pdf 方法总结,全面分析,pdfjs.GlobalWorkerOptions.workerSrc!!!

公司最近需要加一个pdf预览功能,但是远程镜像资源服务器那边不能放开所有ip访问,所以我们不能用正常思维去写这个组件,不多说上代码:

1.使用react-pdf插件,前提是你们公司服务器没有跨域限制

import { Document, Page, pdfjs } from 'react-pdf';

//在你想展示的地方放这个进去
          <Document
            file={yourpdfUrl}
            onLoadSuccess={this.onDocumentLoadSuccess}//这个是回调成功的函数
            loading={<div>Please wait!</div>}>
            <Page pageNumber={this.state.pageNum} />
          </Document>

2.对于上面的那个方法如果远程服务器允许你访问那就没啥问题,如果不能访问那就会有跨域的问题,一般来说只要不是很麻烦只要配置一下镜像存储中的跨域规则就好,但是由于公司流程很繁琐就换了种方式

让后端以base64格式返回给你前端,或者后端以文件流的方式给你你用readFile转成base64的也可以,同样用上面的插件

//这里给大家写上js bobl转base64方法
var reader = new FileReader();
reader.readAsDataURL(bobl你的文件流);
reader.onload = function(){
    console.log(reader.result); //这里就是装换成功的base64文件了
};

import { Document, Page, pdfjs } from 'react-pdf';

//在你想展示的地方放这个进去
          <Document
            file={'data:application/pdf;base64,'+yourpdfUrl}//关键点!!!!!!!!!!指定类型
            onLoadSuccess={this.onDocumentLoadSuccess}//这个是回调成功的函数
            loading={<div>Please wait!</div>}>
            <Page pageNumber={this.state.pageNum} />
          </Document>

如果用base64一定要指明类型!!!!!!!

4.在一个这个插件需要引用一个js文件这个文件可以cdn远程加载,也可以用本地方法

//这是本地加载
import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry';
pdfjs.GlobalWorkerOptions.workerSrc = pdfjsWorker;
//cdn远程加载
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;

3.如果上面的插件你觉得不好用有个神级标签你可以用叫embed

<embed src={"data:application/pdf;base64,"+this.state.PDFBlob} title=' '  type="application/pdf" style={{width:'100%',height:'600px'}} />
//这里同样需要指明类型,如果是以URl形式来的话那就直接是Url就可以了,这个插件自带了很多功能还是很不错的

 

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
React中使用react-pdf插件来实现弹窗预览PDF的功能是可行的。根据你提供的引用内容,你已经选择了react-pdf插件来实现这个需求。为了解决react-pdf插件的一些问题,你可以在引入react-pdf的下一行代码中添加以下代码来解决问题:pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`。这段代码可以确保react-pdf插件正常工作。此外,你还提到了react-file-viewer插件可以用来预览docx和xlsx格式的文件。所以,你可以使用react-pdf插件来预览PDF文件,而使用react-file-viewer插件来预览docx和xlsx文件。这样可以满足你的需求。 #### 引用[.reference_title] - *1* *2* [react中使用react-pdf弹窗预览pdf](https://blog.csdn.net/michen1127/article/details/131416422)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [React文件预览,React实现在线预览docx,xslx,pdf格式文件](https://blog.csdn.net/a82048195/article/details/107681577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值