跳至頁尾內容
使用IRONPDF
如何在C#中從模板生成PDF

如何在ASP.NET使用C#生成PDF

PDF文件在當今文化中普遍存在,各種企業使用它來建立發票和其他文件。 在為專案選擇.NET程式庫時,應考慮建立、讀取和寫入PDF文件的便利性。

IronPDF功能

IronPDF是市場上最好的HTML到PDF轉換器之一。 IronPDF能夠處理幾乎所有瀏覽器能夠處理的操作。 它可以從HTML5、JavaScript、CSS和圖像建立PDF文件。 .NET PDF程式庫使生成/建立PDF文件、讀取現有PDF和編輯PDF文件變得簡單。 可能的修改包括更改字體大小、分頁、文字內容等。IronPDF的使用者可以在渲染的PDF文件中建立表單欄位。

IronPDF與所有.NET Framework專案型別相容,包括ASP.NET、Windows Forms和其他傳統Windows應用程式型別。IronPDF可以直接將ASPX、Razor和其他MVC視圖組件渲染到PDF中。

IronPDF的完整功能集包括:

在Visual Studio中建立新專案

本文將通過一個簡單的控制台應用程式展示IronPDF的文件生成能力。

開啟Visual Studio軟體並進入文件選單。 選擇"新專案",然後選擇"控制台應用程式"。

在C#中從範本生成PDF,圖1:新專案 新專案

指定專案名稱及其位置。 點擊_下一步_按鈕並選擇一個.NET Framework。

在C#中從範本生成PDF,圖2:.NET Framework選擇 .NET Framework選擇

最後,點擊_建立_以生成新的Visual Studio專案。

在C#中從範本生成PDF,圖3:.NET Program.cs .NET Program.cs

3. 安裝IronPDF程式庫

IronPDF程式庫可以通過四種方式下載和安裝。

這四種方式是:

  • 使用Visual Studio。
  • 使用Visual Studio命令行。
  • 直接從NuGet網站下載。
  • 直接從IronPDF網站下載。

3.1 使用Visual Studio

NuGet Package Manager在Visual Studio軟體中可用,以便從NuGet輕鬆安裝套件。 下圖顯示如何打開NuGet Package Manager圖形介面。

在C#中從範本生成PDF,圖4:NuGet Package Manager NuGet包管理器

在Package Manager GUI的瀏覽標籤中搜尋"IronPDF"。

在C#中從範本生成PDF,圖5:IronPDF安裝 IronPDF安裝

選擇IronPdf套件(第一選項)並點擊_安裝_按鈕以將其新增到解決方案中。

3.2 使用Visual Studio命令行

In Visual Studio, go to Tools > NuGet包管理器 > Package Manager Console

在Package Manager Console標簽中輸入以下命令並按ENTER。

Install-Package IronPdf

在C#中從範本生成PDF,圖6:安裝IronPDF 安裝IronPDF

3.3 直接從NuGet網站下載

  • 前往IronPDF NuGet套件頁面
  • 點擊右側選單中的下載套件。
  • 雙擊Windows資源管理器中下載的套件以自動安裝至專案中。

3.4 直接從IronPDF網站下載

直接下載IronPDF ZIP檔,並包含IronPDF套件的最新版本

下載後,請按照下面的步驟將套件新增到專案中。

  • 在解決方案資源管理器窗口中右鍵專案。
  • 然後,選擇參考選項,並瀏覽下載的參考位置。
  • 接下來,單擊確定以新增引用。

4. 從範本建立PDF文件

下面的程式碼範例顯示如何使用簡單的幾行程式碼從給定的HTML範本建立PDF文件。

using System;
using System.Collections.Generic;
using System.Text;
using IronPdf;

class Program
{
    static void Main()
    {
        // Create an instance of ChromePdfRenderer
        var renderer = new IronPdf.ChromePdfRenderer();

        // Render the HTML as PDF and save it as Test.pdf
        renderer.RenderHtmlAsPdf(BuildTemplate()).SaveAs("Test.pdf");
    }

