react-pdf使用

816 阅读1分钟

前端怎么展示从后端传过来的pdf文件(base64,带有前缀,要是没有自行添加)

经过查询,可以使用react-pdf插件,如果需要了解,官网在这里

使用流程:

第一步:添加插件

yarn add react-pdf

第二步:引用

import {Document, Page} from 'react-pdf/dist/esm/entry.webpack';
import {pdfjs} from 'react-pdf';
// pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.js`;

第三步:使用

<Document
  // 前缀:'data:application/pdf;base64,'
  file={'这里写入后端传回来的pdf文件的base64,这个返回base64字符串一定要有前缀奥'}
  onContextMenu={(e) => e.preventDefault()}
  onLoadSuccess={this.onDocumentLoadSuccess}
  // options这里主要显示为,可能pdf文件里面有填充的文字数据,为了防止填充的文字显示不出来,下面的内容主要为了填充的文字显示出来
  options={{
    cMapUrl: `https://unpkg.com/pdfjs-dist@${pdfjs.version}/cmaps/`,
    cMapPacked: true,
    standardFontDataUrl: `https://unpkg.com/pdfjs-dist@${pdfjs.version}/standard_fonts`,
  }}
>
  // 一定要有Page这个子节点,不然显示为空,而且,暂时做过的就一页一页展示
  <Page pageNumber={this.state.pageNumber} />
  <Button
    onClick={() => {
      this.prePage();
    }}
    style={{marginRight: 8}}
  >
    上一页
  </Button>
  <Button
    onClick={() => {
      this.nextPage();
    }}
  >
    下一页
  </Button>
</Document>