目录

  • 导入react-pdf
  • 在文件中引入并使用
  • 下拉展示

导入react-pdf

npm i react-pdf -S

yarn add react-pdf

在文件中引入并使用

  1. react-pdf引入会有不知名错误,react-pdf/dist/esm/entry.webpack并没有。
  2. onLoadSuccess可以获取对应加载pdf的总页数,此处用函数onDocumentLoadSuccess保存为numPages
  3. Page设置属性pageNumber就是对应的pdf页数,参数基于1,这里展示第一页,可以通过添加按钮修改pageNumber的值达到切换pdf页面的效果。
  4. Document的file就是访问pdf路径,如果是本地路径也许不会有跨域问题,如果是在线pdf,开发时建议加上前缀进行proxy代理,项目上线后同样用nginx做一样的代理即可。此处代理/pdf/,将/pdf/后面请求的pdf文件转发去在线文件所在地址。
import React, { Component } from 'react';
import { Document, Page } from 'react-pdf/dist/esm/entry.webpack';export default class index extends Component {state = {numPages: null,pageNumber: 1,};onDocumentLoadSuccess = ({ numPages }) => {this.setState({ numPages });};render() {const { pageNumber } = this.state;return (<div><Documentfile={'/pdf/555.pdf'}onLoadSuccess={this.onDocumentLoadSuccess}><Page width={window.screen.width} pageNumber={pageNumber} /></Document><buttononClick={() => {pageNumber > 1? this.setState({ pageNumber: pageNumber - 1 }): alert('前面没有了');}}>上一页</button><buttononClick={() => {pageNumber < numPages? this.setState({ pageNumber: pageNumber + 1 }): alert('后面没有了');}}>下一页</button></div>);}
}

代理代码示例:

  proxy:{'/pdf/': {target: 'http://xxxxxxxxx:xxxx/',changeOrigin: true,pathRewrite: { '^/pdf/': '' },},}

下拉展示

  1. 其实就是一口气遍历渲染出来,创建了一个长度为总页数numPages的数组进行map,用index做页数的请求,不过index基于0,pageNumber基于1,因此index需要+1。
  2. 示例比较粗糙,一口气展示,展示较少内容的pdf时没有什么问题,如果pdf页数过多会出现性能问题,可以自行考虑加载方法(例如每滑动十页进行下面十页的加载)。
import React, { Component } from 'react';
import { Document, Page } from 'react-pdf/dist/esm/entry.webpack';export default class index extends Component {state = {numPages: null,pageNumber: 1,};onDocumentLoadSuccess = ({ numPages }) => {this.setState({ numPages });};render() {const { pageNumber, numPages } = this.state;return (<div><Documentfile={'/pdf/555.pdf'}onLoadSuccess={this.onDocumentLoadSuccess}>{new Array(numPages).fill('').map((cur, index) => (<Pagekey={index}width={window.screen.width}pageNumber={index + 1}/>))}</Document></div>);}
}

