使用 IRONPDF

從 HTML 文件在 C# 中建立 PDF

里根普恩
里根普恩
2022年1月24日
已更新 2024年1月20日
分享:

IronPDF 可程式化地將 HTML 轉換為 PDF 文件。

如何在 C# 中建立 PDF - HTML 到 PDF 示例

此技術的簡單範例可以下載並查看為 PDF 範例

本篇文章的完整源代码可用於C#,可作為C# HTML轉PDF專案源代码下載

以下教程將指導您如何使用IronPDF作為C# PDF Generator。 它涵蓋了基礎內容以及許多進階的C# PDF主題。

HTML 轉 PDF 教程

此演示將逐步講解如何使用IronPdf的範例。 從 Iron Software 申請其他使用案例演示

該演示包含 Hello World,RenderHtmlAsPdfRenderUrlAsPdf 範例。 所有範例都可以在IronPDF Demo解決方案中的相應專案下找到。

步驟 1:安裝

您可以通過 NuGet 安裝 IronPdf。 套件名稱是IronPDF NuGet Package

或者您可以使用直接下載庫

步驟 2:Hello World

一旦您在專案中安裝並引用了IronPDF,便可以立刻開始使用,只需輸入幾個字串:

var ChromePdfRenderer = new ChromePdfRenderer();  // new instance of ChromePdfRenderer
var ChromePdfRenderer = new ChromePdfRenderer();  // new instance of ChromePdfRenderer

那麼如果你需要將 HTML 轉換為 PDF

// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));

或者如果你想將網頁轉換成 PDF 文件

// uri of the page to turn into pdf
var uri = new Uri("http://www.google.com/ncr");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
// uri of the page to turn into pdf
var uri = new Uri("http://www.google.com/ncr");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));

就是這樣!

相應的結果是:

在 C# 中從 HTML 文件創建 PDF,圖 1:將 HTML 轉換為 PDF 的結果

將 HTML 轉換為 PDF 的結果**

在 C# 中從 HTML 文件創建 PDF,圖 2:將網頁轉換為 PDF 的結果

將網頁轉換為 PDF 的結果

請在IronPDFDemo.HelloWorld專案中找到程式碼示例。

步驟 3:RenderHtmlAsPdf

範例 1

要評估一個更貼近現實的例子,想像需要將一個 HTML 發票轉換成 PDF。 以下是實現該操作的程式碼。

注意:您可以在 IronPDFDemo.DemoWebSite 專案下找到發票 HTML(~/Static/TestInvoice1.html)。 請注意,發票的「列印」媒體類型使用了自訂 CSS。

瀏覽器中的原始發票看起來是這樣的:

在 C# 中從 HTML 文件創建 PDF,圖 4:


要將此轉換成 PDF 文件,使用類似於上述 HelloWorld 示例的代碼,不同之處在於源 HTML 文件。

// read html from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var ChromePdfRenderer = new ChromePdfRenderer();
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
// read html from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var ChromePdfRenderer = new ChromePdfRenderer();
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));

結果是:

在C#中從HTML文件創建PDF,圖5:從HTML生成PDF文件

從 HTML 生成 PDF 檔案

看起來很棒! 請在 IronPDFDemo.RenderHtmlAdPdfDemo 專案下找到程式碼範例。

還可以在如何在 IronPDF 中使用 HTML 文件或字符串與位元組數組中查看此問題

範例 2

本節將協助自訂範例1中生成的PDF。例如,它將添加自訂邊距、帶有文檔標題的頁首、帶有創建日期和頁碼的頁尾,以及標準發票常用的“列印”媒體類型的一些自訂CSS。 為此,初始化ChromePdfRenderOptions的實例,並將其傳遞到ChromePdfRenderer構造函數中。

var pdfRenderingOptions= new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
var pdfRenderingOptions= new ChromePdfRenderOptions()
{
    MarginTop = 50,
    MarginBottom = 50,
    TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    },
    TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    },
    CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);

提示:您可以直接設置 ChromePdfRenderer 實例的對應欄位,來取代在構造函數中作為參數傳遞選項:

var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;

注意: 頁眉和頁腳功能具有合併功能,這意味著所有合併欄位({page}、{total-pages}、{url}、{date}、{time}、{html-title}、{pdf-title})都可以填入相應的數據。

其餘的程式碼與範例 1 相同。結果是:

