如何在 .NET Core 中創建 PDF 文件
IronPDF 透過將 HTML 和 CSS 直接轉換為 Professional PDF 文件,讓在 .NET Core 中建立 PDF 檔案變得簡單。 安裝 NuGet 包,使用 ChromePdfRenderer 渲染 HTML 內容,然後只需幾行程式碼即可儲存 PDF。
如何開始使用 IronPDF?
IronPDF 是一套全面的 .NET Core PDF 函式庫,能將複雜的 PDF 建立流程轉化為簡易的操作。 與需要手動繪製元素的傳統方法不同,IronPDF 運用 HTML 標記和 CSS 來生成完全符合您設計需求的 PDF 檔案。 此方法特別有助於正在學習最佳實踐的開發者,讓他們能獲得Professional文件,且無需面對陡峭的學習曲線。
若要在您的 .NET Core 函式庫專案中開始建立 PDF 檔案,請透過 Visual Studio 的套件管理員主控台安裝 IronPDF NuGet 套件:
Install-Package IronPdf
透過此簡易安裝程序,您的網頁應用程式即可立即獲得強大的 PDF 生成功能。 此套件包含 HTML 轉 PDF 所需的一切功能,非常適合從網頁開發轉向文件生成領域的開發人員。
IronPDF 為何能從眾多 PDF 函式庫中脫穎而出?
IronPDF 憑藉其 Chrome 渲染引擎脫穎而出,確保 HTML 轉 PDF 時能精準呈現每個像素。 與 iText 或 Aspose 等競爭對手不同,IronPDF 的解決方案讓開發人員能運用熟悉的 HTML 和 CSS 技能,無需學習專屬的 PDF 語法。 這能顯著縮短開發時間,並讓初學者更容易在 C# 中建立 PDF 檔案。
系統需求為何?
IronPDF 支援多種平台,包括 Windows、Linux 及 macOS。 在生產環境部署時,它能與 Azure 和 AWS Lambda 無縫整合。 此函式庫需 .NET Core 3.1 或更高版本,使其能與現代開發環境相容。 針對容器化應用程式,亦提供 Docker 支援。
IronPDF 的價格是多少?
IronPDF 提供靈活的授權方案,包含涵蓋所有功能的免費試用版。 商業授權起價為 749 美元,包含一年的技術支援與更新服務。 如需詳細的定價資訊及授權金鑰的實作方式,請造訪授權頁面。 該函式庫亦支援透過單一授權在多個平台上部署。
如何建立我的第一個 PDF 文件?
讓我們建立一個簡單的 PDF 文件來了解基本概念。 以下範例展示如何使用 ChromePdfRenderer 類別生成包含格式化內容的 PDF 檔案:
using IronPdf;
// Create a new ChromePdfRenderer object
var renderer = new ChromePdfRenderer();
// Define HTML content with styling
var html = @"
<html>
<body style='font-family: Arial; margin: 40px;'>
<h1>Hello World PDF Document</h1>
<p>This is your first PDF file created with IronPDF!</p>
</body>
</html>";
// Generate PDF from HTML
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the PDF document
pdf.SaveAs("output.pdf");
using IronPdf;
// Create a new ChromePdfRenderer object
var renderer = new ChromePdfRenderer();
// Define HTML content with styling
var html = @"
<html>
<body style='font-family: Arial; margin: 40px;'>
<h1>Hello World PDF Document</h1>
<p>This is your first PDF file created with IronPDF!</p>
</body>
</html>";
// Generate PDF from HTML
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the PDF document
pdf.SaveAs("output.pdf");
Imports IronPdf
' Create a new ChromePdfRenderer object
Dim renderer As New ChromePdfRenderer()
' Define HTML content with styling
Dim html As String = "
<html>
<body style='font-family: Arial; margin: 40px;'>
<h1>Hello World PDF Document</h1>
<p>This is your first PDF file created with IronPDF!</p>
</body>
</html>"
' Generate PDF from HTML
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Save the PDF document
pdf.SaveAs("output.pdf")
此程式碼透過渲染 HTML 內容來建立新的 PDF 檔案。 ChromePdfRenderer 負責處理轉換,確保您的 PDF 文件保持一致的格式。 如需更進階的範例,請瀏覽我們的程式碼範例庫。
生成的 PDF 是什麼樣子?
生成的 PDF 顯示效果與 HTML 在 Chrome 中的渲染效果完全一致,包含正確的字型管理與樣式設定。 IronPDF 完整保留所有 CSS 屬性,包括自訂字型與 UTF-8 字元支援,確保國際語言能正確顯示。 渲染選項可讓您針對輸出品質與檔案大小進行微調。
為何使用 HTML 而非直接的 PDF 指令?
基於 HTML 的 PDF 生成技術為初學者帶來多項優勢。 首先,您可以在轉換為 PDF 之前,於任何瀏覽器中預覽內容,使除錯過程更加簡便。 其次,您可以重複利用現有的網頁設計技能及 CSS 框架(例如 Bootstrap)。 第三,當使用相同的 HTML 範本時,維持網頁與 PRINT 輸出的一致性便變得輕而易舉。
初學者應避免哪些常見錯誤?
新手開發者常會遇到資產的相對路徑問題、CSS 媒體類型遺漏,或是忘記處理非同步渲染等狀況。 引用外部資源時,請務必使用絕對網址或設定基準網址。 針對 JavaScript 內容較多的頁面,建議考慮使用渲染延遲。 若需排除常見問題,請參閱我們的快速疑難排解指南。
如何運用進階功能將 HTML 轉換為 PDF?
IronPDF 擅長將複雜的網頁和 HTML 內容轉換為專業的 PDF 檔案。 以下程式碼示範了如何建立具備表格、圖片及樣式化元素等進階功能的 PDF 文件:
public void CreateAdvancedPdf()
{
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
var html = @"
<html>
<head>
<style>
table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px; border: 1px solid #ddd; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h2>Sales Report</h2>
<table>
<tr>
<th>Product</th>
<th>Quantity</th>
<th>Total</th>
</tr>
<tr>
<td>Software License</td>
<td>10</td>
<td>$500</td>
</tr>
</table>
</body>
</html>";
// Create PDF file
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
}
public void CreateAdvancedPdf()
{
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;
var html = @"
<html>
<head>
<style>
table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px; border: 1px solid #ddd; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h2>Sales Report</h2>
<table>
<tr>
<th>Product</th>
<th>Quantity</th>
<th>Total</th>
</tr>
<tr>
<td>Software License</td>
<td>10</td>
<td>$500</td>
</tr>
</table>
</body>
</html>";
// Create PDF file
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
}
Public Sub CreateAdvancedPdf()
Dim renderer = New ChromePdfRenderer()
' Configure rendering options
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25
Dim html As String = "
<html>
<head>
<style>
table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px; border: 1px solid #ddd; }
th { background-color: #f2f2f2; }
</style>
</head>
<body>
<h2>Sales Report</h2>
<table>
<tr>
<th>Product</th>
<th>Quantity</th>
<th>Total</th>
</tr>
<tr>
<td>Software License</td>
<td>10</td>
<td>$500</td>
</tr>
</table>
</body>
</html>"
' Create PDF file
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
End Sub
此範例展示如何建立包含格式化表格的 PDF 文件,以示範 IronPDF 處理複雜版面配置與 CSS 樣式的能力。 針對更複雜的報告,建議考慮採用資料驅動的 PDF 生成技術。
CSS 樣式如何轉移至 PDF?
IronPDF 的 Chrome 引擎確保其 CSS 支援符合現代瀏覽器標準。 這包括 Flexbox 佈局、CSS Grid,甚至 CSS 動畫(以靜態形式呈現)。 此函式庫透過讓您指定視口尺寸來處理響應式 CSS,確保"行動優先"設計能正確渲染。
何時應該使用 RenderingOptions?
RenderingOptions 提供對 PDF 輸出的控制,包括邊距、紙張尺寸和方向。 在製作必須符合特定格式要求的文件(例如發票或正式報告)時,請使用這些設定。 這些選項亦可控制 JavaScript 執行、渲染延遲以及 PRINT 媒體的 CSS。
支援哪些進階 CSS 功能?
IronPDF 支援進階 CSS,包括自訂字型、SVG 圖形及 CSS 變換。 此引擎可處理 PRINT 專用的 CSS 規則,讓 PDF 輸出與螢幕顯示能採用不同的樣式。 針對複雜的版面配置,分頁控制功能可確保內容在多頁間自然流暢地呈現。
如何在 ASP.NET Core 應用程式中整合 PDF 生成功能?
在 ASP.NET Core MVC 檢視中整合 PDF 產生功能非常簡單。 以下是透過控制器產生 PDF 的實作範例:
using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.IO;
public class DocumentController : Controller
{
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
// Create HTML content
var html = "<h1>Invoice</h1><p>Thank you for your purchase!</p>";
// Generate PDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;
// Return PDF file using the byte array, setting the content type to PDF
return File(pdfBytes,
"application/pdf",
"document.pdf");
}
}
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;
using System.IO;
public class DocumentController : Controller
{
public IActionResult GeneratePdf()
{
var renderer = new ChromePdfRenderer();
// Create HTML content
var html = "<h1>Invoice</h1><p>Thank you for your purchase!</p>";
// Generate PDF
var pdf = renderer.RenderHtmlAsPdf(html);
byte[] pdfBytes = pdf.BinaryData;
// Return PDF file using the byte array, setting the content type to PDF
return File(pdfBytes,
"application/pdf",
"document.pdf");
}
}
}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf
Imports System.IO
Public Class DocumentController
Inherits Controller
Public Function GeneratePdf() As IActionResult
Dim renderer As New ChromePdfRenderer()
' Create HTML content
Dim html As String = "<h1>Invoice</h1><p>Thank you for your purchase!</p>"
' Generate PDF
Dim pdf = renderer.RenderHtmlAsPdf(html)
Dim pdfBytes As Byte() = pdf.BinaryData
' Return PDF file using the byte array, setting the content type to PDF
Return File(pdfBytes, "application/pdf", "document.pdf")
End Function
End Class
此控制器方法會產生 PDF 文件並將其作為可下載文件傳回,非常適合 Web 應用程式中的伺服器端處理。 您也可以使用 MemoryStream 物件來處理 PDF 文件的建立。 針對 Blazor 應用程式,同樣的原則適用,但需進行適當調整。
將 PDF 檔案回傳給使用者的最佳方式是什麼?
這是一個 PDF 檢視器,顯示一個簡單的發票,包含"發票"標題和"感謝您的購買!"訊息,示範如何使用 IronPDF 從 ASP.NET Core 控制器產生基本的 PDF 檔案。
是否返回 PDF 檔案取決於您的使用情境。 如需立即下載,請參照示例使用 File() 方法。 針對預覽情境,建議儲存至 Azure Blob Storage 或透過 CDN 提供服務。 BinaryData 屬性為各種儲存與傳輸方式提供了靈活性。 若涉及電子郵件附件,請轉換為位元組陣列。
如何在背景任務中處理 PDF 生成?
若需執行長時間的 PDF 生成作業,請使用具備適當錯誤處理的非同步方法。 建議考慮使用背景服務或佇列系統進行批次處理。 此函式庫支援多執行緒以進行並行 PDF 建立,顯著提升了批次作業的效能。 在高負載情境下監控記憶體使用量。
為什麼使用 BinaryData 而不是 SaveAs()?
BinaryData 提供記憶體中的 PDF 訪問,無需檔案系統依賴,這對於雲端部署、容器化應用程式以及檔案權限受限的場景至關重要。 此方法亦支援串流式回應,可減少伺服器記憶體佔用,並提升大型 PDF 檔案的回應速度。
我可以使用哪些進階 PDF 生成技術?
IronPDF 支援眾多用於建立 PDF 的進階功能。 您可以添加頁首和頁尾、頁碼,甚至合併多個 PDF 檔案:
public void CreatePdfWithHeaderFooter()
{
var renderer = new ChromePdfRenderer();
// Add header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
CenterText = "Company Report",
DrawDividerLine = true
};
// Add footer with page numbers
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
var html = "<h1>Annual Report</h1><p>Content goes here...</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the new document
pdf.SaveAs("report-with-header.pdf");
}
// Merge multiple PDFs
public void MergePdfFiles()
{
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf("<p>First Document</p>");
var pdf2 = renderer.RenderHtmlAsPdf("<p>Second Document</p>");
// Merge PDF documents
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
// Example of iterating over something, illustrating 'int i' and 'index'
public void ProcessMultipleFiles(string[] filePaths)
{
for (int i = 0; i < filePaths.Length; i++)
{
// Use 'i' as an index to process each source file
var sourceFile = filePaths[i];
Console.WriteLine($"Processing file at index {i}: {sourceFile}");
// Imagine code here to load or process the file
// var pdf = PdfDocument.FromFile(sourceFile); // load
}
}
public void CreatePdfWithHeaderFooter()
{
var renderer = new ChromePdfRenderer();
// Add header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
CenterText = "Company Report",
DrawDividerLine = true
};
// Add footer with page numbers
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
var html = "<h1>Annual Report</h1><p>Content goes here...</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Save the new document
pdf.SaveAs("report-with-header.pdf");
}
// Merge multiple PDFs
public void MergePdfFiles()
{
var renderer = new ChromePdfRenderer();
var pdf1 = renderer.RenderHtmlAsPdf("<p>First Document</p>");
var pdf2 = renderer.RenderHtmlAsPdf("<p>Second Document</p>");
// Merge PDF documents
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
}
// Example of iterating over something, illustrating 'int i' and 'index'
public void ProcessMultipleFiles(string[] filePaths)
{
for (int i = 0; i < filePaths.Length; i++)
{
// Use 'i' as an index to process each source file
var sourceFile = filePaths[i];
Console.WriteLine($"Processing file at index {i}: {sourceFile}");
// Imagine code here to load or process the file
// var pdf = PdfDocument.FromFile(sourceFile); // load
}
}
Public Sub CreatePdfWithHeaderFooter()
Dim renderer = New ChromePdfRenderer()
' Add header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
.CenterText = "Company Report",
.DrawDividerLine = True
}
' Add footer with page numbers
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
.CenterText = "Page {page} of {total-pages}",
.DrawDividerLine = True
}
Dim html = "<h1>Annual Report</h1><p>Content goes here...</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Save the new document
pdf.SaveAs("report-with-header.pdf")
End Sub
' Merge multiple PDFs
Public Sub MergePdfFiles()
Dim renderer = New ChromePdfRenderer()
Dim pdf1 = renderer.RenderHtmlAsPdf("<p>First Document</p>")
Dim pdf2 = renderer.RenderHtmlAsPdf("<p>Second Document</p>")
' Merge PDF documents
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
End Sub
' Example of iterating over something, illustrating 'int i' and 'index'
Public Sub ProcessMultipleFiles(filePaths As String())
For i As Integer = 0 To filePaths.Length - 1
' Use 'i' as an index to process each source file
Dim sourceFile = filePaths(i)
Console.WriteLine($"Processing file at index {i}: {sourceFile}")
' Imagine code here to load or process the file
' Dim pdf = PdfDocument.FromFile(sourceFile) ' load
Next
End Sub
這些範例示範如何為 PDF 文件添加專業潤色,以及如何將多個文件合併到一個文件中。 若需處理更複雜的情境,請探索包含 HTML 內容的高階頁首/頁尾選項。
讓我們再提供一個實用範例,展示如何建立帶有浮水印和背景的 PDF:
public void CreatePdfWithWatermark()
{
var renderer = new ChromePdfRenderer();
// Create the main PDF content
var html = @"
<h1>Confidential Document</h1>
<p>This document contains sensitive information.</p>
<p>Please handle with care.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Add a watermark
pdf.ApplyWatermark("<h2 style='color:red;opacity:0.3;'>CONFIDENTIAL</h2>",
rotation: 45,
opacity: 50);
// Add page numbers to all pages
for (int i = 0; i < pdf.PageCount; i++)
{
pdf.StampHtml($"<div style='text-align:center'>Page {i + 1}</div>",
i,
VerticalAlignment.Bottom,
HorizontalAlignment.Center);
}
pdf.SaveAs("watermarked-document.pdf");
}
public void CreatePdfWithWatermark()
{
var renderer = new ChromePdfRenderer();
// Create the main PDF content
var html = @"
<h1>Confidential Document</h1>
<p>This document contains sensitive information.</p>
<p>Please handle with care.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// Add a watermark
pdf.ApplyWatermark("<h2 style='color:red;opacity:0.3;'>CONFIDENTIAL</h2>",
rotation: 45,
opacity: 50);
// Add page numbers to all pages
for (int i = 0; i < pdf.PageCount; i++)
{
pdf.StampHtml($"<div style='text-align:center'>Page {i + 1}</div>",
i,
VerticalAlignment.Bottom,
HorizontalAlignment.Center);
}
pdf.SaveAs("watermarked-document.pdf");
}
Public Sub CreatePdfWithWatermark()
Dim renderer = New ChromePdfRenderer()
' Create the main PDF content
Dim html = "
<h1>Confidential Document</h1>
<p>This document contains sensitive information.</p>
<p>Please handle with care.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' Add a watermark
pdf.ApplyWatermark("<h2 style='color:red;opacity:0.3;'>CONFIDENTIAL</h2>",
rotation:=45,
opacity:=50)
' Add page numbers to all pages
For i As Integer = 0 To pdf.PageCount - 1
pdf.StampHtml($"<div style='text-align:center'>Page {i + 1}</div>",
i,
VerticalAlignment.Bottom,
HorizontalAlignment.Center)
Next
pdf.SaveAs("watermarked-document.pdf")
End Sub
跨頁面的頁首與頁尾如何運作?
這是一個多頁PDF文檔,頁首顯示"公司報告"(帶分隔線),主標題為"年度報告"(包含佔位符內容),頁腳顯示"第1頁,共1頁",展示了IronPDF在文檔頁面中應用頁眉和頁腳的功能。
頁首和頁尾會自動套用至 PDF 中的所有頁面。 IronPDF 支援動態內容,例如頁碼、日期和文件標題。 針對特定頁面上的不同標題,請在初始渲染後使用疊印方法。 該函式庫亦支援 HTML 頁首與頁尾,可處理包含圖片與樣式的複雜版面配置。
何時該合併 PDF 檔案,何時該生成單一文件?
當需要合併現有文件,或不同段落需要獨特的渲染設定時,PDF 合併功能是理想選擇。 若內容流暢且樣式一致,請合併為單一文件。 對於頁面方向或紙張尺寸各異的報告,合併功能能提供更佳的控制。 請考量大型文件對效能的影響。
合併大型 PDF 檔案會對效能造成什麼影響?
合併大型 PDF 檔案需要謹慎的記憶體管理。 若文件大小超過 100MB,請採用串流處理方式或分批處理。 請使用壓縮選項來縮小檔案大小。 若面臨大量翻譯需求,請考慮透過適當的資源分配來進行並行處理。 監控系統資源並實作適當的錯誤處理機制。
如何處理表單與動態內容?
IronPDF 可建立包含表單欄位的互動式 PDF 文件:
public void CreatePdfWithForm()
{
var html = @"
<!DOCTYPE html>
<html>
<head>
<title>PDF Test Form</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f4f4f4;
}
.form-container {
width: 400px;
padding: 20px;
border: 1px solid #ccc;
border-radius: 8px;
background-color: #fff;
box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
}
.form-group {
margin-bottom: 15px;
}
label {
display: block; /* Make label take up full width */
margin-bottom: 5px;
font-weight: bold;
color: #333;
}
input[type='text'], textarea {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
box-sizing: border-box; /* Include padding and border in the element's total width and height */
}
textarea {
height: 100px;
resize: vertical;
}
.checkbox-group {
display: flex;
align-items: center;
}
.checkbox-group label {
display: inline;
font-weight: normal;
margin-left: 8px;
}
</style>
</head>
<body>
<div class='form-container'>
<h2>Document Generation Test Form</h2>
<form>
<div class='form-group'>
<label for='fullName'>Full Name:</label>
</div>
<div class='form-group'>
<label for='comments'>Comments/Feedback:</label>
<textarea id='comments' name='comments' placeholder='Type your feedback here...'></textarea>
</div>
<div class='form-group checkbox-group'>
<label for='agree'>I agree to the terms and conditions.</label>
</div>
<button style='padding: 10px 15px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;'>
Test Button Rendering
</button>
</form>
</div>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("form.pdf");
}
public void CreatePdfWithForm()
{
var html = @"
<!DOCTYPE html>
<html>
<head>
<title>PDF Test Form</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f4f4f4;
}
.form-container {
width: 400px;
padding: 20px;
border: 1px solid #ccc;
border-radius: 8px;
background-color: #fff;
box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
}
.form-group {
margin-bottom: 15px;
}
label {
display: block; /* Make label take up full width */
margin-bottom: 5px;
font-weight: bold;
color: #333;
}
input[type='text'], textarea {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
box-sizing: border-box; /* Include padding and border in the element's total width and height */
}
textarea {
height: 100px;
resize: vertical;
}
.checkbox-group {
display: flex;
align-items: center;
}
.checkbox-group label {
display: inline;
font-weight: normal;
margin-left: 8px;
}
</style>
</head>
<body>
<div class='form-container'>
<h2>Document Generation Test Form</h2>
<form>
<div class='form-group'>
<label for='fullName'>Full Name:</label>
</div>
<div class='form-group'>
<label for='comments'>Comments/Feedback:</label>
<textarea id='comments' name='comments' placeholder='Type your feedback here...'></textarea>
</div>
<div class='form-group checkbox-group'>
<label for='agree'>I agree to the terms and conditions.</label>
</div>
<button style='padding: 10px 15px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;'>
Test Button Rendering
</button>
</form>
</div>
</body>
</html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("form.pdf");
}
Public Sub CreatePdfWithForm()
Dim html As String = "
<!DOCTYPE html>
<html>
<head>
<title>PDF Test Form</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f4f4f4;
}
.form-container {
width: 400px;
padding: 20px;
border: 1px solid #ccc;
border-radius: 8px;
background-color: #fff;
box-shadow: 2px 2px 5px rgba(0,0,0,0.1);
}
.form-group {
margin-bottom: 15px;
}
label {
display: block; /* Make label take up full width */
margin-bottom: 5px;
font-weight: bold;
color: #333;
}
input[type='text'], textarea {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
box-sizing: border-box; /* Include padding and border in the element's total width and height */
}
textarea {
height: 100px;
resize: vertical;
}
.checkbox-group {
display: flex;
align-items: center;
}
.checkbox-group label {
display: inline;
font-weight: normal;
margin-left: 8px;
}
</style>
</head>
<body>
<div class='form-container'>
<h2>Document Generation Test Form</h2>
<form>
<div class='form-group'>
<label for='fullName'>Full Name:</label>
</div>
<div class='form-group'>
<label for='comments'>Comments/Feedback:</label>
<textarea id='comments' name='comments' placeholder='Type your feedback here...'></textarea>
</div>
<div class='form-group checkbox-group'>
<label for='agree'>I agree to the terms and conditions.</label>
</div>
<button style='padding: 10px 15px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;'>
Test Button Rendering
</button>
</form>
</div>
</body>
</html>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("form.pdf")
End Sub
這將創建一個帶有表單字段的交互式 PDF,用戶可以填寫這些字段,非常適合需要用戶輸入的應用程式。 程式碼亦展示了 HTML 元素如何無縫整合至生成的內容中。 若需處理更複雜的表單,請參閱我們的表單建立範例。
PDF 表單支援哪些表單元素?
IronPDF 支援所有標準 HTML 表單元素,包括文字輸入框、核取方塊、單選按鈕、下拉式選單及按鈕。 此函式庫保留了表單功能,讓使用者能透過標準的 PDF 閱讀器與 PDF 檔案進行互動。 針對進階情境,請使用 JavaScript 實作數位簽章與表單驗證。
如何處理提交的 PDF 表單資料?
使用 IronPDF 的表單欄位 API 擷取表單資料。 透過程式化方式讀取提交的值,並將其整合至應用程式的資料處理流程中。針對網頁應用程式,建議考慮將 PDF 轉換為 HTML,以便更輕鬆地處理表單。 處理使用者提交的 PDF 檔案時,請實施適當的安全措施。
為何使用 PDF 表單而非網頁表單?
PDF 表單具備離線處理能力、跨裝置格式一致性,並符合數位簽名的法律規範。 這些工具非常適合用於合約、應用程式,以及需要歸檔或可直接列印格式的文件。 PDF 檔案還具備內建的安全功能,且在維持格式完整性方面比網頁表單更為優異。
有哪些最佳實踐與錯誤處理策略?
在生產環境中生成 PDF 檔案時,請透過全面的日誌記錄來實施適當的錯誤處理:
try
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
// Log error and handle appropriately
Console.WriteLine($"PDF generation failed: {ex.Message}");
}
try
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
// Log error and handle appropriately
Console.WriteLine($"PDF generation failed: {ex.Message}");
}
Imports System
Try
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Catch ex As Exception
' Log error and handle appropriately
Console.WriteLine($"PDF generation failed: {ex.Message}")
End Try
始終驗證輸入資料並妥善處理異常情況,以確保應用程式中 PDF 產生的可靠性。 在生產環境中,請實施自訂日誌記錄解決方案以追蹤問題。
常見的 PDF 生成錯誤有哪些?
常見錯誤包括缺少依賴項、檔案路徑錯誤、記憶體問題以及渲染超時。 若在 Linux 環境部署,請確保已安裝所需函式庫。 Azure 部署可能需要特定的層級配置。 若遇到特定平台的問題,請務必參閱我們的疑難排解指南。
如何除錯 CSS 渲染問題?
使用 IronPDF 的 Chrome 除錯功能,在轉換前預覽 HTML。 啟用除錯記錄以識別渲染問題。 請先在 Chrome 瀏覽器中測試 CSS,因為 IronPDF 使用相同的引擎。針對響應式設計,請設定適當的視口尺寸。 請考慮使用 CSS 媒體查詢來設定專屬列印的樣式。
何時該使用非同步 PDF 生成?
在網頁應用程式中使用非同步方法,以避免阻塞 UI 執行緒。 請在批次處理、處理大型文件,或渲染大量 JavaScript 內容時使用 async。 非同步操作可提升應用程式的反應速度,並實現更佳的資源利用率。 對於耗時較長的 PDF 生成任務,請考慮採用背景工作處理機制。
關於在 .NET Core 中建立 PDF,我們學到了什麼?
IronPDF 將在 .NET Core 中建立 PDF 檔案這項複雜任務,轉化為簡單且易於管理的流程。 從基本的文件建立到表單、圖片及頁面管理等進階功能,此 .NET 函式庫提供了透過程式碼生成 PDF 文件的完整工具。 透過轉換 HTML 內容,您可以快速載入資料並產生成品檔案。
無論是建立簡單的報表或複雜的多頁文件,IronPDF 直觀的 API 與強大的渲染引擎,使其成為 .NET 開發者的理想選擇。 該函式庫對現代網頁標準的支援、詳盡的文件以及活躍的社群,確保了各級技術水平的開發者皆能成功部署。 立即使用 IronPDF 的免費試用版,在您的 ASP.NET Core 應用程式中開始建立專業的 PDF 檔案。
準備好為您的應用程式添加 PDF 生成功能了嗎? 立即開始使用 IronPDF ,體驗建立 PDF 的便利。 探索我們的完整教學指南與程式碼範例,加速您的開發進程。
常見問題解答
什麼是IronPDF?
IronPDF 是針對 ASP.NET 應用程序設計的強大 .NET Core 庫,簡化了 PDF 文檔的創建和操作。
我如何在 .NET Core 中創建 PDF 文檔?
你可以通過使用 IronPDF 庫在 .NET Core 中創建 PDF 文檔,該庫提供簡便的方法,允許在應用程序中編程生成 PDF。
我可以使用 IronPDF 創建哪些類型的文檔?
通過 IronPDF,你可以創建各種文檔類型,包括發票、報告以及任何其他需要生成 PDF 的基於文檔的系統。
IronPDF 適合 ASP.NET 應用程序嗎?
是的,IronPDF 特別適合 ASP.NET 應用程序,提供無縫集成和高效的 PDF 創建功能。
我可以在哪找到 IronPDF 的官方文件?
IronPDF 的官方文件可在 Iron Software 網站上獲得,提供全面的技術細節和使用指南。
使用 IronPDF 創建 PDF 的好處是什麼?
使用 IronPDF 的好處包括易於使用、強大的功能,以及能夠在 .NET Core 應用程序中編程生成高質量的 PDF。
IronPDF 能處理複雜的 PDF 生成任務嗎?
是的,IronPDF 能夠處理複雜的 PDF 生成任務,非常適合需要高級 PDF 操作和創建的應用程序。



