跳過到頁腳內容
USING IRONPDF

How to Create PDF Files in .NET Core

IronPDF 透過將 HTML 和 CSS 直接轉換為專業的 PDF 文檔,讓在 .NET Core 中建立 PDF 文件變得簡單。 安裝 NuGet 包,使用ChromePdfRenderer渲染 HTML 內容,然後只需幾行程式碼即可儲存 PDF。

我該如何開始使用 IronPDF?

IronPDF是一個全面的.NET Core PDF 庫,它將複雜的 PDF 創建過程轉化為簡單的操作。 與需要手動繪製元素的傳統方法不同,IronPDF 利用 HTML 標籤和 CSS 來產生符合您確切設計要求的 PDF 檔案。 這種方法尤其有利於學習最佳實踐的開發人員,他們希望獲得專業文檔,但又不想面臨陡峭的學習曲線。

若要開始在 .NET Core 庫專案中建立 PDF,請使用 Visual Studio 的套件管理器控制台安裝IronPDF NuGet 套件

Install-Package IronPdf

簡單的安裝即可讓您的 Web 應用程式立即獲得強大的PDF 生成功能。 該軟體包包含將HTML 轉換為 PDF所需的一切,非常適合從 Web 開發過渡到文件生成的開發人員。

IronPDF與其他PDF庫相比有何獨特之處?

IronPDF 的獨特之處在於其Chrome 渲染引擎,可確保像素級完美的 HTML 到 PDF 轉換。 與iTextAspose等競爭對手不同,IronPDF 的方法允許開發人員使用熟悉的 HTML 和 CSS 技能,而不是學習專有的 PDF 語法。 這大大縮短了開發時間,使初學者更容易使用 C# 建立 PDF

系統需求是什麼?

IronPDF 支援多種平台,包括WindowsLinuxmacOS 。 對於生產環境部署,它可以與AzureAWS 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")
$vbLabelText   $csharpLabel

這段程式碼透過渲染HTML內容來建立一個新的PDF檔案。 ChromePdfRenderer負責處理轉換,確保您的 PDF 文件保持一致的格式。 如需更多進階範例,請瀏覽我們的程式碼範例庫

產生的PDF檔案是什麼樣子的?

產生的 PDF 檔案在 Chrome 瀏覽器中的顯示效果與 HTML 檔案完全相同,字體管理和樣式都正確無誤。 IronPDF 保留所有 CSS 屬性,包括自訂字體UTF-8 字元支持,確保國際語言正確顯示。 渲染選項允許對輸出品質和檔案大小進行微調。

為什麼要使用 HTML 而不是直接使用 PDF 指令?

基於HTML的PDF產生方式為初學者提供了許多優勢。 首先,您可以在任何瀏覽器中預覽內容,然後再將其轉換為 PDF,從而簡化偵錯過程。 其次,您可以重複使用現有的網頁設計技能和 CSS 框架,例如Bootstrap 。 第三,使用相同的HTML 模板,保持網頁和印刷輸出的一致性就變得非常簡單。

初學者常犯的錯誤有哪些?

新開發者經常會遇到資源相對路徑、缺少CSS 媒體類型或忘記處理非同步渲染等問題。 引用外部資源時,請務必使用絕對 URL 或設定基本 URL。 對於大量使用 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
$vbLabelText   $csharpLabel

此範例展示如何建立具有格式化表格的 PDF 文檔,證明了 IronPDF 能夠處理複雜的佈局和 CSS 樣式。 對於更複雜的報告,可以考慮使用數據驅動的 PDF 生成技術。

CSS樣式如何傳遞到PDF?

一份PDF文檔,展示了一份專業的銷售報告,其中包含一個樣式化的表格,表格顯示了產品數據,包括產品(軟體許可)、數量(10)和總計(500美元)等列,充分展現了IronPDF在.NET Core中的表格格式化功能。

IronPDF 的 Chrome 引擎確保CSS 支援符合現代瀏覽器標準。 這包括flexbox 版面CSS Grid ,甚至CSS 動畫(渲染為靜態)。 該程式庫透過允許您指定視口尺寸來處理響應式 CSS ,從而確保行動優先設計能夠正確渲染。

何時應該使用RenderingOptions

RenderingOptions提供對 PDF 輸出的控制,包括邊距紙張大小方向。 建立必須符合特定格式要求的文件(例如發票或正式報告)時,請使用這些設定。 這些選項還可以控制JavaScript 執行渲染延遲印刷媒體 CSS

