在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在 React 中將 HTML 轉換為 PDF 已成為許多網頁應用程式的重要功能。無論您是在構建一個發票系統、報告生成器,還是只需要以普遍接受的格式共享信息,生成 PDF 都非常關鍵。在本文中,我們將探討如何使用流行的庫在您的 React 應用程式中通過將 HTML 轉換為 PDF 來創建和樣式化 PDF 檔案。
在深入了解 HTML 轉 PDF 的過程之前,讓我們討論一些您可以在 React 應用中使用的熱門 PDF 生成 庫:
React-pdf:適用於 React 應用的強大庫,用於創建 PDF 文檔。它支持各種樣式選項,並且可以輕鬆創建複雜的多頁 PDF。
jsPDF:一個廣泛使用的 JavaScript 庫,用於即時生成 PDF 文件。它提供豐富的功能,包括文本樣式、圖像嵌入等。
在深入了解 HTML 到 PDF 轉換之前,牢固掌握 React 是至關重要的。這包括對 JSX、狀態管理、組件生命週期和 hooks 的了解。
對 React-pdf 函式庫的操作來說,扎實的 HTML、CSS 和 JavaScript 基礎是必不可少的。這包括 HTML 元素和屬性、CSS 樣式和選擇器、以及 JavaScript 基礎知識,例如變量、函數和循環等內容。
在我們繼續進行將 HTML 轉換為 PDF 在 React 中之前,讓我們快速介紹如何使用流行的 create-react-app
CLI 工具創建一個新的 React 應用程式。這將作為我們 PDF 生成範例的基礎。
確保您的機器上已安裝 Node.js。您可以從以下網址下載最新版本的 Node.js 官方網站.
create-react-app
是一個廣泛使用的CLI工具,用於生成React應用程序。使用以下命令在全域範圍內安裝它:
npm install -g create-react-app
現在已安裝 create-react-app,您可以使用以下命令創建一個新的 React 應用程式:
create-react-app my-pdf-app
此命令將在一個名為my-pdf-app的文件夾中生成一個新的 React 應用程式。移動到新創建的目錄中:
cd my-pdf-app
要啟動開發伺服器並查看新的 React 應用程式運行效果,請執行以下命令:
npm start
現在您已經設置了一個 React 應用程式,您可以按照本文前幾部分所述的步驟,使用像 React-pdf 這樣的流行庫來實現 HTML 到 PDF React 轉換。
React-pdf 是一個專為 React 應用程式設計的流行庫,提供與 React 生態系統的無縫集成。它的一些主要功能包括支持內聯和外部 CSS、多頁 PDF 生成功能、高級樣式以及與伺服器端渲染的兼容性。 (SSR).
在本節中,我們將重點介紹如何在 React 應用程式中使用 React-pdf 來創建 PDF 文件。首先,你需要安裝 React-pdf 套件:
npm install --save @React-pdf/renderer
安裝後,您可以建立一個新的 React 組件來定義您的 PDF 文件結構:
import React from "react";
import {
Document,
Page,
Text,
View,
StyleSheet,
Image,
Font,
} from "@React-pdf/renderer";
const invoiceData = {
sender: {
name: "John Doe",
address: "123 Main Street",
city: "New York",
state: "NY",
zip: "10001",
},
recipient: {
name: "Jane Smith",
address: "456 Elm Street",
city: "San Francisco",
state: "CA",
zip: "94107",
},
items: [
{ description: "Item 1", quantity: 2, unitPrice: 10 },
{ description: "Item 2", quantity: 3, unitPrice: 15 },
{ description: "Item 3", quantity: 1, unitPrice: 20 },
],
invoiceNumber: "INV-123456",
date: "April 26, 2023",
};
const styles = StyleSheet.create({
page: {
backgroundColor: "#FFF",
padding: 30,
},
header: {
fontSize: 24,
textAlign: "center",
marginBottom: 30,
},
sender: {
marginBottom: 20,
},
recipient: {
marginBottom: 30,
},
addressLine: {
fontSize: 12,
marginBottom: 2,
},
itemsTable: {
display: "table",
width: "100%",
borderStyle: "solid",
borderWidth: 1,
borderRightWidth: 0,
borderBottomWidth: 0,
},
tableRow: {
margin: "auto",
flexDirection: "row",
},
tableColHeader: {
width: "25%",
borderStyle: "solid",
borderWidth: 1,
borderLeftWidth: 0,
borderTopWidth: 0,
backgroundColor: "#F0F0F0",
},
tableCol: {
width: "25%",
borderStyle: "solid",
borderWidth: 1,
borderLeftWidth: 0,
borderTopWidth: 0,
},
tableCell: {
fontSize: 12,
textAlign: "center",
padding: 5,
},
total: {
marginTop: 20,
textAlign: "right",
},
totalLabel: {
fontSize: 14,
fontWeight: "bold",
},
totalValue: {
fontSize: 14,
},
});
const InvoiceDocument = () => {
const totalAmount = invoiceData.items.reduce(
(total, item) => total + item.quantity * item.unitPrice,
0
);
return (
Invoice
{invoiceData.sender.name}
{invoiceData.sender.address}
{invoiceData.sender.city}, {invoiceData.sender.state}{" "}
{invoiceData.sender.zip}
{invoiceData.recipient.name}
{invoiceData.recipient.address}
{invoiceData.recipient.city}, {invoiceData.recipient.state}{" "}
{invoiceData.recipient.zip}
Description
Quantity
Unit Price
Amount
{invoiceData.items.map((item, index) => (
{item.description}
{item.quantity}
{item.unitPrice.toFixed(2)}
{(item.quantity * item.unitPrice).toFixed(2)}
))}
Total:
${totalAmount.toFixed(2)}
);
};
export default InvoiceDocument;
現在,你可以使用 React-pdf
的 PDFDownloadLink
組件來下載生成的 PDF 文件:
import React from 'react';
import { PDFDownloadLink } from '@React-pdf/renderer';
import InvoiceDocument from './InvoiceDocument';
import './App.css';
const App = () => (
{({ blob, url, loading, error }) =>
loading ? 'Loading document...' : 'Download Invoice'
}
);
export default App;
現在在 App.css 中添加一些 CSS 樣式以自定義用戶界面:
.app-container {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #d1e8ff;
}
.download-button {
display: inline-block;
background-color: #5a8fd5;
color: #fff;
font-size: 18px;
font-weight: bold;
padding: 12px 24px;
border-radius: 4px;
text-decoration: none;
cursor: pointer;
transition: background-color 0.3s ease;
}
.download-button:hover {
background-color: #3a68b7;
}
在瀏覽器中開啟 localhost:3000。
當您按下下載按鈕時,將會下載 PDF 檔案。
以下是從 HTML 文件生成的 PDF 文件的輸出:
React-pdf 庫支持多種樣式選項,類似於 CSS。以下是一些您可以用來自訂 PDF 文件外觀的常見樣式屬性:
color
:設置文字顏色。fontSize
:設置文字的字體大小。fontFamily
:設置文字的字體系列。textAlign
:設置文字對齊方式。 (例如,'left','right','center',或 'justify')* margin
:設置元素周圍的外邊距。padding
:設置元素內部的填充。border
:設置元素的邊框。backgroundColor
:設置元素的背景顏色。IronPDF for Node.js 是在 React 中將 HTML 轉換為 PDF 的絕佳替代方案。由 IronSoftware 開發,這是一個強大的函式庫,使開發人員能夠直接從其 Node.js 應用程序生成和操作 PDF 文件。IronPDF 的一個突出功能是它在生成 PDF 期間能處理 HTML 內容中 JavaScript 的執行,從而實現動態和交互式的 PDF 創建。
IronPDF 支援包括 Windows、MacOS、Linux、Docker 以及如 Azure 和 AWS 的雲平台,確保了跨平台的兼容性。其用戶友好的 API 使開發人員能夠快速將 PDF 生成和操作集成到他們的 Node.js 項目中。
React 是一個用於構建用戶界面的 JavaScript 函式庫,既然 IronPDF 是為 Node.js 構建的,您可以通過使用其 Node.js API 將 IronPDF 集成到您的 React 應用程序中。
以下是一個如何將 IronPDF 與 React 一起使用的概述:
npm install @ironsoftware/ironpdf
import React from 'react';
import { PdfDocument } from '@ironsoftware/ironpdf';
const HTMLToPDFComponent = () => {
const convertHTMLToPDF = async (htmlContent) => {
try {
const pdf = await PdfDocument.fromHtml(htmlContent);
await pdf.saveAs('generated_pdf.pdf');
alert('PDF generated successfully!');
} catch (error) {
console.error('Error generating PDF:', error);
}
};
return (
<div>
{/* Input HTML content */}
<textarea onChange={(e) => convertHTMLToPDF(e.target.value)} />
</div>
);
};
export default HTMLToPDFComponent;
處理 PDF 生成:在您的 React 組件中使用 IronPDF 的功能來處理 PDF 的生成、操作與保存。您可以使用 IronPDF 的方法來進行轉換。 HTML 字串, 網址,或 圖像 到 PDF。
import React from 'react';
const PDFViewerComponent = () => {
return (
<div>
{/* Render PDF using appropriate component or library */}
<iframe src="generated_pdf.pdf" width="100%" height="600px" title="PDF Viewer" />
</div>
);
};
export default PDFViewerComponent;
有了IronPDF,開發人員可以高效地從各種來源生成專業級PDF文檔,並根據其具體需求進行自訂,無縫集成PDF生成功能到他們的.NET應用程序中。IronPDF還支援先進功能,例如CSS、JavaScript和自訂字體,確保生成的PDF文件能符合您的應用程序的設計和需求。
在本文中,我們介紹了使用 React-pdf 庫將 HTML 轉換為 PDF 的過程。我們討論了流行的 PDF 生成 庫,如何使用 React-pdf 創建和樣式化 PDF 文件,以及生成更複雜 PDF 文檔的其他選項。
通過遵循此指南,您應該已經對如何在 React 應用程序中生成 PDF 文件有了扎實的理解,從而能夠生成高質量的 PDF,以滿足各種使用需求。
IronPDF 提供了 免費試用可以讓你測試該庫並確定它是否符合你的需求,然後再決定是否購買。在試用期結束後,IronPDF 授權 從 $749 開始,其中包括優先支援和更新。此外,也適用於其他語言,例如 C# .NET, Java 和 Python. 從下載庫文件 這裡 試試看。