reactjs - 如何使用 react-pdf 库创建表格以生成 pdf 报告?

标签 reactjs react-pdf

由于 react-pdf 库提供了一些有限的组件,并且不允许在 reactpdfrenderer 中呈现 html 标签。所以我在使用这个库制作表格时遇到了麻烦?
任何人都可以帮助我如何使用这个 react-pdf 库组件创建表格?

最佳答案

你可以像@David-Kucsai 在评论中所说的那样使用 @david.kucsai/react-pdf-table
或不使用
小例子
数据

const data = {
  id: "5df3180a09ea16dc4b95f910",
  items: [
    {
      sr: 1,
      desc: "desc1",
      xyz: 5
    },
    {
      sr 2,
      desc: "desc2",
      xyz: 6
    }
  ],
};
应用程序.js
import React, { Component, Fragment } from 'react';
import {PDFViewer} from '@react-pdf/renderer'
import Table from './components/reports/Table'
import data from './data'


class App extends Component {
  render() {
    return (
        <Fragment>
            <PDFViewer width="1000" height="600">
                <Table data={data}/>
            </PDFViewer>
        </Fragment>
    );
  }
}

export default App;
表.js
import React from 'react';
import { Page, Document, StyleSheet } from '@react-pdf/renderer';
import ItemsTable from './ItemsTable'


const styles = StyleSheet.create({
    page: {
        fontSize: 11,
        flexDirection: 'column',
    }
  });
  
  const Table = ({data}) => (
            <Document>
                <Page size="A4" style={styles.page}>
                    // ...
                    <ItemsTable data={data} />
                    // ...
                </Page>
            </Document>
        );
  
  export default Table
项目表.js
import React from 'react';
import {View, StyleSheet } from '@react-pdf/renderer';


const styles = StyleSheet.create({
    tableContainer: {
        flexDirection: 'row',
        flexWrap: 'wrap'
    },
});

  const ItemsTable = ({data}) => (
    <View style={styles.tableContainer}>
        {/*<TableHeader />*/}
        <TableRow items={data.items} />
        {/*<TableFooter items={data.items} />*/}
    </View>
  );
  
  export default ItemsTable
TableRow.js
import React, {Fragment} from 'react';
import {Text, View, StyleSheet } from '@react-pdf/renderer';


const styles = StyleSheet.create({
    row: {
        flexDirection: 'row',
        alignItems: 'center',
    },
    description: {
        width: '60%',
    },
    xyz: {
        width: '40%',
    }
  });


const TableRow = ({items}) => {
    const rows = items.map( item => 
        <View style={styles.row} key={item.sr.toString()}>
            <Text style={styles.description}>{item.desc}</Text>
            <Text style={styles.xyz}>{item.xyz}</Text>
        </View>
    )
    return (<Fragment>{rows}</Fragment> )
};
  
export default TableRow
更多信息请查看 Generate Dynamic PDF Invoices Using React and React-PDF

关于reactjs - 如何使用 react-pdf 库创建表格以生成 pdf 报告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56373850/

相关文章:

javascript - 大型 PDF 的 React-PDF 性能低下

reactjs - 用于部署后设置的 React 配置文件

django - 在 Django 项目目录之外加载模板

javascript - 在 React 中过滤数组中的数组

reactjs - 使用 react-pdf 加载 pdf

javascript - 使用 React-PDF 放大/缩小

reactjs - 在 act 回调中包装异步 moxios 调用

javascript - 使用 JSX 将代码渲染到页面,同时保留换行符

javascript - react-pdf 从磁盘加载文件而不是 url

javascript - Highcharts-React 获取图表的 Base64 PNG