@react-pdf/renderer。如何生成 PDF 并下载
@react-pdf/renderer. How to generate PDF and download it
我设法生成了 pdf 文档并将其显示在页面上,但我很难设置下载它的选项。
是否可以设置类似点击这里下载文档?
请参考以下代码:
import React, {Component} from 'react';
import { PDFViewer } from '@react-pdf/renderer';
import FeeAcceptance from '../Pdfgenerator/FeeAcceptance'
class AcceptFees extends Component {
render () {
return (
<>
<PDFViewer>
<FeeAcceptance member_detail={'test'} />
</PDFViewer >
<h1>click<a href="?????"> here </a>to download the document</h1>
</>
);
}
}
export default AcceptFees;
提前谢谢你。
如果您遇到同样的问题,我发现了一些有用的东西。
将 PDFViewer 替换为以下代码:
<PDFDownloadLink document={<FeeAcceptance />} fileName="fee_acceptance.pdf">
{({ blob, url, loading, error }) => (loading ? 'Loading document...' : 'Download now!')}
</PDFDownloadLink>
我们也可以使用ReactPDF.pdf
。这是一个 returns 一个 url
(如果需要的话甚至 blob
!)的异步函数的小代码示例。我们可以使用此 url
下载我们的 PDF。
renderUrl = async() => new Promise((resolve, reject) => {
const blob = await ReactPDF.pdf(<FeeAcceptance member_detail={'test'} />).toBlob()
const url = URL.createObjectURL(blob)
if(url && url.length>0){
resolve(url)
}
}
).then(res => res).catch(err => console.log(err))
要下载生成的 url
,我们可以使用 a
标签的 download
属性。这是一个例子
let sampleTab = window.open()
if(sampleTab) {
renderUrl().then(generatedUrl => {
if( generatedUrl ){
let aTag = document.createElement('a')
aTag.href = generatedUrl
aTag.style = "display: none";
aTag.download = 'FeeAcceptance.pdf'
document.body.appendChild(aTag)
aTag.click()
} // else -> means something went wrong during pdf generation
}).catch(err => console.log(err))
} // else -> means new tab can't be opened ... (some Adblock issue)
我设法生成了 pdf 文档并将其显示在页面上,但我很难设置下载它的选项。
是否可以设置类似点击这里下载文档?
请参考以下代码:
import React, {Component} from 'react';
import { PDFViewer } from '@react-pdf/renderer';
import FeeAcceptance from '../Pdfgenerator/FeeAcceptance'
class AcceptFees extends Component {
render () {
return (
<>
<PDFViewer>
<FeeAcceptance member_detail={'test'} />
</PDFViewer >
<h1>click<a href="?????"> here </a>to download the document</h1>
</>
);
}
}
export default AcceptFees;
提前谢谢你。
如果您遇到同样的问题,我发现了一些有用的东西。 将 PDFViewer 替换为以下代码:
<PDFDownloadLink document={<FeeAcceptance />} fileName="fee_acceptance.pdf">
{({ blob, url, loading, error }) => (loading ? 'Loading document...' : 'Download now!')}
</PDFDownloadLink>
我们也可以使用ReactPDF.pdf
。这是一个 returns 一个 url
(如果需要的话甚至 blob
!)的异步函数的小代码示例。我们可以使用此 url
下载我们的 PDF。
renderUrl = async() => new Promise((resolve, reject) => {
const blob = await ReactPDF.pdf(<FeeAcceptance member_detail={'test'} />).toBlob()
const url = URL.createObjectURL(blob)
if(url && url.length>0){
resolve(url)
}
}
).then(res => res).catch(err => console.log(err))
要下载生成的 url
,我们可以使用 a
标签的 download
属性。这是一个例子
let sampleTab = window.open()
if(sampleTab) {
renderUrl().then(generatedUrl => {
if( generatedUrl ){
let aTag = document.createElement('a')
aTag.href = generatedUrl
aTag.style = "display: none";
aTag.download = 'FeeAcceptance.pdf'
document.body.appendChild(aTag)
aTag.click()
} // else -> means something went wrong during pdf generation
}).catch(err => console.log(err))
} // else -> means new tab can't be opened ... (some Adblock issue)