支援哪些高階CSS功能?

IronPDF 支援進階 CSS,包括自訂字體SVG 圖形CSS 轉換。 該引擎處理特定於列印的 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
$vbLabelText   $csharpLabel

此控制器方法會產生 PDF 文件並將其作為可下載文件傳回,非常適合 Web 應用程式中的伺服器端處理。 您也可以使用MemoryStream物件來處理 PDF 文件的建立。 對於Blazor 應用程序,類似的模式也適用,但需要進行一些修改。

將 PDF 文件傳回給使用者的最佳方式是什麼?

這是一個 PDF 檢視器,顯示一個簡單的發票,包含"發票"標題和"感謝您的購買!"訊息,示範如何使用 IronPDF 從 ASP.NET Core 控制器產生基本的 PDF 檔案。

是否返回PDF文件取決於您的特定使用場景。 如需立即下載,請使用如下所示的 File() 方法。 對於預覽場景,請考慮儲存至 Azure Blob 儲存體或透過 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
$vbLabelText   $csharpLabel

這些範例示範如何為 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
$vbLabelText   $csharpLabel

如何在多個頁面上實現頁首和頁尾的協同工作?

是一個多頁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
$vbLabelText   $csharpLabel

這將創建一個帶有表單字段的交互式 PDF,用戶可以填寫這些字段,非常適合需要用戶輸入的應用程式。 程式碼還展示了 HTML 元素如何無縫整合到生成的內容中。 對於更複雜的表單,請瀏覽我們的表單建立範例

PDF表單支援哪些表單元素?

這是一個互動式 PDF 表單,包含多個表單元素,例如用於輸入全名的文字輸入框、用於評論/回饋的多行文字區域、用於確認條款的複選框,以及一個帶有"測試按鈕渲染"標籤的藍色按鈕,充分展示了 IronPDF 的表單建立功能。

IronPDF 支援所有標準 HTML 表單元素,包括文字輸入方塊、複選框、單選按鈕下拉清單和按鈕。 該庫保留了表單功能,允許使用者使用標準 PDF 閱讀器與 PDF 進行互動。 對於進階場景,可以使用 JavaScript 實作數位簽章表單驗證

如何處理已提交的PDF表單資料?

使用 IronPDF 的表單欄位 API提取表單資料。 以程式設計方式讀取提交的值,並將其整合到應用程式的資料處理流程中。對於 Web 應用程序,可以考慮將 PDF 轉換為 HTML,以便更輕鬆地處理表單。 處理使用者提交的PDF文件時,應採取適當的安全措施

為什麼要使用 PDF 表單而不是 Web 表單?

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
$vbLabelText   $csharpLabel

始終驗證輸入資料並妥善處理異常情況,以確保應用程式中 PDF 產生的可靠性。 對於生產環境,應實施自訂日誌解決方案來追蹤問題。

常見的PDF生成錯誤有哪些?

常見錯誤包括缺少依賴項檔案路徑不正確記憶體問題渲染逾時。 對於Linux 部署,請確保已安裝所需的程式庫。 Azure部署可能需要特定的層配置。 遇到特定平台的問題,請務必查看我們的故障排除指南

如何調試 CSS 渲染問題?

使用 IronPDF 的Chrome 偵錯功能在轉換前預覽 HTML。 啟用調試日誌以識別渲染問題。 請先在 Chrome 瀏覽器中測試 CSS,因為 IronPDF 使用的是相同的引擎。對於響應式設計,請設定合適的視窗尺寸。 考慮使用CSS 媒體查詢來實現針對列印的特定樣式。

何時應該使用非同步PDF生成?

在Web應用程式中使用非同步方法可以防止阻塞UI執行緒。 使用非同步方式進行批次處理、處理大型文件渲染 JavaScript 密集型內容。 非同步操作可以提高應用程式的反應速度,並實現更好的資源利用率。 對於耗時較長的 PDF 產生任務,可以考慮在背景進行作業處理

我們在使用 .NET Core 建立 PDF 方面學到了什麼?

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

無論是建立簡單的報告還是複雜的多頁文檔,IronPDF 直覺的 API 和強大的渲染引擎使其成為 .NET 開發人員的理想選擇。 該程式庫對現代 Web 標準的支援、全面的文檔活躍的社群確保了各個技能水平的開發人員都能成功實現該程式庫的功能。 立即使用 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 bots,將他對技術的熱愛與創意結合。