IRONSOFTWAREHOME
使用IRONPDF

如何在C#中從PDF中提取圖像

Curtis Chau
Curtis Chau
Updated: 2026年4月23日

現代的網路應用程式需要的不僅僅是靜態文件建立。 無論是生成個性化的發票,建立由資料驅動的PDF報告,還是生成自定義的表單欄位,開發人員都需要強大的工具來在運行時生成PDF文件。IronPDF成為領先的解決方案,提供基於Chrome的強大渲染,與C#無縫整合,用於在C#和.NET Framework環境中動態生成PDF。

如何在C#中動態生成PDF:圖1 - 跨平台

What is Dynamic PDF Generation in C#?

在C#中動態生成PDF是在運行時利用多個資料源的變數資料(包括資料庫、API或使用者輸入)建立PDF文件。 與靜態PDF文件不同,運行時生成允許個性化內容、條件部分和由資料驅動的佈局; 這些對於能夠適應不斷變化需求的發票、PDF報告、證書和表單至關重要。 這種編程式地建立PDF的方法已成為現代.NET Framework和.NET Core應用程式的重要組成部分。

如何在C#中動態生成PDF:圖2 - 跨平台

開始使用IronPDF

首先通過Visual Studio中的Package Manager Console安裝IronPDF NuGet包:

PM > Install-Package IronPdf

如何在C#中動態生成PDF:圖3 - 安裝

或使用NuGet套件管理器介面下載並安裝。 初始化ChromePdfRenderer以生成完美像素的PDF。

using IronPdf;
// Create Chrome renderer instance
var renderer = new ChromePdfRenderer();
// Configure rendering options for PDF format
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;

ChromePdfRenderer類提供了在運行時生成PDF的基礎。設置邊距可確保有頁眉和頁腳的空間,而PrintHtmlBackgrounds則保留設計元素。 這種配置有助於根據HTML準確地建立PDF文件。 了解更多渲染選項以自定義您的PDF文件。

如何使用模板動態建立PDF文件

建立可重用的HTML模板,其中包含用於動態資料注入的占位符:

// Define HTML string template with placeholders
string invoiceTemplate = @"
<html>
<body>
    <h1>Invoice #[[INVOICE_NUMBER]]</h1>
    <p>Date: [[DATE]]</p>
    <p>Customer: [[CUSTOMER_NAME]]</p>
    <table>
        <tr><th>Item</th><th>Price</th></tr>
        [[ITEMS]]
    </table>
    <p><strong>Total: $[[TOTAL]]</strong></p>
</body>
</html>";
// Replace placeholders with dynamic data
var invoiceData = new {
    InvoiceNumber = "INV-2025-001",
    Date = DateTime.Now.ToString("yyyy-MM-dd"),
    CustomerName = "John Doe",
    Total = 1250.00m
};
string finalHtml = invoiceTemplate
    .Replace("[[INVOICE_NUMBER]]", invoiceData.InvoiceNumber)
    .Replace("[[DATE]]", invoiceData.Date)
    .Replace("[[CUSTOMER_NAME]]", invoiceData.CustomerName)
    .Replace("[[TOTAL]]", invoiceData.Total.ToString());
// Generate PDF from populated HTML content
var pdf = renderer.RenderHtmlAsPdf(finalHtml);
pdf.SaveAs("invoice.pdf");

這種模板方法將展示與資料分開,允許設計師修改複雜的佈局,而開發者專注於資料整合。 Replace方法使用運行時值替換模板ID佔位符,建立個性化的PDF文件。 為轉換具有重複段落的HTML內容, 在PDF轉換之前使用迴圈動態生成HTML。 探索更多HTML轉PDF範例以進行高級模板設計。

輸出

如何在C#中動態生成PDF:圖4 - PDF輸出

高級資料綁定與異步處理

使用異步方法擴展您的PDF生成以進行高容量處理:

