当前位置:首页 > 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文档组件:

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文档:

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如何把dom转成PDF

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

相关文章

react native 如何

react native 如何

安装 React Native 开发环境 确保系统已安装 Node.js(建议版本 16 或更高)。通过以下命令安装 React Native CLI 工具: npm install -g reac…

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: nod…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impo…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通常…