import React, { useState } from 'react';
import { Document, Page, pdfjs } from 'react-pdf';
import styles from './index.index.module.scss';
import { Button } from 'antd-mobile';
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
interface Props {
file: string;
isBtn?: boolean;
width?: number;
}
const Index = (props: Props): JSX.Element => {
//pdf预览功能
const [numPages, setNumPages] = useState(null);
const [scale, setScale] = useState<number>(1);
const [width, setWidth] = useState<number>(props.width || 375);
function onDocumentLoadSuccess({ numPages }) {
setNumPages(numPages);
}
return (
<div>
<div
className={styles.nav}
style={{ display: props.isBtn ? 'none' : '' }}
>
<Button
fill="outline"
size="mini"
style={{ marginRight: '40px' }}
onClick={() => {
setScale(scale - 0.5);
}}
>
缩小
</Button>
<Button
fill="outline"
size="mini"
onClick={() => {
setScale(scale + 0.5);
}}
>
放大
</Button>
</div>
<Document
className={props.isBtn ? '' : styles.document}
file={props.file}
onLoadSuccess={onDocumentLoadSuccess}
>
{Array.from(new Array(numPages), (el, index) => (
<Page
key={`page_${index + 1}`}
pageNumber={index + 1}
renderAnnotationLayer={false}
renderTextLayer={false}
width={width}
scale={scale}
/>
))}
</Document>
</div>
);
};
export default Index;
react-pdf 弹窗预览功能
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 安装react-pdf插件 引入依赖包 引用一个静态的pdf.worker.js,注释里面隐藏的电子签章功能 js...
- 项目为react工程,引入ant design组件库,导入react-pdf组件库。 Talk is cheap,...
- 实现的思路: 1.利用pdf.js 的 viewer.html 进行渲染pdf预览界面2.利用Modal加ifra...
- 前言:最近有关于在项目里预览pdf的需求,找了好多资料,看了好多博客,问了好多人,最终用的技术是react-pdf...
- Content-Disposition 属性是作为对下载文件的一个标识字段,在rfc2616http://www....