從HTML文件在C#中建立PDF
IronPDF 程式化地將 HTML 轉換為 PDF 文件。
如何在 C# 中建立 PDF - HTML 到 PDF 範例
整篇文章的原始程式碼可作為 C# 的 C# HTML 到 PDF 項目原始程式碼下載使用。
以下教程將引導您完成使用 IronPDF 作為 C# PDF 生成器的過程。 它涵蓋了基礎知識以及許多高級 C# PDF 主題。
HTML 到 PDF C#
- 下載 C# 程式庫以將 HTML 轉換為 PDF
- 在程式碼中從 HTML 字串建立 PDF
- 在程式碼中從 HTML 文件建立 PDF
- 輕鬆將 URL 轉換為 PDF 文件
- 將 PDF 文件導出到所需位置
HTML 到 PDF 演練
本演示將帶您檢視如何使用 IronPDF 的範例。 從 Iron Software 請求額外的使用案例演示。
該演示包括 Hello World、RenderHtmlAsPdf 和 RenderUrlAsPdf 範例。 所有範例均可在 IronPDF Demo 解決方案中的對應專案下找到。
步驟 1:安裝
您可以通過 NuGet 安裝 IronPDF。 The package name is IronPDF NuGet Package.
或者您可以使用 直接庫下載。
步驟 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()然後如果您需要將 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"))或者如果您想將網頁轉換為 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"))就是這樣! 對應的結果是:
將 HTML 轉換為 PDF** 的結果
將網頁轉換為 PDF 的結果
請在 IronPDFDemo.HelloWorld 專案下找到程式碼範例。
步驟 3:RenderHtmlAsPdf
範例 1
為了評估一個更真實的例子,假設需將一張 HTML 發票轉換為 PDF。 這是如何做到的程式碼。
注意:您可以在 IronPDFDemo.DemoWebSite 專案 (~/Static/TestInvoice1.html) 下找到發票 HTML。 請注意,發票對 "print" 媒體型別有自定義 CSS。
發票在瀏覽器中看起來像這樣:

要將其轉換為 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"))結果是:
從 HTML 生成 PDF 文件
看起來很好! 請在 IronPDFDemo.RenderHtmlAdPdfDemo 專案下找到程式碼範例。
另外,請參閱這個問題 如何在 IronPDF 中使用 HTML 文件或字串與字節陣列
範例 2
此部分將幫助自定義範例 1 中的結果 PDF。例如,它將增加自定義邊距、帶有文件標題的頁眉、帶有建立日期和頁碼的頁腳,以及標準發票的 "print" 媒體型別的一些自定義 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)提示:與其在構造函式中以參數形式傳遞選項,不如為 ChromePdfRenderer 實例設置對應的字段:
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptions注意:頁眉和頁腳功能合併功能,所有合併字段 ({pdf-title}) 都可以填充對應資料。
其餘程式碼與範例 1 相同。結果是:
生成帶有頁眉和頁腳的發票
自定義邊距、頁眉、頁腳和 "print" 媒體型別的 CSS 已就位。 請在 IronPDFDemo.RenderHtmlAdPdfDemo 專案下找到程式碼範例。 更多設置可以在 IronPDF API 參考 中找到。
步驟 4:RenderUrlAsPdf
設定
要運行此節中的範例,您需要在本地託管 IronPDFDemo.DemoWebSite。 要在 IIS Express 中執行此操作:
- 導航到 DemoWebSite
- 右鍵單擊 > 設置為啟動專案
- 開始並不使用除錯(Ctrl+F5)
- 導航到您的
{baseurl}/Static/TestInvoice1.html以確保其正常工作。 這是 URLhttp://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"))結果是:
將託管網站轉換為 PDF
這很棒,而且如預期一樣。 請在 IronPDFDemo.RenderUrlAsPdfDemo 專案下找到程式碼範例。
範例 2
許多網站通常採用身份驗證方法保護其網站。 本節中提供了使用者名和密碼,以在渲染 PDF 文件時進行一些自定義:自定義邊距、具有文件標題的頁眉、具有建立日期和頁面的頁腳,以及 "print" 媒體型別的自定義 CSS。 發票的 URL 位於 http://localhost:51169/Invoice。
存取 http://localhost:51169/Invoice 將出現 "需要身份驗證" 表格:
需要身份驗證的表格
注意:認證資訊是 "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"))注意:使用與 ChromePdfRenderer 範例 2 相同的自定義。
結果是:
將帶有憑證的 HTML 網站轉換為 PDF 文件
全都準備就緒。 請在 IronPDFDemo.RenderUrlAsPdfDemo 專案下找到程式碼範例。 如果您想知道沒有 HttpLoginCredentials 的結果會是什麼樣子,這裡是:
不帶憑證生成空的 PDF 文件
另見 Jean 的 .NET HTML 到 PDF 教程
此外,IronPDF 還可以以不同的方式與 PDF 互動:
