当前位置:首页 > 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 是一个用于构建用户界面的 JavaScript 库,专注于组件化开发。通过虚拟 DOM 和高效的渲染机制,React 能够实现高性能的 UI 更新。 安装 Re…

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app npm…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。 /…

react如何拓展

react如何拓展

React 拓展方法 使用高阶组件(HOC) 高阶组件是一种复用组件逻辑的方式,通过接收一个组件并返回一个新组件实现功能拓展。例如,为组件添加日志功能: function withLogging…

如何用react

如何用react

使用React的基本步骤 安装Node.js和npm 确保系统已安装Node.js和npm。Node.js自带npm,可从官网下载安装包。安装完成后,通过命令行验证版本: node -v npm -…

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…