[特殊字符] 超強 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!

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 && (<PDFViewfile={fileUrl}onClose={() => setVisible(false)}/>)}</div>);
};export default App;

💡 功能全景

功能項描述
? 分頁瀏覽支持上一頁、下一頁、跳轉頁面
🔍 縮放支持放大 / 縮小,適配不同顯示尺寸
🔄 旋轉功能向左 / 向右旋轉每頁 PDF(支持 90° 遞增)
🖥? 全屏模式Ctrl+F 一鍵全屏,沉浸式閱讀
🎯 縮略圖導航Ctrl+T 快速切換縮略圖預覽,點擊即跳轉
🧠 懶加載多頁 PDF 僅加載可視區附近頁面,大幅提升性能
?? 自定義控制欄可配置每個按鈕是否展示(關閉、縮放、旋轉等)
🧩 錯誤提示文件不存在或格式異常會顯示錯誤頁面,避免白屏

🎮 進階用法:懶加載+縮略圖預覽

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%' }}><PDFViewparentDom={ref.current}file={fileUrl}lazyLoad={true}width={650}lazyLoadConfig={{threshold: 400,pagesPerLoad: 4}}onClose={() => setFileUrl(null)}/></div>);
};export default App;

?? 全部 Props 一覽

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 查看器樣式(例如背景色、按鈕欄、縮略圖風格):

.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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83383.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83383.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83383.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計模式——策略設計模式(行為型)

摘要 策略設計模式是一種行為型設計模式&#xff0c;它定義了一系列算法并將每個算法封裝起來&#xff0c;使它們可以相互替換。該模式讓算法的變化獨立于使用算法的客戶&#xff0c;從而使得算法可以靈活地切換和擴展。其主要角色包括策略接口、具體策略類和環境類。策略模式…

DeepSeek-R1-0528,官方的端午節特別獻禮

DeepSeek&#xff1a;端午安康&#xff01;刻在國人骨子里的浪漫 2025 年 05 月 28 日 | DeepSeek 端午特別獻禮 當粽葉飄香時&#xff0c;DeepSeek 悄然帶來一份節日驚喜 版本號 DeepSeek-R1-0528 正式上線 官方賦予它的靈魂是&#xff1a; 思考更深 推理更強 用戶通過官網…

mac安裝brew時macos無法信任ruby的解決方法

背景 在使用如下腳本安裝brew時&#xff0c;遇到安裝ruby&#xff0c;macos不信任外部軟件&#xff0c;在安全性點擊信任仍然無法安裝。 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"如何解決 本地安裝好符…

2025音頻傳輸模塊全球選購指南:高品質音頻體驗的品牌之選

隨著無線技術的迅猛發展&#xff0c;音頻傳輸模塊&#xff08;Audio Transmission Module&#xff09;已成為高品質音頻體驗的關鍵技術之一。它們廣泛應用于智能家居、無線耳機、會議系統、廣播設備以及專業音頻領域。面對市場上多樣化的產品&#xff0c;如何選擇適合自己需求的…

解析樓宇自控系統:分布式結構的核心特點與優勢展現

在建筑智能化發展的進程中&#xff0c;樓宇自控系統作為實現建筑高效運行與管理的關鍵&#xff0c;其系統結構的選擇至關重要。傳統的集中式樓宇自控系統在面對日益復雜的建筑環境和多樣化的管理需求時&#xff0c;逐漸暴露出諸多弊端&#xff0c;如可靠性低、擴展性差、響應速…

Spring Boot對一些技術框架進行了統一版本號管理

這個說法是 正確的。 Spring Boot 對許多常用依賴進行了版本管理&#xff0c;因此在項目中引入這些依賴時&#xff0c;通常不需要指定版本號。 Spring Boot 依賴版本管理 &#x1f6e0;? spring-boot-starter-parent&#xff1a;當你的項目在 pom.xml (Maven 項目) 中繼承自…

關于MySQL的索引

一、索引 1、索引概述 1.1、介紹 索引&#xff08; index &#xff09;是幫助 MySQL 高效獲取數據的數據結構 ( 有序 ) 。在數據之外&#xff0c;數據庫系統還維護著滿足特定查找算法的數據結構&#xff0c;這些數據結構以某種方式引用&#xff08;指向&#xff09;數據&…

微服務常用日志追蹤方案:Sleuth + Zipkin + ELK

在微服務架構中&#xff0c;一個用戶請求往往需要經過多個服務的協同處理。為了有效追蹤請求的完整調用鏈路&#xff0c;需要一套完整的日志追蹤方案。Sleuth Zipkin ELK 組合提供了完整的解決方案 Sleuth&#xff1a;生成和傳播追蹤IDZipkin&#xff1a;收集、存儲和可視化…

