使用IRON SUITE

從HTML文件在C#中創建PDF

IronPDF 可以透過程式設計將 HTML 文件轉換為 PDF 文件。

如何在 C# 中建立 PDF - HTML 轉 PDF 範例

本文的原始碼以 C# 格式提供,可作為C# HTML 轉 PDF 專案原始碼下載

以下教學將引導您完成使用 IronPDF 作為C# PDF 產生器的過程。 它涵蓋了C# PDF 的基礎知識以及許多高級主題。

HTML 轉 PDF 教學課程

本示範將引導您了解如何使用 IronPdf。 向 Iron Software 索取更多用例演示

該演示包括 Hello World、 RenderHtmlAsPdfRenderUrlAsPdf範例。 所有範例都可以在 IronPDF Demo 解決方案的相應項目中找到。

步驟 1:安裝

您可以透過 NuGet 安裝 IronPdf。 The package name is IronPDF NuGet Package.

Or you can use the Direct Library Download.

步驟 2:Hello World

在專案中安裝並引用 IronPDF 後,您只需輸入幾行字串即可立即開始使用它:

// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
// Create a new instance of ChromePdfRenderer
var chromePdfRenderer = new ChromePdfRenderer();
' Create a new instance of ChromePdfRenderer
Dim chromePdfRenderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

如果您需要將 HTML 轉換為 PDF:

// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// Define HTML content to turn into PDF
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";

// Render the HTML string as a PDF
using var pdf = chromePdfRenderer.RenderHtmlAsPdf(html);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' Define HTML content to turn into PDF
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"

' Render the HTML string as a PDF
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)

' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
$vbLabelText   $csharpLabel

或者,如果您想將網頁轉換為 PDF 檔案:

// URI of the page to turn into PDF
var uri = new Uri("http://www.google.com/ncr");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a 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");

// Render the webpage as a PDF
using var pdf = chromePdfRenderer.RenderUrlAsPdf(uri);

// Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
' URI of the page to turn into PDF
Dim uri As New Uri("http://www.google.com/ncr")

' Render the webpage as a PDF
Dim pdf = chromePdfRenderer.RenderUrlAsPdf(uri)

' Save the resulting PDF to a file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
$vbLabelText   $csharpLabel

就這樣! 對應結果如下:

使用 C# 從 HTML 檔案建立 PDF,圖 1:HTML 轉換為 PDF 的結果 將 HTML 轉換為 PDF 的結果**

圖 2:使用 C# 從 HTML 檔案建立 PDF:將網頁轉換為 PDF 的結果 將網頁轉換為 PDF 的結果

請在 IronPDFDemo.HelloWorld 專案下尋找程式碼範例。

步驟 3:RenderHtmlAsPdf

例 1

為了評估一個更貼近現實生活的例子,假設有一張 HTML 發票需要轉換成 PDF 檔案。 以下是實現該功能的程式碼。

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

瀏覽器中顯示的原始發票如下所示:

如圖 4 所示,如何使用 C# 從 HTML 檔案建立 PDF:


若要將此文件轉換為 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"));
' Read HTML from file
Dim html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"))
Dim chromePdfRenderer As New ChromePdfRenderer()
Dim pdf = chromePdfRenderer.RenderHtmlAsPdf(html)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"))
$vbLabelText   $csharpLabel

結果是:

圖 5:使用 C# 從 HTML 文件建立 PDF 文件 從 HTML 產生 PDF 文件

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

另請參閱關於如何在 IronPDF 中使用 HTML 文件或字串以及位元組數組的問題

例 2

本節將協助自訂範例 1 產生的 PDF 檔案。例如,它將添加自訂邊距、帶有文件標題的頁眉、帶有建立日期和頁碼的頁腳,以及一些用於標準發票"列印"媒體類型的自訂 CSS。 為此,需要初始化一個ChromePdfRenderOptions實例並將其傳遞給ChromePdfRenderer建構子。

// Configure rendering options with margins, headers, and footers
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);
// Configure rendering options with margins, headers, and footers
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);
' Configure rendering options with margins, headers, and footers
Dim pdfRenderingOptions = New ChromePdfRenderOptions() With {
	.MarginTop = 50,
	.MarginBottom = 50,
	.TextHeader = New TextHeaderFooter() With {
		.CenterText = "{pdf-title}",
		.DrawDividerLine = True,
		.FontSize = 16
	},
	.TextFooter = New TextHeaderFooter() With {
		.LeftText = "{date} {time}",
		.RightText = "Page {page} of {total-pages}",
		.DrawDividerLine = True,
		.FontSize = 14
	},
	.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
}

Dim chromePdfRenderer As New ChromePdfRenderer(pdfRenderingOptions)
$vbLabelText   $csharpLabel