react react-pdf实现在线pdf加载(翻页加载、下拉滚动加载)相关推荐

  1. 百度地图:层级地图、行政边界、圆形覆盖物、自定义覆盖物、可视化数据显示、放大及缩小、下拉滚动加载数据等...

    写了一天,以下是我自己摸索出来的,暂时只做了两层地图,废话不多说,上图上代码 图片: 第一层地图 点击圆形覆盖物或者放大地图进入第二层地图,缩放会回到第一层 拖拽地图或者缩放地图会触发可视化数据 下拉 ...

  2. html 下拉滚动加载,原生js滚动到底部加载数据和下拉刷新 Scrollload

    初衷 如今移动端站点越来越多,滚动到底部加载数据和下拉刷新的需求非常的常见,即使现在很多pc站点也会有这样的需求,比如百度首页就有.虽然简单的完成这么一个功能非常方便,但是滚动往往会成为性能的瓶颈,处 ...

  3. 使用Vant框架的组件van-pull-refresh搭配van-list和van-card完成上滑加载更多列表数据,下拉刷新当前列表数据(等同于翻页功能)

    <template><div class="sg-page-body"><div class="sg-list"><v ...

  4. 怎么样给下拉框加载背景色

    选择自 PPLUNCLE 的 Blog 部分代码: ------aspx页面:  <tr>  <td><select id="job" name=&q ...

  5. html 微博下拉菜单,jQuery实现模仿微博下拉滚动条加载数据效果

    本文实例讲述了jQuery实现模仿微博下拉滚动条加载数据效果.分享给大家供大家参考,具体如下: 滚动条距离底部 $(function () { var i = 4; $(window).bind(&q ...

  6. 新增书籍类别,下拉框加载,书籍上下架操作

    一.新增页面书籍类别下拉框加载 1.查询所有类型的方法(CategoryDao) package com.xly.dao;import java.util.List;import com.xly.en ...

  7. 新增书籍类别下拉框加载、书籍上下架功能

    课程内容: 1.新增书籍 2.上架书籍 3.下架书籍 一.新增页面书籍类别下拉框加载 1.根据下拉框类型写实体类 2.查询所有类型的方法(CategoryDao) package com.zxy.da ...

  8. android无感刷新下拉分页,GitHub - TakWolf/Android-RefreshAndLoadMore-Demo: 一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果。...

    Android - RefreshAndLoadMore Demo 一种简单的并且优雅的方式实现下拉刷新和加载更多的分页效果. 包含 ListView 和 RecyclerView 两种组件的对应实现 ...

  9. RecyclerView的下拉刷新和加载更多 动画

    下拉刷新和加载更多 1.https://github.com/jianghejie/XRecyclerView 2.http://blog.csdn.net/jabony/article/detail ...

最新文章

  1. 模糊测试(fuzz testing)介绍(一)
  2. 英伟达公开课 | 如何突破Decoder性能瓶颈?揭秘FasterTransformer2.0的原理与应用,已开源...
  3. NeurIPS 2019截稿期服务器被挤爆,投稿数增长40%创历史新高
  4. apply与applymap的区别
  5. php OpenSSL 加解密
  6. bow 折叠键盘 linux,bow便携折叠蓝牙键盘体验
  7. QQ版本更新 除了一起听歌现在还能一起看球赛了
  8. 电信主机托管费用_电信服务器托管价格
  9. tcping要安装什么工具linux,Linux下的TCP测试工具——TCPING安装简明教程
  10. 破解Prezi桌面版30天限制的方法
  11. attachEvent报错原因
  12. Echarts使用教程
  13. 共享打印机服务器脱机状态,网络/局域网共享打印机脱机故障处理方法
  14. 联想昭阳E43闪屏|屏幕有亮线|问题交流QQ群群号
  15. Qt CRC16校验中,有时候电脑计算的CRC值和单片机中计算的值不一样
  16. 微信公众号文章怎么添加附件|详细教程讲解,太实用了!
  17. 服务器进系统后键盘鼠标一卡一卡的,windows10系统鼠标卡顿的处理方法
  18. Java题解:如何获取某一天的下一天的时间
  19. 跨境追踪(ReID)多粒度网络(MGN)详解及代码实现(2)
  20. 强大的多媒体播放器:射手影音播放器SPlayer for Mac

热门文章

  1. 杨杰matlab神经网络30例,MATLAB神经网络30例
  2. cesium: 设置skybox透明并添加背景图 ( 003 )
  3. 马来西亚理科大学 计算机 校区,马来西亚理科大学在马来西亚是一个怎样的存在?...
  4. 东南大学计算机类学什么,东南大学王牌专业有哪些?最全解析来了!
  5. sim卡没坏但苹果手机无服务_苹果xs无服务没信号,XS基带坏了维修多少钱
  6. User and People
  7. ✠OpenGL-12-曲面细分
  8. /root/miniconda3/bin/python: can‘t open file ‘/root/autodl-tmp/train.py‘: [Errno 2] No such file
  9. 牛客网小白月赛 10 A B C
  10. 教她写代码的那些日子 6 数组