PC端的浏览器对于PDF文件的展示没有太大的问题,给定一个PDF的链接,就可以用浏览器默认的展示样式来展示和渲染PDF文件的内容。比如一个"http://www.baidu.com/test/pdf"。 如何在移动端展示这个文件。为了在移动端展示和渲染PDF文件的内容,本文在pdfjs的基础上实现了一个简单的react组件,用于展示和渲染PDF文件。
将这个react组件,以npm包的形式发布。
这个组件的项目地址为:https://github.com/forthealllight/react-read-pdf (如果想看使用的例子,直接下载这个代码或者clone,然后npm install和npm start即可)
使用React16.5编写的组件,用于在移动设备和PC端显示和渲染PDF文件
(在你的项目中比如先引入react,且必须保证React的版本必须在15.0以上)
安装react-read-pdf包
npm install --save react-read-pdf在PC端建议使用PDFReader:
import React from 'react'; import { PDFReader } from 'react-read-pdf';在移动端建议使用MobilePDFReader,可以自适应各种移动设备:
import React from 'react'; import { MobilePDFReader } from 'react-read-pdf';react-read-pdf 自适配于各种不同的移动设备,包括手机、平板和其他移动办公设备,下图是利用react-read-pdf在iphoneX上展示PDF的一个例子。
react-read-pdf 这个npm包主要包括了两个不同类型的组件 PDFReader 和 MobilePDFReader.
url **PDFReader**组件的url属性
类型:
string : 字符串,表示PDF文件的绝对或者相对地址object : 对象,有下列的属性属性:
属性名类型描述url字符串字符串,表示PDF文件的绝对或者相对地址withCredentials布尔值决定请求是否携带cookieonDocumentComplete **PDFReader**的onDocumentComplete属性
Type:
function(totalPage)onDocumentComplete的类型是一个函数, 这个函数的第一个参数表示的是PDF文件的总页数。
PDFReader组件的url属性可以是字符串或者是对象。
下面两种方式都是被允许的。
其一是 :
<MobilePDFReader url="http://localhost:3000/test.pdf"/>另外一种方式是 :
<MobilePDFReader url={url:"http://localhost:3000/test.pdf"}/>onDocumentComplete **MobilePDFReader**的onDocumentComplete属性
类型: 函数
function(totalPage,title,otherObj)函数的参数:
参数名称类型描述totalPage数字表示PDF文件的总页数title字符串PDF文件的标题otherObj对象PDF文件的其他扩展或者编码信息scale的默认值为“auto”,强烈推荐将scale的值设置成“auto”,这样可以根据移动设备的大小自适应的改变scale的值。
Development
yarn run start-dev
Build app continuously (HMR enabled)App served @ http://localhost:8080Production
yarn run start-prod
Build app once (HMR disabled)App served @ http://localhost:3000指令列表
CommandDescriptionyarn run start-devBuild app continuously (HMR enabled) and serve @ http://localhost:8080yarn run start-prodBuild app once (HMR disabled) and serve @ http://localhost:3000yarn run buildBuild app to /dist/yarn run testRun testsyarn run lintRun Typescript and SASS linteryarn run lint:tsRun Typescript linteryarn run lint:sassRun SASS linteryarn run start(alias of yarn run start-dev)Note: replace yarn with npm if you use npm.