ReactJS 是一个用于构建用户界面的 JavaScript 库。它允许开发者通过组件化的方式来构建复杂的用户界面。PDF 是一种便携式文档格式,广泛用于文档的存储和传输。
我们可以使用 react-pdf
库来生成 PDF 文件,并通过 file-saver
库来实现文件下载。
npm install @react-pdf/renderer file-saver
import React from 'react';
import { Document, Page, pdfjs } from 'react-pdf';
import { saveAs } from 'file-saver';
pdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;
const MyDocument = ({ content }) => (
<Document>
<Page pageNumber={1}>
<div dangerouslySetInnerHTML={{ __html: content }} />
</Page>
</Document>
);
const DownloadButton = ({ content }) => {
const [numPages, setNumPages] = React.useState(null);
const onDocumentLoadSuccess = ({ numPages }) => {
setNumPages(numPages);
};
const handleDownload = () => {
const pdf = document.createElement('a');
pdf.href = '/api/generate-pdf'; // 假设后端提供了一个生成 PDF 的 API
pdf.download = 'document.pdf';
document.body.appendChild(pdf);
pdf.click();
document.body.removeChild(pdf);
};
return (
<div>
<Document
file="/api/generate-pdf"
onLoadSuccess={onDocumentLoadSuccess}
>
<Page pageNumber={1} />
</Document>
<button onClick={handleDownload}>下载 PDF</button>
</div>
);
};
const App = () => {
const content = '<h1>Hello World</h1><p>This is a sample content.</p>';
return (
<div>
<MyDocument content={content} />
<DownloadButton content={content} />
</div>
);
};
export default App;
a
标签的 href
属性是否正确,确保服务器允许跨域请求。通过以上步骤,你可以在 ReactJS 应用中实现将内容转换为 PDF 并提供下载链接的功能。
领取专属 10元无门槛券
手把手带您无忧上云