react 在线查看PDF

官方文档 https://www.npmjs.com/package/react-pdf

 git地址:     https://github.com/mozilla/pdf.js

偶尔会出现版本不匹配的情况  根据tag 下载对应版本

import React from 'react'
import { Modal, Button, Pagination } from 'antd'
import PageWrapper from 'components/PageWrapper'
import { SERVER } from '../../configs/service'
import { Document, Page } from 'react-pdf'
import { pdfjs } from 'react-pdf'
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`

export default function FlowChart(props) {
  const { onCancel, url, visibleChart } = props
  // const [pageNumber, setPageNumber] = React.useState(1)
  const [page, setPage] = React.useState(1)
  const [totalPage, setTotalPage] = React.useState(0)
  const onDocumentLoadSuccess = ({ numPages }) => {
    setTotalPage(numPages)
  }
  const handelOnChange = pages => {
    setPage(pages)
  }
  return (
    <PageWrapper>
      <Modal
        visible={visibleChart}
        title={'PDF'}
        onCancel={onCancel}
        cancelText="取消"
        maskClosable={false}
        destroyOnClose={true}
        onOk={onCancel}
        width={'90%'}
        footer={<Button onClick={onCancel}>取消</Button>}
      >
        <a href={SERVER + '/' + url}>请点击下载查看</a>
        <Document
          file={SERVER + '/' + url}
          onLoadSuccess={onDocumentLoadSuccess}
          renderMode="canvas" //定义文档呈现的形式
          loading="正在努力加载中" //加载时提示语句
          externalLinkTarget="_blank"
         
        >
          <Page scale={1} pageIndex={page} />
        </Document>

        <Pagination
          onChange={handelOnChange}
          total={totalPage * 10}
          current={page}
        />
      </Modal>
    </PageWrapper>
  )
}

 

 不分页 现实全部PDF 

import React from 'react'
import { Modal, Button } from 'antd'
import PageWrapper from 'components/PageWrapper'
import { SERVER } from '../../configs/service'
import { Document, Page } from 'react-pdf'
import { pdfjs } from 'react-pdf'
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`
//pdfjs.GlobalWorkerOptions.workerSrc = '../../pages/Home/pdf.worker.js'

export default function FlowChart(props) {
  const { onCancel, url, visibleChart } = props

  const [totalPage, setTotalPage] = React.useState([])
  const onDocumentLoadSuccess = ({ numPages }) => {
    let arr = []
    for (let i = 0; i < numPages; i++) {
      arr.push(i)
    }
    setTotalPage(arr)
  }

  return (
    <PageWrapper>
      <Modal
        visible={visibleChart}
        title={'PDF'}
        onCancel={onCancel}
        cancelText="取消"
        maskClosable={false}
        destroyOnClose={true}
        onOk={onCancel}
        width={'75%'}
        footer={<Button onClick={onCancel}>取消</Button>}
      >
        <a href={SERVER + '/' + url}>请点击下载查看</a>
        <div style={{ margin: 'auto' }}>
          <Document
            file={SERVER + '/' + url}
            onLoadSuccess={onDocumentLoadSuccess}
            renderMode="canvas" //定义文档呈现的形式
            loading="正在努力加载中" //加载时提示语句
            externalLinkTarget="_blank"
            noData={false}
          >
            {totalPage.map(t => (
              <div key={t} style={{ margin: 'auto' }}>
                <Page scale={1.5} pageIndex={t} />
              </div>
            ))}
          </Document>
        </div>
      </Modal>
    </PageWrapper>
  )
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值