[特殊字符] 超强 Web React版 PDF 阅读器!支持分页、缩放、旋转、全屏、懒加载、缩略图!

在现代 Web 项目中,PDF 浏览是一个常见需求:从政务公文到合同协议,PDF 文件无处不在。但很多方案要么体验不佳,要么集成复杂。今天,我给大家带来一个开箱即用、功能全面的 PDF 预览组件 ------ \`PDFView\`(https://www.npmjs.com/package/react-nexlif)!

预览地址 :https://nexlif.xiaoyaoai.fun/components/pdf-viewhttps://nexlif.xiaoyaoai.fun/components/pdf-view

✨ 它基于 `react-pdf` 封装,支持分页浏览、放大缩小、旋转、缩略图导航、全屏模式,甚至懒加载优化大文件性能!

🔧 快速上手

安装组件

```bash

npm install react-nexlif

或者

yarn add react-nexlif

引入示例:一键预览 PDF!

javascript 复制代码
import React, { useState } from 'react';
import { PDFView } from 'react-nexlif';

const App = () => {
  const [visible, setVisible] = useState(false);
  const fileUrl = 'https://www.gov.cn/zhengce/pdfFile/2023_PDF.pdf'; // 可替换为你的链接

  return (
    <div>
      <button onClick={() => setVisible(true)}>打开 PDF</button>
      {visible && (
        <PDFView
          file={fileUrl}
          onClose={() => setVisible(false)}
        />
      )}
    </div>
  );
};

export default App;

💡 功能全景

功能项 描述
✅ 分页浏览 支持上一页、下一页、跳转页面
🔍 缩放支持 放大 / 缩小,适配不同显示尺寸
🔄 旋转功能 向左 / 向右旋转每页 PDF(支持 90° 递增)
🖥️ 全屏模式 Ctrl+F 一键全屏,沉浸式阅读
🎯 缩略图导航 Ctrl+T 快速切换缩略图预览,点击即跳转
🧠 懒加载 多页 PDF 仅加载可视区附近页面,大幅提升性能
⚙️ 自定义控制栏 可配置每个按钮是否展示(关闭、缩放、旋转等)
🧩 错误提示 文件不存在或格式异常会显示错误页面,避免白屏

🎮 进阶用法:懒加载+缩略图预览

javascript 复制代码
import React, { useState, useRef, useEffect } from 'react';
import { PDFView } from 'react-nexlif';

const App = () => {
  const ref = useRef<HTMLDivElement>(null);
  const [fileUrl, setFileUrl] = useState<string | null>(null);

  useEffect(() => {
    setFileUrl('https://www.gov.cn/zhengce/pdfFile/2023_PDF.pdf');
  }, []);

  return (
    <div ref={ref} style={{ height: '100%', width: '100%' }}>
      <PDFView
        parentDom={ref.current}
        file={fileUrl}
        lazyLoad={true}
        width={650}
        lazyLoadConfig={{
          threshold: 400,
          pagesPerLoad: 4
        }}
        onClose={() => setFileUrl(null)}
      />
    </div>
  );
};

export default App;

⚙️ 全部 Props 一览

javascript 复制代码
interface PDFViewProps {
  file?: string | null;
  parentDom?: HTMLDivElement | null;
  onClose?: () => void;
  operationConfig?: {
    showPage?: boolean;
    zoom?: boolean;
    rotate?: boolean;
    screenScale?: boolean;
    thumbnails?: boolean;
    close?: boolean;
  };
  width?: number;
  lazyLoad?: boolean;
  lazyLoadConfig?: {
    threshold?: number;
    pagesPerLoad?: number;
  };
}

🎨 样式自定义

可以自由定制 PDF 查看器样式(例如背景色、按钮栏、缩略图风格):

css 复制代码
.view {
  background-color: #f5f5f5;
  padding: 20px;
}

.pageMain {
  border: 1px solid #e8e8e8;
  border-radius: 4px;
}

.thumbnail:hover {
  border-color: #1890ff;
}

🚧 注意事项

  1. 📂 跨域 PDF 文件需配置 CORS

  2. 🔍 建议使用懒加载应对大型 PDF

  3. 💬 按钮支持 ARIA 属性,键盘可操作,增强无障碍体验

  4. 🧪 已支持在现代浏览器(Chrome/Edge)运行


🔚 总结

如果你正在寻找一个轻量、可扩展、高性能的 PDF 浏览器组件,那么 PDFView 绝对值得你试试!

快速集成、易于配置、丰富功能,是中后台系统 PDF 查看功能的终极利器!

欢迎大家使用组件并 ⭐Star 支持作者!如果你喜欢这篇文章,记得 👍点赞 + ❤️收藏 + 💬评论交流!


📎 开源组件地址:react-nexlif - NPM

相关推荐
AC赳赳老秦6 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw
谢慧琼7 小时前
2026零基础做企业网站,低成本搭建官方网站
服务器·前端·javascript
weixin_431600448 小时前
前端数据埋点(1):一次点击如何变成一条埋点
前端·js·数据埋点
IT_陈寒8 小时前
Python线程池吞了异常还不告诉我,这谁顶得住啊
前端·人工智能·后端
计算机魔术师8 小时前
同样是AI辅助建造,为什么有的游戏三个月就烂尾了?
前端
用户921080262868 小时前
0. 做 Agent 产品,前端 AI 组件框架怎么选?
前端
拾年2759 小时前
React Hooks 进阶篇:useMemo / useCallback / useReducer / useImperativeHandle,用「算账 +
前端·javascript·react.js
Jackson__9 小时前
面试官:如何在老项目中使用新框架,并实现通信?
前端·javascript·面试
拾年2759 小时前
React Hooks 保姆级教程:把组件想象成失忆的打工人,4 个 Hook 带你原地起飞
前端·javascript·react.js