前端怎么展示从后端传过来的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>