R語言基礎| 創建數據集

在R語言中&#xff0c;有多種數據類型&#xff0c;用以存儲和處理數據。每種數據類型都有其特定的用途和操作函數&#xff0c;使得R語言在處理各種數據分析任務時非常靈活和強大&#xff1a; 向量&#xff08;Vector&#xff09;: 向量是R語言中最基本的數據類型&#xff0c;它…

nssctf第二題[SWPUCTF 2021 新生賽]簡簡單單的邏輯

這是題目&#xff0c;下載后得到一個python文件,打開 解讀代碼&#xff1a; for i in range(len(list)):key (list[i]>>4)((list[i] & 0xf)<<4)result str(hex(ord(flag[i])^key))[2:].zfill(2)list[i]>>4&#xff1a;從列表中取數字同時高4位向右位…

mysql(十五)

目錄 子查詢 1.準備工作 2--創建表格 3--插入數據 2.where 子查詢單列單個數據 格式 查詢 3.where 子查詢單列多個數據(in) 格式 查詢 使用子查詢 4.from 多行多數據 格式 查詢 子查詢 將select的查詢的返回結果 當成另外一個selet語句的內容去使用。 子查詢放在()里面 注意…

【HarmonyOS 5】鴻蒙Taro跨端框架

?Taro跨端框架? 支持React語法開發鴻蒙應用&#xff0c;架構分為三層&#xff1a; ArkVM層運行業務代碼和React核心TaroElement樹處理節點創建和屬性綁定TaroRenderNode虛擬節點樹與上屏節點一一對應 import { Component } from tarojs/taro export default class MyCompon…

華為OD機試真題——會議接待 /代表團坐車(2025A卷:200分)Java/python/JavaScript/C++/C語言/GO六種最佳實現

2025 A卷 200分 題型 本文涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、測試用例以及綜合分析; 并提供Java、python、JavaScript、C++、C語言、GO六種語言的最佳實現方式! 本文收錄于專欄:《2025華為OD真題目錄+全流程解析/備考攻略/經驗分享》 華為OD機試真題《會議…

C語言---動態內存管理、柔性數組

一、malloc和free 1、變長數組 變長數組是指數組的大小可以通過變量來指定。 在c99以及之后的標準中&#xff1a; #include<stdio.h> int main() { int n0; scanf("%d",&n); } 2、malloc和free 這個函數向內存申請一塊連續可用的空間&#xff0c;并返…

WEBSTORM前端 —— 第3章:移動 Web —— 第4節:移動適配-VM

目錄 一、適配方案 二、VM布局 ?編輯 三、vh布局 四、案例—酷我音樂 一、適配方案 二、VM布局 三、vh布局 四、案例—酷我音樂

Dynamics 365 Business Central AI Sales Order Agent Copilot

#AI Copilot# #D365 BC 26 Wave# 最近很多客戶都陸續升級到 Dynamics 365 Business Central 26 wave, Microsoft 提供一個基于Copilot 的Sales Order Agent&#xff0c;此文將此功能做個介紹. Explorer: 可以看到26版本上面增加了這樣一個新圖標。 Configuration: 配置過程…

【harbor】--配置https

使用自建的 CA 證書來自簽署和啟用 HTTPS 通信。 &#xff08;1&#xff09;生成 CA認證 使用 OpenSSL 生成一個 2048位的私鑰這是 自建 CA&#xff08;證書頒發機構&#xff09; 的私鑰&#xff0c;后續會用它來簽發證書。 # 1創建CA認證 cd 到harbor [rootlocalhost harbo…

Selenium基礎操作方法詳解

Selenium基礎操作方法詳解&#xff1a;從零開始編寫自動化腳本&#xff08;附完整代碼&#xff09; 引言 Selenium是自動化測試和網頁操作的利器&#xff0c;但對于新手來說&#xff0c;掌握基礎操作是成功的第一步。本文將手把手教你使用Selenium完成瀏覽器初始化、元素定位、…

python同步mysql數據

python寫了一個簡單的mysql數據同步腳本,只作為學習練習,大佬勿噴 # -*- coding: utf-8 -*- """ Time:2025/5/29 14:38 Auth:HEhandsome """ import pymysql from pymysql import Connectclass Mysql:def __init__(self):#源數據庫self.sou_hos…

手撕Java+硅基流動實現MCP服務器教程

手撕Java硅基流動實現MCP服務器教程 一、MCP協議核心概念 MCP是什么 MCP 是 Anthropic (Claude) 主導發布的一個開放的、通用的、有共識的協議標準。 ● MCP 是一個標準協議&#xff0c;就像給 AI 大模型裝了一個 “萬能接口”&#xff0c;讓 AI 模型能夠與不同的數據源和工…