    /// <summary>
    /// Builds an HTML template string using StringBuilder
    /// </summary>
    /// <returns>HTML string representation of a table</returns>
    static string BuildTemplate()
    {
        var builder = new StringBuilder();
        builder.Append("<table border='1'>");
        builder.Append("<tr>");
        builder.Append("<th>");
        builder.Append("Cat Family");
        builder.Append("</th>");
        builder.Append("</tr>");

        // Iterate over the data and populate the table rows
        foreach (var item in GetData())
        {
            builder.Append("<tr>");
            builder.Append("<td>");
            builder.Append(item.ToString());
            builder.Append("</td>");
            builder.Append("</tr>");
        }

        builder.Append("</table>");
        return builder.ToString();
    }

    /// <summary>
    /// Provides a list of data representing different members of the cat family
    /// </summary>
    /// <returns>List of strings</returns>
    static List<string> GetData()
    {
        List<string> data = new List<string>
        {
            "Lion",
            "Tiger",
            "Cat",
            "Cheetah",
            "Lynx"
        };

        return data;
    }
}
using System;
using System.Collections.Generic;
using System.Text;
using IronPdf;

class Program
{
    static void Main()
    {
        // Create an instance of ChromePdfRenderer
        var renderer = new IronPdf.ChromePdfRenderer();

        // Render the HTML as PDF and save it as Test.pdf
        renderer.RenderHtmlAsPdf(BuildTemplate()).SaveAs("Test.pdf");
    }

    /// <summary>
    /// Builds an HTML template string using StringBuilder
    /// </summary>
    /// <returns>HTML string representation of a table</returns>
    static string BuildTemplate()
    {
        var builder = new StringBuilder();
        builder.Append("<table border='1'>");
        builder.Append("<tr>");
        builder.Append("<th>");
        builder.Append("Cat Family");
        builder.Append("</th>");
        builder.Append("</tr>");

        // Iterate over the data and populate the table rows
        foreach (var item in GetData())
        {
            builder.Append("<tr>");
            builder.Append("<td>");
            builder.Append(item.ToString());
            builder.Append("</td>");
            builder.Append("</tr>");
        }

        builder.Append("</table>");
        return builder.ToString();
    }

