How to generate PDF in React.js Application code example
Example 1: add pdf in react app
import React, { PureComponent } from "react"
import { Document, Page } from "react-pdf/build/entry.webpack"
import throttle from "lodash.throttle"
import pdf from "./pdf.pdf"
class App extends PureComponent {
constructor(props) {
super(props)
this.state = {width: null}
this.throttledSetDivSize = throttle(this.setDivSize, 500)
}
componentDidMount () {
this.setDivSize()
window.addEventListener("resize", this.throttledSetDivSize)
}
componentWillUnmount () {
window.removeEventListener("resize", this.throttledSetDivSize)
}
setDivSize = () => {
this.setState({width: this.pdfWrapper.getBoundingClientRect().width})
}
render() {
return (
<div id="row" style={{height: "100vh", width: "100vw", display: "flex", overflow: "hidden"}}>
<div id="placeholderWrapper" style={{width: "10vw", height: "100vh"}}/>
<div id="pdfWrapper" style={{width: "90vw"}} ref={(ref) => this.pdfWrapper = ref}>
<PdfComponent wrapperDivSize={this.state.width} />
</div>
</div>
)
}
}
class PdfComponent extends PureComponent {
render() {
return (
<div>
<Document
file={pdf}
>
<Page pageIndex={1} width={this.props.wrapperDivSize} />
</Document>
</div>
)
}
}
export default App
Example 2: how to create a pdf in react
import React from 'react';
import { Page, Text, View, Document, StyleSheet } from '@react-pdf/renderer';
const styles = StyleSheet.create({
page: {
flexDirection: 'row',
backgroundColor: '#E4E4E4'
},
section: {
margin: 10,
padding: 10,
flexGrow: 1
}
});
const MyDocument = () => (
<Document>
<Page size="A4" style={styles.page}>
<View style={styles.section}>
<Text>Section #1</Text>
</View>
<View style={styles.section}>
<Text>Section #2</Text>
</View>
</Page>
</Document>
);