最近项目中有这样一个需求:

1. 页面中可以显示pdf

2. 不希望把整个页面打印下来,只打印显示PDF的部分,可以使用浏览器自带打印功能

PDF文件的显示

拿到这个需求,真时一头雾水。因为没有做过类似需求,不知从何下手。在查阅资料的过程中,发现有很多jQuery插件可以实现显示pdf, 但是我们是react单页面应用项目,看来这些插件并不适用,只能另寻其它方法。

后来在npm上找到了react-pdf-js组件, 心想显示pdf有望。就迫不及待将 react-pdf-js 依赖 通过 cnpm install react-pdf-js --save-dev 命令安装到项目中,通过 import PDF from 'react-pdf-js' 引入到项目里。将插入render里。

在调试过程中发现静态pdf文件可以显示,在线pdf文件不能显示。通过控制的报错信息了解道,react-pdf-js组件要求file文件地址是url或者base64格式, 既然url行不通,就只能往base64上靠了。

获取PDF文件

一开始我直接将将pdf的在线地址url转换为base64,但是不能显示。后来想明白了,只把url转换成base64格式是没有用的,需要把pdf的文件内容转换成base64才行。接下来就顺理成章,通过从后台获取到的pdf的url地址,再次请求获取到pdf文件。

在做这部分的遇到一个小问题:能请求成功,就是获取不到pdf文件,在这纠结了很久,也不知道该如何解决,把问题描述给我们公司的架构师,我们分析这是跨域问题造成的,他给nginx服务器的配置解决了跨域问题。

'C

antd 实现pdf 预览_解决react项目中PDF的显示与打印问题相关推荐

  1. vue的PDF预览插件(vue-pdf),支持旋转、放大缩小、打印、下载等

    PDF预览插件 1.安装插件(vue-pdf) 2.引用注册pdf组件 3.pdf 常用属性与方法调用 4.常见报错 1.安装插件(vue-pdf) npm i pdfjs-dist@2.5.207 ...

  2. pdf预览引发的vue项目只允许Chrome浏览器访问

    前言: 项目中需要把原本下载pdf功能改成在线预览,只能预览不能进行其他操作,通过在地址后面拼接参数可以隐藏掉工具栏,但是只对chrome生效,所以又增加了访问权限,只对chrome浏览器开放,记录一 ...

  3. imac下修改本地hosts文件解决react项目中的跨域问题

    1.跨域问题:No 'Access-Control-Allow-Origin' header is present on the requested resource. 解决: 1)在本机命令行输入 ...

  4. Immutable入门使用_在react项目中使用redux-immutable

    定义 不可变数据 (Immutable Data )就是一旦创建,就不能再被更改的数据.对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象.Immutabl ...

  5. 解决Web项目中图片无法显示问题

    问题描述 在web目录下创建了images文件夹用来存放图片,在web目录再创建HTML文件,该文件中的img标签引用了images里面的图片,但是启动服务器时,页面上的图片无法显示. 解决问题  将 ...

  6. react pdf预览

    pdf预览很强大的插件是pdf.js,这是原生js实现的插件,能兼容大部分浏览器,对于它的使用方法,在传统的web项目中就是viewer.html?file="文件名称",但是对于 ...

  7. swr,解决 React 项目 API 调用的最好方案

    swr,解决 React 项目 API 调用的最好方案 搜了一圈,感觉 swr 源码学习的文章不少,但是好像使用方面的确实有限,所以-- 目前体感是觉得使用 swr 会比 redux-saga 要舒服 ...

  8. antd 实现pdf 预览_React下实现pdf在线预览

    问题背景 因为项目需要,在react项目中需要实现pdf文件的预览. 环境配置 node: v10.18.1 react: v16.8.x yarn: v1.21.1 技术调研 截止2020年2月,市 ...

  9. pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。

    pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件. 注意:本地绝对路径地址不能加载,跨域问题用代理或者服务端解决. svg模式渲染存在缺陷,只能渲染普通pd ...

最新文章

  1. Python3学习笔记(二):基本数据类型
  2. 餐饮供应链公司“鲜沐农场”获千万级Pre-A轮融资,未来要打造一站式采购平台...
  3. Android高级第九讲--JVM 与Android Dalvik之间的异同
  4. SFB 项目经验-05-共存迁移-Lync 2013-SFB 2015-边缘服务器复制状态不正常
  5. iOS 10 (X8)上CoreData的使用(包含创建工程时未添加CoreData)
  6. 运维转python开发_Python运维开发基础10-函数基础【转】
  7. java vc vb 项目结构
  8. VNC+SSH相关应用
  9. 2020年中国医疗卫生机构数量、床位、人员和诊疗次数现状,疫情下诊疗人数有所下降「图」
  10. c#编写闭合导线简易平差程序
  11. [转帖]从 2G 到 5G,手机上网话语权的三次改变
  12. git提交代码至代码仓库详细步骤
  13. 如何关闭windows安全中心(四种方法)
  14. 华为老员工谈华为终端的来龙去脉
  15. 小程序开发者的利器:小程序插件
  16. deepin系统更新node
  17. 微信小程序微信授权登录的昵称头像授权数量上限,如何删除
  18. 该设备正在使用中。请关闭可能使用该设备的所有程序或窗口,然后重试。
  19. java MySQL所有语句
  20. SSM根据上传文件获取视频文件时长

热门文章

  1. ActivityNet数据集简介及下载分享(百度网盘)
  2. ORA-01013: user requested cancel of current operation
  3. # 什么 是SCI SSCI CSSCI ?
  4. 思科设备中STP生成树协议及其配置
  5. 单边带(SSB)调制技术
  6. hdu1527取石子游戏(威佐夫博奕)
  7. 一个优秀的前端工程师简历应该是怎样的?
  8. 怎么才能高效的查看CAD建筑图纸?有什么技巧?
  9. MIPS - 反汇编 - 拆炸弹 - bomb
  10. ai作文批改_AI批改作文哪家强?英语老师亲测讯飞智能学习机更高效