当前位置:首页 > React

react如何把dom转成PDF

2026-01-25 09:45:04React

使用html2canvas和jsPDF库

安装html2canvas和jsPDF库:

npm install html2canvas jspdf

在React组件中引入库并实现转换逻辑:

import html2canvas from 'html2canvas';
import { jsPDF } from 'jspdf';

const exportToPDF = () => {
  const input = document.getElementById('target-dom');

  html2canvas(input).then((canvas) => {
    const imgData = canvas.toDataURL('image/png');
    const pdf = new jsPDF('p', 'mm', 'a4');
    const imgWidth = 210; // A4宽度210mm
    const imgHeight = canvas.height * imgWidth / canvas.width;

    pdf.addImage(imgData, 'PNG', 0, 0, imgWidth, imgHeight);
    pdf.save('download.pdf');
  });
};

使用react-pdf/renderer库

安装react-pdf库:

npm install @react-pdf/renderer

创建PDF文档组件:

react如何把dom转成PDF

import { Document, Page, Text, View, StyleSheet } from '@react-pdf/renderer';

const MyDocument = () => (
  <Document>
    <Page size="A4">
      <View style={styles.section}>
        <Text>Hello PDF</Text>
      </View>
    </Page>
  </Document>
);

const styles = StyleSheet.create({
  section: {
    margin: 10,
    padding: 10,
  }
});

导出PDF文件:

import { PDFDownloadLink } from '@react-pdf/renderer';

<PDFDownloadLink document={<MyDocument />} fileName="document.pdf">
  {({ loading }) => (loading ? 'Loading...' : 'Download')}
</PDFDownloadLink>

使用pdf-lib处理复杂PDF

安装pdf-lib库:

npm install pdf-lib

创建并修改PDF文档:

react如何把dom转成PDF

import { PDFDocument, rgb } from 'pdf-lib';

const createPDF = async () => {
  const pdfDoc = await PDFDocument.create();
  const page = pdfDoc.addPage([550, 750]);

  page.drawText('Hello World', {
    x: 50,
    y: 700,
    size: 50,
    color: rgb(0, 0, 0),
  });

  const pdfBytes = await pdfDoc.save();
  download(pdfBytes, 'document.pdf', 'application/pdf');
};

注意事项

DOM转PDF时需确保所有资源加载完成后再执行转换,特别是图片等异步资源

对于复杂布局,建议使用专门设计PDF的库如react-pdf而非html2canvas转换

考虑添加加载状态提示用户转换过程

PDF尺寸单位通常使用毫米(mm)或磅(pt),需注意与像素的换算

标签: 转成react
分享给朋友:

相关文章

react如何鉴定

react如何鉴定

React 鉴权方法 基于路由的鉴权 在 React 中,可以通过封装路由组件实现鉴权。使用 react-router-dom 检查用户是否登录,未登录则跳转至登录页。 import { Rou…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实 D…

react如何运行

react如何运行

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

react如何调试

react如何调试

调试 React 应用的方法 使用 React Developer Tools React Developer Tools 是 Chrome 和 Firefox 的浏览器扩展,可以检查组件树、状态和…

react如何启动

react如何启动

启动 React 项目的步骤 确保已安装 Node.js React 需要 Node.js 环境运行,建议安装最新稳定版(LTS)。可通过以下命令检查是否已安装: node -v npm -v…