提示:除了在建構函式中將選項作為參數傳遞之外,您還可以為ChromePdfRenderer實例設定對應的欄位:

var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptions
$vbLabelText   $csharpLabel

注意:頁首和頁尾具有合併功能,這表示所有合併欄位( {page}{total-pages}{url}{date}{time}{html-title}{pdf-title} )都可以填入對應的資料。

其餘程式碼與範例 1 相同。結果如下:

圖 6:使用 C# 從 HTML 檔案建立 PDF:產生帶有頁首和頁尾的發票 產生帶有頁首和頁尾的發票

現已為"印刷"媒體類型設定了自訂邊距、頁首、頁尾和 CSS。 請在 IronPDFDemo.RenderHtmlAdPdfDemo 專案下尋找程式碼範例。 更多設定請參考IronPDF API 參考文件

步驟 4:渲染 URL 為 PDF

設定

若要執行本節中的範例,您需要在本機上託管 IronPDFDemo.DemoWebSite。 在 IIS Express 中執行此操作:

  1. 導覽至示範網站
  2. 右鍵 > 設定為啟動項目
  3. 不調試啟動(Ctrl+F5)
  4. 存取您的{baseurl}/Static/TestInvoice1.html以確保其正常運作。 這是 URL http://localhost:51169/Static/TestInvoice1.html (如果您不更改相應的項目設置,則對您來說也將是相同的)。

例 1

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

// URL of the hosted invoice webpage
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"));
// URL of the hosted invoice webpage
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"));
' URL of the hosted invoice webpage
Dim uri As New Uri("http://localhost:51169/Static/TestInvoice1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))
$vbLabelText   $csharpLabel

結果是:

圖 7:使用 C# 從 HTML 檔案建立 PDF:將託管網站產生為 PDF 將託管網站產生為 PDF 文件

太好了,看起來和預期的一樣。 請在 IronPDFDemo.RenderUrlAsPdfDemo 專案中尋找程式碼範例。

例 2

許多網站都採用身份驗證方法進行保護。 本部分使用提供的使用者名稱和密碼來渲染 PDF 文件,並進行一些自訂設定:自訂邊距、帶有文件標題的頁首、帶有建立日期和頁碼的頁腳,以及"列印"媒體類型的自訂 CSS。 發票的網址是http://localhost:51169/Invoice

造訪http://localhost:51169/Invoice時會顯示"需要驗證"表單:

使用 C# 從 HTML 檔案建立 PDF,圖 8:需要驗證的表單 需要身份驗證表單

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

那麼如何繞過身份驗證呢? 透過設定HttpLoginCredentials

// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = 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
    },

    // Set 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"));
// URL of the protected invoice webpage
var uri = new Uri("http://localhost:51169/Invoice");

// Configure renderer with login credentials to bypass authentication
var urlToPdf = new ChromePdfRenderer
{
    RenderingOptions = 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
    },

    // Set 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"));
' URL of the protected invoice webpage
Dim uri As New Uri("http://localhost:51169/Invoice")

' Configure renderer with login credentials to bypass authentication
Dim urlToPdf = New ChromePdfRenderer With {
	.RenderingOptions = New ChromePdfRenderOptions() With {
		.MarginTop = 50,
		.MarginBottom = 50,
		.TextHeader = New TextHeaderFooter() With {
			.CenterText = "{pdf-title}",
			.DrawDividerLine = True,
			.FontSize = 16
		},
		.TextFooter = New TextHeaderFooter() With {
			.LeftText = "{date} {time}",
			.RightText = "Page {page} of {total-pages}",
			.DrawDividerLine = True,
			.FontSize = 14
		},
		.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
	},
	.LoginCredentials = New HttpLoginCredentials() With {
		.NetworkUsername = "testUser",
		.NetworkPassword = "testPassword"
	}
}

Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"))
$vbLabelText   $csharpLabel

>注意:此處使用的自訂設定與 ChromePdfRenderer Example2 相同。

結果是:

圖 9:使用 C# 從 HTML 檔案建立 PDF 檔案:產生包含 PDF 檔案存取權限的 HTML 網站 產生包含指向 PDF 檔案的憑證的 HTML 網站

一切就緒。 請在 IronPDFDemo.RenderUrlAsPdfDemo 專案下尋找程式碼範例。 如果您想知道不使用 HttpLoginCredentials 會得到什麼結果,請看這裡:

圖 10:使用 C# 從 HTML 文件建立 PDF 文件:產生一個不含憑證的空白 PDF 文件 產生一個不包含憑證的空 PDF 文件

另請參閱 Jean 的.NET HTML 轉 PDF 教學課程

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

使用 OCR 從 PDF 文件中提取圖像和文字 編輯您轉換後的網頁的 HTML 內容