// Async batch generation for multiple PDF documents
public async Task GenerateMonthlyReportsAsync(List<Customer> customers)
{
    var renderer = new ChromePdfRenderer();
    var tasks = new List<Task>();
    foreach (var customer in customers)
    {
        tasks.Add(Task.Run(async () =>
        {
            // Create HTML content with dynamic data
            string html = $@"
                <h2>Monthly Report - {customer.Name}</h2>
                <p>Account Balance: ${customer.Balance:F2}</p>
                <p>Transactions: {customer.TransactionCount}</p>
                <div style='page-break-after: always;'></div>";
            // Convert HTML to PDF format
            var document = await renderer.RenderHtmlAsPdfAsync(html);
            await document.SaveAs($"reports/{customer.Id}_report.pdf");
        }));
    }
    await Task.WhenAll(tasks);
}

異步模式使同時生成PDF成為可能,當以批處理方式生成PDF時顯著提高吞吐量。 Task.WhenAll確保所有PDF文件完成後再進行下一步。 上述程式碼使用CSS頁面分隔屬性控制分頁,確保每個客戶的報告都從新頁開始。 查看企業網路應用程式的異步PDF生成文件。

動態建立互動式PDF表單

將具有HTML表單的網頁轉換為程式化填寫的PDF:

// Enable form fields creation in rendering options
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
// Define HTML string with form elements
string formHtml = @"
<form>
    <h2>Customer Survey</h2>
    <label>Name: 
    <label>Email: 
    <label>Satisfaction:
        <select name='satisfaction'>
            <option>Excellent</option>
            <option>Good</option>
            <option>Fair</option>
        </select>
    </label><br>
    <label>Comments: <textarea name='comments'></textarea></label>
</form>";
// Create a PDF with interactive form fields
var pdfDocument = renderer.RenderHtmlAsPdf(formHtml);
pdfDocument.SaveAs("survey_form.pdf");

設置CreatePdfFormsFromHtml可將HTML表單元素轉換為互動式PDF表單字段。 使用者可以填寫、保存和電子提交這些PDF文件。 此功能通過消除紙質表單而保持熟悉的HTML開發模式來簡化工作流程。 PDFDocument物件提供程式化操作表單字段的存取。 了解PDF表單操控以進行高級實現,包括數位簽章。

輸出

如何在C#中動態生成PDF:圖5 - 互動式PDF表單輸出

為何選擇IronPDF而非其他方法

IronPDF的Chrome渲染引擎確保生成的PDF具有像素級準確性,消除了舊WebKit渲染引擎解決方案的妥協。 與需要外部執行檔或無頭瀏覽器設置的開源庫替代方案不同,IronPDF整合無縫且無依賴。 流暢的API和高級API設計使其優於內建類或複雜的Crystal Reports實現。

如何在C#中動態生成PDF:圖6 - 功能

Key advantages for dynamic PDF generation in C#

  • 完整的JavaScript執行,與其他方法不同
  • 適用於網路應用程式的執行緒安全操作
  • 與以下範例模式全面的異步支持
  • 頁碼和字體大小控制通過簡單的API端點配置
  • HTML到PDF轉換完全符合Chrome

如何在C#中動態生成PDF:圖7 - 動態PDF生成 - IronPDF

授權開始於$999對於單一開發者授權,並提供團隊和企業選項。 每個包都有其自身的優勢,通過節省開發時間來收回投資。 購買後立即獲得API金鑰。 查看授權選項以找到適合您專案的NuGet包。

總結

在C#中動態生成PDF改變了應用程式在運行時提供個性化文件的方式。IronPDF提供生成來自HTML內容、網頁和資料源的PDF文件所需的重要工具。 其基於Chrome的渲染可確保您的PDF在C#中完全符合設計規範,而異步支持則允許企業級的處理。

以下命令開始您的旅程:Install-Package IronPdf。 使用IronPDF,您可以轉換HTML字串、建立包含圖像和表格的複雜PDF、新增頁碼、控制字體大小,並從任何資料源生成PDF報告。 每個新文件無論是建立簡單的var頁面還是具有多個var文件實例的複雜佈局,都能從像素級別的渲染中受益。

從IronPDF的免費30天試用套件開始。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

Key in blue circle

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立