跳過到頁腳內容
使用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 with Editable Form

如何在 .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 開發人員的理想選擇。 立即開始在您的 ASP.NET Core 應用中使用 IronPDF 的免費試用版來創建專業的 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 操作和創建的應用程序。

Curtis Chau
技術作家

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

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