当前位置:首页 > React

react实现df预览

2026-01-27 00:22:30React

使用 react-pdf 预览 PDF 文件

安装 react-pdf 库:

npm install react-pdf

引入并使用 Document 和 Page 组件:

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

function PDFViewer() {
  return (
    <Document file="/path/to/document.pdf">
      <Page pageNumber={1} />
    </Document>
  );
}

使用 iframe 嵌入 PDF 预览

直接通过 iframe 嵌入 PDF 文件:

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

使用 Google Docs 查看器预览 PDF

通过 Google Docs 查看器服务嵌入 PDF:

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

使用 PDF.js 实现高级预览

安装 pdfjs-dist:

npm install pdfjs-dist

实现自定义 PDF 渲染:

import * as pdfjsLib from 'pdfjs-dist';

async function renderPDF(url, canvasElement) {
  const pdf = await pdfjsLib.getDocument(url).promise;
  const page = await pdf.getPage(1);
  const viewport = page.getViewport({ scale: 1.0 });

  canvasElement.width = viewport.width;
  canvasElement.height = viewport.height;

  await page.render({
    canvasContext: canvasElement.getContext('2d'),
    viewport: viewport
  }).promise;
}

处理大型 PDF 文件的分页加载

使用 react-pdf 实现分页控制:

import { useState } from 'react';
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="/path/to/document.pdf" onLoadSuccess={onDocumentLoadSuccess}>
        <Page pageNumber={pageNumber} />
      </Document>
      <p>
        Page {pageNumber} of {numPages}
      </p>
      <button onClick={() => setPageNumber(prev => prev - 1)} disabled={pageNumber <= 1}>
        Previous
      </button>
      <button onClick={() => setPageNumber(prev => prev + 1)} disabled={pageNumber >= numPages}>
        Next
      </button>
    </div>
  );
}

自定义 PDF 查看器样式

为 PDF 查看器添加自定义样式:

import { Document, Page } from 'react-pdf';
import 'react-pdf/dist/esm/Page/AnnotationLayer.css';
import 'react-pdf/dist/esm/Page/TextLayer.css';

function StyledPDFViewer() {
  return (
    <div style={{ border: '1px solid #ccc', padding: '10px' }}>
      <Document file="/path/to/document.pdf">
        <Page 
          pageNumber={1} 
          width={600}
          renderAnnotationLayer={false}
          renderTextLayer={false}
        />
      </Document>
    </div>
  );
}

react实现df预览

标签: reactdf
分享给朋友:

相关文章

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

如何改造react

如何改造react

改造 React 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Rea…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何卸载

react如何卸载

卸载 React 项目或依赖 如果需要完全卸载 React 项目或相关依赖,可以按照以下步骤操作: 删除项目文件夹 直接删除整个项目文件夹是最彻底的方式。确保已备份重要代码或配置文件。 卸载全局安…

react如何diff

react如何diff

React Diff 算法原理 React 的 Diff 算法是 Virtual DOM 的核心部分,用于高效更新真实 DOM。其核心思想是通过对比新旧 Virtual DOM 树的差异,最小化 DO…