跳過到頁腳內容
使用IRONPDF

如何在 .NET Core 中創建 PDF 文件

以程式設計方式建立 PDF 文件是現代 Web 應用程式中的常見方法和常見需求。 無論您是建立發票、報告還是任何基於文件的系統,了解如何在 ASP 應用程式和 .NET Core 中有效地建立 PDF 文件至關重要。 在本教學中,我們將探討使用 IronPDF 處理 .NET Core 建立 PDF 檔案任務的最佳方法。 這是一個功能強大的 .NET Core 程式庫,可簡化 PDF 產生功能。 有關詳細技術細節,請參閱官方文件。

開始使用 IronPdf

IronPDF是一個全面的 .NET Core PDF 庫,它將複雜的 PDF 創建過程轉化為簡單的操作。 與需要手動繪製元素的傳統方法不同,IronPDF 利用 HTML 標籤和 CSS 來產生符合您確切設計要求的 PDF 檔案。

若要在 .NET Core 程式庫專案中開始建立 PDF,請使用 Visual Studio 的套件管理器控制台安裝 IronPDF NuGet 程式包,方法是執行下列命令:

Install-Package IronPdf

簡單的安裝即可讓您的 Web 應用程式立即獲得強大的 PDF 生成功能。

建立您的第一個 PDF 文件

讓我們建立一個簡單的 PDF 文件來了解基本概念。 以下範例示範如何產生具有格式化內容的 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這段程式碼會建立一個新的 PdfDocument 對象,該對象會透過渲染 HTML 內容來建立一個新的 PDF 檔案。 ChromePdfRenderer 負責處理轉換,確保您的 PDF 文件保持一致的格式。

輸出

使用進階功能將 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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

本範例展示如何建立具有格式化表格的 PDF 文檔,證明了 IronPDF 處理複雜佈局和 CSS 樣式的能力。

輸出

如何在 .NET Core 中建立 PDF 檔案:圖 2 - 具有進階功能的 PDF

使用 ASP.NET Core 應用程式

在 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");
       }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

此控制器方法會產生 PDF 文件並將其作為可下載文件傳回,非常適合 Web 應用程式中的伺服器端處理。 您也可以使用新的 MemoryStream 物件來處理 PDF 文件的建立。

輸出

如何在 .NET Core 中建立 PDF 檔案:圖 3 - 使用我們的 ASP.NET 控制器產生的 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 source file = filePaths[i];
        Console.WriteLine($"Processing file at index {i}: {source file}");
        // 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 source file = filePaths[i];
        Console.WriteLine($"Processing file at index {i}: {source file}");
        // Imagine code here to load or process the file
        // var pdf = PdfDocument.FromFile(sourceFile); // load
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這些範例示範如何為 PDF 文件添加專業潤色,以及如何將多個文件合併到一個文件中。

帶有自訂頁首和頁尾的輸出

如何在 .NET Core 中建立 PDF 檔案:圖 4 - 使用簡單的自訂頁首和頁尾建立的 PDF

使用表單和動態內容

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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

這將創建一個帶有表單字段的交互式 PDF,用戶可以填寫這些字段,非常適合需要用戶輸入的應用程式。 程式碼還顯示了在生成的內容中可以使用 HTML 連結的位置。

輸出帶有可編輯表單的 PDF 文件

如何在 .NET Core 中建立 PDF 檔案:圖 5 - 帶有可填寫表單的 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}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

始終驗證輸入資料並妥善處理異常情況,以確保應用程式中 PDF 產生的可靠性。

結論

IronPDF 將 .NET Core 中建立 PDF 檔案的複雜任務轉換為一個簡單、易於管理的流程。 從基本的文件建立到表單、影像和頁面管理等進階功能,這個 .NET 函式庫提供了全面的工具,以程式設計方式產生 PDF 文件。 透過轉換 HTML 的常用方法,您可以快速載入資料並下載最終檔案。

無論您是建立簡單的報告還是複雜的多頁文檔,IronPDF 直覺的 API 和強大的渲染引擎都使其成為 .NET 開發人員的理想選擇。 立即使用 IronPDF 的免費試用版,在您的 ASP.NET Core 應用程式中開始建立專業的 PDF 檔案。

準備好為您的應用程式添加 PDF 生成功能了嗎? 立即開始使用 IronPDF ,體驗建立 PDF 的便利。

常見問題解答

什麼是 IronPdf?

IronPDF for .NET 是一個功能強大的 .NET Core 函式庫,設計用來簡化 ASP.NET 應用程式中 PDF 文件的建立與操作。

如何在 .NET Core 中建立 PDF 文件?

您可以使用 IronPDF library 在 .NET Core 中建立 PDF 文件,IronPDF library 提供了在應用程式中以程式化方式產生 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 操作和創建的應用程式。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。