当前位置:首页 > 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 native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

如何改造react

如何改造react

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

react如何浮动

react如何浮动

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

如何开发react

如何开发react

开发React应用的基本步骤 安装Node.js和npm 确保系统中已安装Node.js(包含npm)。可通过官网下载安装包,安装后验证版本: node -v npm -v 创建React项目…

react如何扩展

react如何扩展

扩展 React 项目的常用方法 使用高阶组件(HOC) 高阶组件是一种复用组件逻辑的方式。通过包裹组件并注入额外属性或逻辑,可以实现功能扩展。例如,一个日志记录的高阶组件: function…

react如何减少伤病

react如何减少伤病

减少React应用中的性能问题(避免"伤病") 优化React应用性能需要从组件渲染、状态管理和外部依赖等多方面入手。以下是关键优化策略: 使用React.memo进行组件记忆 对函数组件使用Rea…