当前位置:首页 > React

react如何实现pdf预览

2026-03-10 20:50:22React

实现PDF预览的几种方法

在React中实现PDF预览可以通过多种方式完成,以下是几种常见的方法:

使用react-pdf

react-pdf是一个流行的React库,用于在浏览器中渲染PDF文件。安装方式如下:

npm install react-pdf

基本用法示例:

import { Document, Page } from 'react-pdf';

function PDFViewer() {
  const [numPages, setNumPages] = useState(null);
  const [pageNumber, setPageNumber] = useState(1);

  function onDocumentLoadSuccess({ numPages }) {
    setNumPages(numPages);
  }

  return (
    <div>
      <Document
        file="/example.pdf"
        onLoadSuccess={onDocumentLoadSuccess}
      >
        <Page pageNumber={pageNumber} />
      </Document>
      <p>Page {pageNumber} of {numPages}</p>
    </div>
  );
}

使用pdf.js直接集成

Mozilla的pdf.js是底层库,可以直接集成到React项目中。安装方式:

npm install pdfjs-dist

实现代码示例:

import * as pdfjsLib from 'pdfjs-dist';

async function renderPDF(url, canvasContainer) {
  const loadingTask = pdfjsLib.getDocument(url);
  const pdf = await loadingTask.promise;
  const page = await pdf.getPage(1);
  const viewport = page.getViewport({ scale: 1.0 });
  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');
  canvas.height = viewport.height;
  canvas.width = viewport.width;
  canvasContainer.appendChild(canvas);
  await page.render({
    canvasContext: context,
    viewport: viewport
  }).promise;
}

使用iframe嵌入PDF

对于简单的预览需求,可以直接使用iframe

function PDFViewer() {
  return (
    <iframe
      src="/example.pdf"
      width="100%"
      height="500px"
    />
  );
}

使用云服务API

部分云服务提供PDF预览API,如Google Docs Viewer:

react如何实现pdf预览

function PDFViewer() {
  return (
    <iframe
      src={`https://docs.google.com/viewer?url=${encodeURIComponent('https://example.com/file.pdf')}&embedded=true`}
      width="100%"
      height="500px"
    />
  );
}

注意事项

  • 大文件处理时考虑分页加载
  • 移动端适配需要注意PDF显示尺寸
  • 权限控制需确保用户有权访问PDF文件
  • 性能优化对于多页文档很重要

以上方法各有优缺点,可根据项目需求选择最适合的方案。react-pdf适合需要高度自定义的场景,iframe方案最简单但功能有限。

分享给朋友:

相关文章

如何删除react

如何删除react

卸载 React 项目依赖 打开项目根目录下的 package.json 文件,删除所有包含 react、react-dom 或其他 React 相关库的依赖项。保存文件后运行以下命令: npm u…

h5如何实现定位

h5如何实现定位

使用HTML5 Geolocation API HTML5提供了Geolocation API,可以获取用户的地理位置信息。通过navigator.geolocation对象实现,支持获取经纬度、海拔…

h5响应式布局如何实现

h5响应式布局如何实现

使用媒体查询(Media Queries) 通过CSS媒体查询针对不同屏幕尺寸设置不同的样式规则。例如: @media screen and (max-width: 768px) { .co…

如何实现vue

如何实现vue

安装 Vue.js 使用 npm 或 yarn 安装 Vue.js。确保已安装 Node.js 环境。 npm install vue # 或 yarn add vue 创建 Vue 实例 在 HT…

如何优化react

如何优化react

优化 React 性能的方法 使用 React.memo 或 PureComponent 对于函数组件,使用 React.memo 进行记忆化,避免不必要的重新渲染。类组件可以使用 PureCompo…

react如何运行

react如何运行

运行React项目的步骤 安装Node.js 确保系统已安装Node.js(建议版本12以上),可从官网下载并安装。Node.js自带npm包管理器,用于后续依赖安装。 创建React项目 使用官方…