在 C# 中從 HTML 檔案建立 PDF,圖 6:生成具有頁首和頁尾的發票

生成具有頁眉和頁尾的發票

現在已設置自訂邊距、頁首、頁尾和用於「列印」媒體類型的 CSS。 請在 IronPDFDemo.RenderHtmlAdPdfDemo 專案下找到程式碼範例。 更多設定可以在IronPDF API 參考文件中找到。

第4步:RenderUrlAsPdf

設置

要運行此部分的示例,您需要在本地託管 IronPDFDemo.DemoWebSite。 要在 IIS Express 中執行此操作:

  1. 導航到 DemoWebSite

  2. 右鍵 > 設定為啟動專案

  3. 開始不進行偵錯 (Ctrl+F5)

  4. 導航至您的 {baseurl}/Static/TestInvoice1.html 以確保其正常運作。 這是 URL http://localhost:51169/Static/TestInvoice1.html (如果您不更改相應的專案設定,對您來說也會相同)。

範例 1

在本節中,使用與 HelloWorld 範例相同的程式碼將托管的 DemoWebSite 發票轉換為 PDF。 區別在於託管的 URL:

var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));

結果是:

在 C# 中從 HTML 檔案創建 PDF,圖7: 將託管網站生成 PDF

將託管的網站生成為 PDF

這太棒了,看起來如預期。 請在IronPDFDemo.RenderUrlAsPdfDemo專案中找到代碼範例。

範例 2

許多網站通常受身份驗證方法保護。 本節在渲染 PDF 文件的過程中使用提供的用戶名和密碼,包括一些自定義設置:自定義邊距、包含文檔標題的頁眉、包含創建日期和頁碼的頁腳,以及針對「打印」媒介類型的自定義 CSS。 發票的網址位於 http://localhost:51169/Invoice。

存取 http://localhost:51169/Invoice 導致出現「需要身份驗證」表單:

在 C# 中從 HTML 文件創建 PDF,圖 8:需要身份驗證的表單

需要身份驗證表單

注意:帳戶憑證為 "testUser"/"testPassword"。

那麼如何繞過身份驗證呢? 通過設置HttpLoginCredentials

var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
    PrintOptions = new ChromePdfRenderer()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },
    // setting login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
    PrintOptions = new ChromePdfRenderer()
    {
        MarginTop = 50,
        MarginBottom = 50,
        TextHeader = new TextHeaderFooter()
        {
            CenterText = "{pdf-title}",
            DrawDividerLine = true,
            FontSize = 16
        },
        TextFooter = new TextHeaderFooter()
        {
            LeftText = "{date} {time}",
            RightText = "Page {page} of {total-pages}",
            DrawDividerLine = true,
            FontSize = 14
        },
        CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
    },
    // setting login credentials to bypass basic authentication
    LoginCredentials = new HttpLoginCredentials()
    {
        NetworkUsername = "testUser",
        NetworkPassword = "testPassword"
    }
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));

注意:與 ChromePdfRenderer Example2 使用相同的自定義。

結果是:

在 C# 中從 HTML 文件建立 PDF,圖 9:將帶有憑證的 HTML 網站生成為 PDF 文件

生成包含憑證的 HTML 網站至 PDF 文件

一切就緒。 請參閱 IronPDFDemo.RenderUrlAsPdfDemo 專案下的代碼範例。 如果您想知道沒有 HttpLoginCredentials 的結果會是什麼樣子,這裡給您看看:

在 C# 中從 HTML 文件創建 PDF,圖 10:生成無憑證的空 PDF 文件

生成沒有憑證的空白 PDF 文件

另請參閱 Jean 的.NET HTML 到 PDF 教程

此外,IronPDF 還可以以不同方式與 PDF 互動:

里根普恩
軟體工程師
Regan 畢業於雷丁大學,擁有電子工程學士學位。在加入 Iron Software 之前,他的工作角色讓他專注於單一任務;而他在 Iron Software 工作中最喜歡的是他所能承擔的工作範圍,無論是增加銷售價值、技術支持、產品開發或市場營銷。他喜歡了解開發人員如何使用 Iron Software 庫,並利用這些知識不斷改進文檔和開發產品。
< 上一頁
在C#生成PDF檔案
下一個 >
如何使用 C# 和 IronPDF 在 ASP.NET 中檢視 PDF 檔案