PC端的浏览器对于PDF文件的展现没有太大的问题,给定一个PDF的连接,就能够用浏览器默认的展现样式来展现和渲染PDF文件的内容。好比一个"http://www.baidu.com/test/pdf"。 如何在移动端展现这个文件。为了在移动端展现和渲染PDF文件的内容,本文在pdfjs的基础上实现了一个简单的react组件,用于展现和渲染PDF文件。javascript
(若是想看使用的例子,直接下载这个代码或者clone,而后npm install和npm start便可)css
使用React16.5编写的组件,用于在移动设备和PC端显示和渲染PDF文件
(在你的项目中好比先引入react,且必须保证React的版本必须在15.0以上)java
安装react-read-pdf包react
npm install --save react-read-pdf
在PC端建议使用PDFReader:webpack
import React from 'react'; import { PDFReader } from 'react-read-pdf';
在移动端建议使用MobilePDFReader,能够自适应各类移动设备:git
import React from 'react'; import { MobilePDFReader } from 'react-read-pdf';
import { MobilePDFReader } from 'react-read-pdf'; export default class Test extends Component{ render(){ return <div style={{overflow:'scroll',height:600}}> <MobilePDFReader url="http://localhost:3000/test.pdf"/> </div> } }
import ReactDOM from 'react-dom'; import Test from './test' ReactDOM.render(<Test />, document.getElementById('root'));
react-read-pdf 自适配于各类不一样的移动设备,包括手机、平板和其余移动办公设备,下图是利用react-read-pdf在iphoneX上展现PDF的一个例子。github
<img src="https://raw.githubusercontent... " width="320">web
react-read-pdf 这个npm包主要包括了两个不一样类型的组件 PDFReader 和 MobilePDFReader.typescript
import { PDFReader } from 'react-read-pdf' ... <PDFReader url={"http://localhost:3000/test.pdf"} ...>
属性名称 | 类型 | 描述 |
---|---|---|
url | 字符串或者对象 | 若是是字符串,那么url表示的是PDF文件的绝对或者相对地址,若是是对象,能够看关于对象属性的具体描述- > url object type |
data | 字符串 | 用二进制来描述的PDF文件,在javascript中,咱们能够经过“atob”,将base64编码的PDF文件,转化为二进制编码的文件。 |
page | 数字 | 默认值为1,表示应该渲染PDF文件的第几页 |
scale | 数字 | 决定渲染的过程当中视口的大小 |
width | 数字 | 决定渲染过程当中,视口的宽度 |
showAllPage | 布尔值 | 默认是false,表示不会一次性渲染,只会渲染page的值所指定的那一页。若是这个值为true,则一次性渲染PDF文件全部的页 |
onDocumentComplete | 函数 | 将PDF文件加载后,能够经过这个函数输出PDF文件的详细信息。这个函数的具体信息以下所示。 function type |
url
PDFReader组件的url属性npm
类型:
属性:
属性名 | 类型 | 描述 |
---|---|---|
url | 字符串 | 字符串,表示PDF文件的绝对或者相对地址 |
withCredentials | 布尔值 | 决定请求是否携带cookie |
onDocumentComplete
PDFReader的onDocumentComplete属性
Type:
onDocumentComplete的类型是一个函数, 这个函数的第一个参数表示的是PDF文件的总页数。
PDFReader组件的url属性能够是字符串或者是对象。
下面两种方式都是被容许的。
其一是 :
<MobilePDFReader url="http://localhost:3000/test.pdf"/>
另一种方式是 :
<MobilePDFReader url={url:"http://localhost:3000/test.pdf"}/>
import { MobilePDFReader } from 'react-read-pdf' ... <MobilePDFReader url={"http://localhost:3000/test.pdf"} ...>
属性名称 | 类型 | 描述 |
---|---|---|
url | 字符串 | 若是是字符串,那么url表示的是PDF文件的绝对或者相对地址 |
page | 数字 | 默认值为1,表示应该渲染PDF文件的第几页 |
scale | 数字或者“auto” | 默认值为“auto”,决定渲染的过程当中视口的大小,推荐设置成“auto”能够根据移动设备自适应的适配scale |
minScale | 数字 | 默认值0.25, scale可取的最小值 |
maxScale | 数字 | 默认值10, scale可取的最大值 |
isShowHeader | 布尔值 | 默认值为true,为了生动展现,当值为true,有默认自带的头部样式。设置为false能够去掉这个默认的样式。 |
isShowFooter | 布尔值 | 默认值为true,为了生动展现,当值为true,有默认自带的尾部样式。设置为false能够去掉这个默认的样式。 |
onDocumentComplete | 函数 | 将PDF文件加载后,能够经过这个函数输出PDF文件的详细信息。这个函数的具体信息以下所示。function type for details |
onDocumentComplete
MobilePDFReader的onDocumentComplete属性
类型: 函数
函数的参数:
参数名称 | 类型 | 描述 |
---|---|---|
totalPage | 数字 | 表示PDF文件的总页数 |
title | 字符串 | PDF文件的标题 |
otherObj | 对象 | PDF文件的其余扩展或者编码信息 |
scale的默认值为“auto”,强烈推荐将scale的值设置成“auto”,这样能够根据移动设备的大小自适应的改变scale的值。
yarn install
(or npm install
for npm)Development
yarn run start-dev
http://localhost:8080
Production
yarn run start-prod
http://localhost:3000
指令列表
Command | Description |
---|---|
yarn run start-dev |
Build app continuously (HMR enabled) and serve @ http://localhost:8080 |
yarn run start-prod |
Build app once (HMR disabled) and serve @ http://localhost:3000 |
yarn run build |
Build app to /dist/ |
yarn run test |
Run tests |
yarn run lint |
Run Typescript and SASS linter |
yarn run lint:ts |
Run Typescript linter |
yarn run lint:sass |
Run SASS linter |
yarn run start |
(alias of yarn run start-dev ) |
Note: replace yarn
with npm
if you use npm.