    /// <summary>
    /// Provides a list of data representing different members of the cat family
    /// </summary>
    /// <returns>List of strings</returns>
    static List<string> GetData()
    {
        List<string> data = new List<string>
        {
            "Lion",
            "Tiger",
            "Cat",
            "Cheetah",
            "Lynx"
        };

        return data;
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		' Create an instance of ChromePdfRenderer
		Dim renderer = New IronPdf.ChromePdfRenderer()

		' Render the HTML as PDF and save it as Test.pdf
		renderer.RenderHtmlAsPdf(BuildTemplate()).SaveAs("Test.pdf")
	End Sub

	''' <summary>
	''' Builds an HTML template string using StringBuilder
	''' </summary>
	''' <returns>HTML string representation of a table</returns>
	Private Shared Function BuildTemplate() As String
		Dim builder = New StringBuilder()
		builder.Append("<table border='1'>")
		builder.Append("<tr>")
		builder.Append("<th>")
		builder.Append("Cat Family")
		builder.Append("</th>")
		builder.Append("</tr>")

		' Iterate over the data and populate the table rows
		For Each item In GetData()
			builder.Append("<tr>")
			builder.Append("<td>")
			builder.Append(item.ToString())
			builder.Append("</td>")
			builder.Append("</tr>")
		Next item

		builder.Append("</table>")
		Return builder.ToString()
	End Function

	''' <summary>
	''' Provides a list of data representing different members of the cat family
	''' </summary>
	''' <returns>List of strings</returns>
	Private Shared Function GetData() As List(Of String)
		Dim data As New List(Of String) From {"Lion", "Tiger", "Cat", "Cheetah", "Lynx"}

		Return data
	End Function
End Class
$vbLabelText   $csharpLabel

在上述程式碼中:

  • 首先,我們建立IronPDF ChromePdfRenderer 類的實例以存取PDF建立功能。
  • 接下來,調用BuildTemplate方法生成的HTML字串。 此方法將HTML轉換為PDF。
  • StringBuilder來構建填充資料的HTML表格。
  • GetData返回表示"貓科"的字串列表,用於填充HTML表的行。

以下是使用給定範本生成的範例PDF文件,只需幾行程式碼。

在C#中從範本生成PDF,圖7:生成的PDF文件 生成的PDF文件

可以使用任何型別的HTML標籤建立模板,這可以幫助使用者生成使用者表單、收據等,範本相同但資料不同。

可以使用RenderUrlAsPdfRenderHtmlFileAsPdf方法從不同來源生成PDF文件。 前一個方法接受網頁的URL,而後者則接受包含電腦上HTML文件位置的字串。

閱讀這個從HTML生成PDF的教程以獲取更多資訊。

結論

在生產環境中使用IronPDF而無水印,請使用免費試用金鑰。 IronPDF附帶SaaS和OEM再分發授權,需額外付費。如需了解更多,請參考IronPDF授權頁面

常見問題

如何使用C#從HTML模板生成PDF?

您可以使用IronPDF從HTML模板生成PDF。首先,使用StringBuilder類建立具有資料佔位符的HTML字串。然後,用您的資料填充模板,並使用IronPDF的RenderHtmlAsPdf方法將HTML轉換為PDF文件。

IronPDF提供哪些方法來將HTML轉換為PDF?

IronPDF提供了多種將HTML轉換為PDF的方法,包括用於HTML字串的RenderHtmlAsPdf,用於本地HTML文件的RenderHtmlFileAsPdf,以及用於網頁URL的RenderUrlAsPdf。這些方法允許從不同的HTML來源靈活建立PDF。

如何在我的C#專案中安裝IronPDF?

要在C#專案中安裝IronPDF,您可以使用Visual Studio中的NuGet套件管理器。搜尋'IronPDF'並點擊安裝,或在套件管理員控制台中使用Install-Package IronPdf命令。

IronPDF在轉換為PDF時能處理複雜的HTML5和JavaScript嗎?

是的,IronPDF能處理複雜的HTML5和JavaScript,確保將複雜網頁轉換為PDF文件時保留其預期的格式和功能。

在C#中從模板生成PDF有哪些常見用途?

在C#中從模板生成PDF的常見用途包括建立發票、報告和表單。IronPDF允許您通過將充滿資料的動態HTML模板轉換為專業PDF文件來自動化這些過程。

IronPDF與ASP.NET和Windows Forms相容嗎?

是的,IronPDF與多種.NET Framework專案型別相容,包括ASP.NET和Windows Forms,使其適用於不同的應用開發環境。

如何建立一個新Visual Studio項目以使用IronPDF生成PDF?

要建立一個新Visual Studio專案以使用IronPDF,打開Visual Studio,選擇'新建專案',選擇'控制台應用程式',指定專案名稱和位置,選擇.NET Framework,然後點擊'建立'。之後,通過NuGet安裝IronPDF。

IronPDF可以從需要登錄表單的安全網頁中生成PDF嗎?

是的,IronPDF可以從需要通過HTML登錄表單進行身份驗證的網頁中生成PDF,讓您有效處理安全和受保護的網頁內容。

IronPDF是否完全相容.NET 10,這種支持包含什麼?

是的,IronPDF完全相容.NET 10。它能夠在.NET 10專案中開箱即用,無需其他配置,支持現代部署目標(Windows、Linux、容器),並在.NET 10中利用新的性能提升,同時保持相同的API和功能集。(來源:IronPDF對.NET 10相容性的文件)

Curtis Chau
技術作家

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

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話