在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
生成 PDF 文件是現代 C# .NET 開發中常見且重要的需求,無論是用於開具發票、創建詳細報告、歸檔網頁內容,或確保文件安全共享。 開發人員經常探討在 .NET 應用程式中生成 PDF 的各種方法,包括使用像 iTextSharp(現已改名為 iText 7)、PdfSharp、QuestPDF 這樣知名的庫,甚至利用內建的 .NET 功能來完成簡單的任務。 有些人還考慮整合第三方基於雲的 API 或命令列工具,如 wkhtmltopdf。
儘管這些多樣化的選擇存在,但找到一個完美平衡易用性、全面功能、高級渲染能力和強大性能的C# PDF庫,是高效開發的關鍵。 這正是IronPDF脫穎而出的地方,為C#開發者提供了一個功能強大且極為直觀的解決方案。 本教程將引導您完成在 C# .NET 中使用 IronPDF 創建 PDF 文件的簡單過程,涵蓋從基本 HTML 字串轉換到渲染複雜網頁的所有內容。 如果您希望高效地創建 PDF 文件,那麼您來對地方了。
IronPDF 是一個功能齊全的 PDF 函式庫,適用於Java。 它是可用的幾個第三方庫之一,能有效地創建、編輯和處理 PDF 文件,並從其他文件類型(HTML、PNG、RTF 等)的內容導出可編輯的 PDF 文件。 了解有關 IronPDF 和類似 PDF 函式庫的更多信息,請從不斷增長的第三方函式庫比較文章目錄中查看。
在開始需要在 C# 中生成 PDF 的專案時,開發者通常會衡量免費與商業庫的優缺點。 像 PDFSharp 或 QuestPDF 這樣的免費庫可以是基本 PDF 創建或在預算緊張時的絕佳起點。 然而,它們可能在功能集方面存在限制,在實施進階功能(例如像素級精準的 HTML 到 PDF 呈現)的複雜性上,或專業支援的即時可用性方面,會有一些局限。
像 IronPDF 这样的商业庫,雖然在生產環境中需要許可證,但通常能提供更精簡且有效的開發體驗。 它們往往具有更豐富的功能——包括高度精準的HTML、CSS和JavaScript轉換為PDF功能、全面的文件安全選項,以及強大的PDF操作工具。 此外,它們通常還附帶專業支援和定期更新的保證。 IronPDF 提倡對開發人員友好的方法。 雖然這是一個為專業使用設計的商業庫,但它為開發和測試提供了完全免費的許可,並提供一個用於生產評估的試用期。 這讓您可以在決定它是否最適合您的需要帶有進階功能的 PDF 文件創建項目之前,充分探索其功能。
Get started creating PDFs now!
IronPdf.ChromePdfRenderer
.StaticRenderHtmlAsPdf("<p>Hello Word</p>")
.SaveAs("pixelperfect.pdf");
RenderHtmlToPdf()
從 HTML 建立 PDFSaveAs
將 PDF 檔案儲存到電腦由於 HTML 是一種標記語言,因此在沒有 HTML 標籤的情況下將其內容轉換為 PDF 可能會很困難。 IronPDF 提供的功能包括在 C# 中從 HTML 建立 PDF,因其易於使用以及諸如使用 JavaScript、CSS 和圖片等附加功能。
本文將詳細介紹由 IronPDF 提供的 C# 中的 HTML 到 PDF 轉換。
在進入程式碼之前,讓我們考慮一下為什麼您可能需要在 C# 中創建 PDF:
生成票券、代金券或證書:創建具有獨特且動態生成內容的可打印文件。 IronPDF 將 HTML 轉換為 PDF 的能力非常適合為此類文件提供模板。
IronPDF 為所有這些使用案例提供有效的解決方案及更多。
開啟 Visual Studio 軟體並進入檔案選單。 選擇新專案,然後選擇主控台應用程式。 這篇文章將使用主控台應用程式來生成 PDF 文件。
在 Visual Studio 中創建一個新專案
輸入專案名稱並在適當的 TextBox 中選擇路徑。 然後,點擊下一步按鈕。
配置此專案
選擇所需的 .NET Framework,然後按一下如下所示的「建立」按鈕:
.NET Framework 選擇
Visual Studio 專案現在將為選定的應用程式生成結構,如果您選擇了控制台、Windows 和 Web 應用程式,它將打開 program.cs
文件,在這裡您可以輸入代碼並構建/運行應用程式。
下一步是添加程式庫並測試程式。
Visual Studio 軟體提供 NuGet Package Manager 選項,讓使用者可以將套件直接安裝到解決方案中。 以下截圖顯示如何打開 NuGet Package Manager。
如前所述,IronPDF 提供免費的開發和測試授權。
導航至 NuGet 套件管理器
它提供了搜索框來顯示來自 NuGet 網站的可用套件庫列表。在套件管理器中,搜索關鍵詞 "IronPDF",如下圖所示:
從 NuGet 套件管理器安裝 IronPdf 套件
從上述圖片中,從相關的 NuGet 套件列表中選擇 IronPDF 選項,並安裝解決方案的套件。
在 Visual Studio 菜單中,請前往 工具 > NuGet 套件管理器 > 套件管理器主控台
導航至套件管理器主控台
在封裝管理員主控台標籤中輸入以下行:
Install-Package IronPdf
Install-Package IronPdf
RenderHtmlAsPdf()
從HTML建立PDF安裝 IronPDF 之後,最基本的任務之一就是使用 C# 從 HTML 字串建立 PDF。 這對於在應用程式中直接生成動態 PDF 內容非常有用。 您可以使用 IronPDF 的RenderHtmlAsPdf()
方法。 當您需要快速生成 PDF 以用於簡單通知、確認或小型動態生成的片段時,這種方法是理想的選擇。
using IronPdf;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
PdfDocument doc = renderer.RenderHtmlAsPdf("<h1>This is a heading</h1>");
doc.SaveAs("FirstPDFDocument.pdf");
using IronPdf;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
PdfDocument doc = renderer.RenderHtmlAsPdf("<h1>This is a heading</h1>");
doc.SaveAs("FirstPDFDocument.pdf");
Imports IronPdf
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New ChromePdfRenderer()
Dim doc As PdfDocument = renderer.RenderHtmlAsPdf("<h1>This is a heading</h1>")
doc.SaveAs("FirstPDFDocument.pdf")
在這段代碼中,我們首先實例化ChromePdfRenderer
。 然後,我們使用基本的 HTML 字串呼叫 RenderHtmlAsPdf()
。 最後,doc.SaveAs()
將生成的 PDF 保存為 'FirstPDFDocument.pdf'。 此檔案將包含渲染的 H1 標籤。 在執行您的 C# 專案後,專案的 bin 資料夾中會有一個名為 "FirstPDFDocument.pdf" 的檔案,雙擊該檔案,PDF 檔案將在瀏覽器標籤中開啟。 使用 IronPDF,在 C# 中建立 PDF 文件或將 HTML 轉換為 PDF 只需幾行代碼。
如果您的目標是使用 C# 從現有網頁創建 PDF,IronPDF 的 RenderUrlAsPdf()
方法就是您需要的。 這對於存檔網頁內容、生成文章的PDF或捕捉現場網站的狀態非常有用。
using IronPdf;
using System;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20");
pdf.SaveAs("url.pdf");
using IronPdf;
using System;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20");
pdf.SaveAs("url.pdf");
Imports IronPdf
Imports System
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.amazon.com/?tag=hp2-brobookmark-us-20")
pdf.SaveAs("url.pdf")
在此,RenderUrlAsPdf()
接受一個 URL 字串,獲取內容,渲染後生成一個 PdfDocument
。 using
語句確保 PdfDocument
被適當處理。 生成的 'url.pdf' 將是指定網頁的 PDF 版本。 以下是上述程式碼的輸出。
從URL渲染的PDF文件輸出
其他將受歡迎的複雜網站轉換為 PDF 的例子。
另一個複雜網站呈現的範例
要在 ASP.NET MVC 應用程式中使用 C# 建立 pdf 文件(使用 .NET Framework),您可以渲染 HTML 檔案或字串,然後將其作為 FileResult
返回。 這對於根據伺服器端邏輯和數據生成 PDF,然後直接將它們傳送到用戶瀏覽器非常有用。
using IronPdf;
using System.Web;
using System.Web.Mvc; // Required for ActionResult and EmptyResult
public class PdfController : Controller
{
public ActionResult DownloadPdfFromHtmlFile()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
string htmlFilePath = HttpContext.Current.Server.MapPath("~/Project/MyHtmlDocument.html");
using var pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath);
var currentResponse = HttpContext.Current.Response;
currentResponse.Clear();
currentResponse.ContentType = "application/pdf";
currentResponse.AddHeader("Content-Disposition", "attachment;filename=\"FileName.pdf\"");
currentResponse.BinaryWrite(pdf.BinaryData);
currentResponse.Flush();
currentResponse.End();
return new EmptyResult();
}
}
using IronPdf;
using System.Web;
using System.Web.Mvc; // Required for ActionResult and EmptyResult
public class PdfController : Controller
{
public ActionResult DownloadPdfFromHtmlFile()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
string htmlFilePath = HttpContext.Current.Server.MapPath("~/Project/MyHtmlDocument.html");
using var pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath);
var currentResponse = HttpContext.Current.Response;
currentResponse.Clear();
currentResponse.ContentType = "application/pdf";
currentResponse.AddHeader("Content-Disposition", "attachment;filename=\"FileName.pdf\"");
currentResponse.BinaryWrite(pdf.BinaryData);
currentResponse.Flush();
currentResponse.End();
return new EmptyResult();
}
}
Imports IronPdf
Imports System.Web
Imports System.Web.Mvc ' Required for ActionResult and EmptyResult
Public Class PdfController
Inherits Controller
Public Function DownloadPdfFromHtmlFile() As ActionResult
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim htmlFilePath As String = HttpContext.Current.Server.MapPath("~/Project/MyHtmlDocument.html")
Dim pdf = renderer.RenderHtmlFileAsPdf(htmlFilePath)
Dim currentResponse = HttpContext.Current.Response
currentResponse.Clear()
currentResponse.ContentType = "application/pdf"
currentResponse.AddHeader("Content-Disposition", "attachment;filename=""FileName.pdf""")
currentResponse.BinaryWrite(pdf.BinaryData)
currentResponse.Flush()
currentResponse.End()
Return New EmptyResult()
End Function
End Class
在這個 MVC 控制器操作中,RenderHtmlFileAsPdf
轉換指定的 HTML 檔案。然後使用 Response
物件將 PDF 作為下載發送給客戶端。 返回EmptyResult
是因為響應直接處理。
對於 ASP.NET MVC 應用程式,一個常見的任務是從 Razor 視圖中使用 C# 建立 PDF。 這使您可以使用現有的視圖邏輯和模型來生成動態 HTML,然後由 IronPDF 轉換為 PDF。 下面的輔助方法將 Razor 視圖渲染為 HTML 字串。
using IronPdf;
using System.IO;
using System.Web.Mvc; // Required for ControllerContext, ViewEngines, etc.
public string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
controllerContext.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var viewContext = new ViewContext(controllerContext, viewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
using IronPdf;
using System.IO;
using System.Web.Mvc; // Required for ControllerContext, ViewEngines, etc.
public string RenderRazorViewToString(ControllerContext controllerContext, string viewName, object model)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
controllerContext.Controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName);
var viewContext = new ViewContext(controllerContext, viewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
Imports IronPdf
Imports System.IO
Imports System.Web.Mvc ' Required for ControllerContext, ViewEngines, etc.
Public Function RenderRazorViewToString(ByVal controllerContext As ControllerContext, ByVal viewName As String, ByVal model As Object) As String
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
controllerContext.Controller.ViewData.Model = model
Using sw = New StringWriter()
Dim viewResult = ViewEngines.Engines.FindPartialView(controllerContext, viewName)
Dim viewContext As New ViewContext(controllerContext, viewResult.View, controllerContext.Controller.ViewData, controllerContext.Controller.TempData, sw)
viewResult.View.Render(viewContext, sw)
viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View)
Return sw.GetStringBuilder().ToString()
End Using
End Function
此方法接受ControllerContext
、視圖名稱和模型,將 Razor 視圖呈現為 HTML 字串。 接著可以將此字串傳遞給 IronPDF 的 RenderHtmlAsPdf()
方法,記得若您的 Razor 視圖使用資產的相對路徑,則需設定 BaseUri
。 請閱讀.NET MVC PDF 指南文件以了解如何將 MVC 視圖呈現為二進位 PDF 文件。
當您需要使用 C# 從 XML 數據創建 PDF 時,一種穩健的方法是首先使用 XSLT(可擴展樣式表語言轉換)將 XML 轉換為 HTML。 IronPDF 然後可以將生成的 HTML 轉換為 PDF。 這對於以人類可讀的格式呈現結構化的 XML 數據非常有用。
using IronPdf;
using System.Xml;
using System.Xml.Xsl;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
string xsltContent = @"<xsl:stylesheet version='1.0' xmlns:xsl='[http://www.w3.org/1999/XSL/Transform](http://www.w3.org/1999/XSL/Transform)'>
<xsl:template match='/root'>
<html><body><h1>Items:</h1><ul><xsl:for-each select='item'><li><xsl:value-of select='.'/></li></xsl:for-each></ul></body></html>
</xsl:template>
</xsl:stylesheet>";
string xmlContent = "<root><item>Hello</item><item>World</item></root>";
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(xsltContent))) {
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(xmlContent))) {
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("Final.pdf");
using IronPdf;
using System.Xml;
using System.Xml.Xsl;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
string xsltContent = @"<xsl:stylesheet version='1.0' xmlns:xsl='[http://www.w3.org/1999/XSL/Transform](http://www.w3.org/1999/XSL/Transform)'>
<xsl:template match='/root'>
<html><body><h1>Items:</h1><ul><xsl:for-each select='item'><li><xsl:value-of select='.'/></li></xsl:for-each></ul></body></html>
</xsl:template>
</xsl:stylesheet>";
string xmlContent = "<root><item>Hello</item><item>World</item></root>";
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(xsltContent))) {
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(xmlContent))) {
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("Final.pdf");
Imports IronPdf
Imports System.Xml
Imports System.Xml.Xsl
Imports System.IO
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim xsltContent As String = "<xsl:stylesheet version='1.0' xmlns:xsl='[http://www.w3.org/1999/XSL/Transform](http://www.w3.org/1999/XSL/Transform)'>
<xsl:template match='/root'>
<html><body><h1>Items:</h1><ul><xsl:for-each select='item'><li><xsl:value-of select='.'/></li></xsl:for-each></ul></body></html>
</xsl:template>
</xsl:stylesheet>"
Dim xmlContent As String = "<root><item>Hello</item><item>World</item></root>"
Dim transform As New XslCompiledTransform()
Using reader As XmlReader = XmlReader.Create(New StringReader(xsltContent))
transform.Load(reader)
End Using
Dim results As New StringWriter()
Using reader As XmlReader = XmlReader.Create(New StringReader(xmlContent))
transform.Transform(reader, Nothing, results)
End Using
Dim Renderer As New IronPdf.ChromePdfRenderer()
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("Final.pdf")
此程式碼片段定義了一個XSLT,用於將XML轉換成簡單的HTML列表。XslCompiledTransform
執行轉換,然後由IronPDF將生成的HTML字串呈現為'Final.pdf'。
要在 C# 中建立 PDF 報表,特別是那些具有自訂頁首、頁尾和頁碼的報表,IronPDF 是非常有效的。典型的工作流程是將報表資料生成為 HTML 文件,然後使用 IronPDF 將此 HTML 轉換為格式良好的 PDF。
using IronPdf;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.FirstPageNumber = 1;
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
Renderer.RenderingOptions.TextHeader.FontFamily = "Arial";
Renderer.RenderingOptions.TextHeader.FontSize = 12;
Renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
Renderer.RenderingOptions.TextFooter.FontFamily = "Helvetica";
Renderer.RenderingOptions.TextFooter.FontSize = 10;
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
File.WriteAllText("Report.html", "<html><body><h1>Sample Report Content</h1><p>This is a test report.</p></body></html>");
Renderer.RenderHtmlFileAsPdf("Report.html").SaveAs("Report.pdf");
using IronPdf;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.FirstPageNumber = 1;
Renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
Renderer.RenderingOptions.TextHeader.FontFamily = "Arial";
Renderer.RenderingOptions.TextHeader.FontSize = 12;
Renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
Renderer.RenderingOptions.TextFooter.FontFamily = "Helvetica";
Renderer.RenderingOptions.TextFooter.FontSize = 10;
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
File.WriteAllText("Report.html", "<html><body><h1>Sample Report Content</h1><p>This is a test report.</p></body></html>");
Renderer.RenderHtmlFileAsPdf("Report.html").SaveAs("Report.pdf");
Imports IronPdf
Imports System.IO
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim Renderer As New IronPdf.ChromePdfRenderer()
Renderer.RenderingOptions.FirstPageNumber = 1
Renderer.RenderingOptions.TextHeader.DrawDividerLine = True
Renderer.RenderingOptions.TextHeader.CenterText = "{url}"
Renderer.RenderingOptions.TextHeader.FontFamily = "Arial"
Renderer.RenderingOptions.TextHeader.FontSize = 12
Renderer.RenderingOptions.TextFooter.DrawDividerLine = True
Renderer.RenderingOptions.TextFooter.FontFamily = "Helvetica"
Renderer.RenderingOptions.TextFooter.FontSize = 10
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
File.WriteAllText("Report.html", "<html><body><h1>Sample Report Content</h1><p>This is a test report.</p></body></html>")
Renderer.RenderHtmlFileAsPdf("Report.html").SaveAs("Report.pdf")
此範例為標頭(顯示來源 URL)和頁腳(包含日期、時間和頁碼)配置各種RenderingOptions
。 然後將名為「Report.html」的 HTML 檔案轉換為「Report.pdf」,並完成這些設定。
CSharp 創建 PDF 範例輸出
當您使用 C# 從包含圖像和外部 CSS 文件的 HTML 創建 PDF 文檔時,確保 IronPDF 能夠找到這些資源是至關重要的。 這是通過向渲染方法提供一個BaseUri
來實現的,這告訴IronPDF您的HTML中相對URL的根路徑。
using IronPdf;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'><h1>Image Test</h1>",@"C:\site\assets\");
pdf.SaveAs("html-with-assets.pdf");
using var advancedPDF = renderer.RenderHtmlFileAsPdf("C:\\Assets\\TestInvoice1.html");
advancedPDF.SaveAs("Invoice.pdf");
using IronPdf;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'><h1>Image Test</h1>",@"C:\site\assets\");
pdf.SaveAs("html-with-assets.pdf");
using var advancedPDF = renderer.RenderHtmlFileAsPdf("C:\\Assets\\TestInvoice1.html");
advancedPDF.SaveAs("Invoice.pdf");
Imports IronPdf
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'><h1>Image Test</h1>","C:\site\assets\")
pdf.SaveAs("html-with-assets.pdf")
Dim advancedPDF = renderer.RenderHtmlFileAsPdf("C:\Assets\TestInvoice1.html")
advancedPDF.SaveAs("Invoice.pdf")
第一部分展示了使用圖片呈現一個 HTML 字串; BaseUri
(C:\site\assets
)告訴 IronPDF 在哪裡尋找 icons/iron.png
。 第二部分會渲染一個 HTML 文件;如果 TestInvoice1.html
使用相對路徑來存取其資產,它們將相對於 C:\Assets
來解決。
對於傳統的 ASP.NET Web Forms 應用程式,IronPDF 提供了一種方法,可以直接從 .aspx
頁面使用 C# 建立 PDF。 這需要 IronPdf.Extensions.ASPX
NuGet 套件,並且特定於 .NET Framework 項目。
using System;
using System.Web.UI;
using IronPdf;
namespace aspxtopdf
{
public partial class SiteMaster : MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
}
}
using System;
using System.Web.UI;
using IronPdf;
namespace aspxtopdf
{
public partial class SiteMaster : MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
}
}
Imports System
Imports System.Web.UI
Imports IronPdf
Namespace aspxtopdf
Partial Public Class SiteMaster
Inherits MasterPage
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
End Class
End Namespace
在 ASP.NET 主版頁或任何 .aspx
頁面的 Page_Load
事件中,AspxToPdf.RenderThisPageAsPdf()
將當前頁面的輸出渲染為 PDF。 這通常更適合放在按鈕點擊事件中,以避免回傳問題。
CSharp 創建 PDF 範例輸出
這個例子重新探討將實時URL轉換為PDF,這是在需要使用C#創建網頁內容的pdf存檔或共享在線信息快照時的一個常見需求。
using IronPdf;
using System;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var uri = new Uri("https://www.c-sharpcorner.com/article/how-to-create-pdf-file-in-c-sharp-using-ironpdf/");
var pdf = ChromePdfRenderer.StaticRenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
using IronPdf;
using System;
using System.IO;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var uri = new Uri("https://www.c-sharpcorner.com/article/how-to-create-pdf-file-in-c-sharp-using-ironpdf/");
var pdf = ChromePdfRenderer.StaticRenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
Imports IronPdf
Imports System
Imports System.IO
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim uri As New Uri("https://www.c-sharpcorner.com/article/how-to-create-pdf-file-in-c-sharp-using-ironpdf/")
Dim pdf = ChromePdfRenderer.StaticRenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
在這裡,ChromePdfRenderer.StaticRenderUrlAsPdf()
提供了一個快速的靜態方法,可以將給定 Uri
的內容直接轉換為 PdfDocument
,然後保存。 PDF 檔案在 Debug 資料夾中建立。 這是輸出:
CSharp 創建 PDF 範例輸出
快速入門指南解釋了如何通過 NuGet 安裝 IronPDF(適用於那些不熟悉 NuGet 包管理器的人)。
此範例進一步說明如何在 ASP.NET Web Forms 中使用 IronPDF 來建立 PDF 文件,具體來說是通過按鈕點擊將當前頁面呈現為 PDF。 這是一個產生可下載 PDF 版本的網頁表單或報告的典型情況。
using System;
using System.Web.UI;
using IronPdf;
namespace aspxtopdf
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
}
}
using System;
using System.Web.UI;
using IronPdf;
namespace aspxtopdf
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
}
}
Imports System
Imports System.Web.UI
Imports IronPdf
Namespace aspxtopdf
Partial Public Class _Default
Inherits Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
End Class
End Namespace
當Button1
被點擊時,AspxToPdf.RenderThisPageAsPdf()
捕獲當前ASP.NET頁面的渲染輸出,並將其作為PDF流式傳輸到瀏覽器。 請記住,這需要 IronPdf.Extensions.ASPX
NuGet 套件。
CSharp 創建 PDF 範例輸出
這需要從NuGet 官方頁面安裝IronPdf.Extensions.ASPX
。 在 .NET Core 中不可用,因為 ASPX 已被 MVC 模型取代。
這裡有另一個快速範例,從 HTML 字串創建 PDF。 這對於非常簡單的 PDF 生成需求很有用,其中的 HTML 內容是最小的或是即時構建的。
using IronPdf;
private void HTMLString()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
var outputPath = "ChromePdfRenderer.pdf";
pdf.SaveAs(outputPath);
}
using IronPdf;
private void HTMLString()
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new IronPdf.ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
var outputPath = "ChromePdfRenderer.pdf";
pdf.SaveAs(outputPath);
}
Imports IronPdf
Private Sub HTMLString()
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New IronPdf.ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>")
Dim outputPath = "ChromePdfRenderer.pdf"
pdf.SaveAs(outputPath)
End Sub
這個私有方法演示了如何從一個簡單的 H1 標籤創建 PDF 並保存它。
以下代碼顯示如何在Page_Load
事件中直接從ASPX頁面創建PDF。 雖然可以,但由於可能出現頁面生命週期事件和回傳問題,應謹慎使用此方法; 通常,從特定的使用者操作(例如按鈕點擊)觸發 PDF 生成更為可靠。
using System;
using System.Web.UI;
using IronPdf;
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
using System;
using System.Web.UI;
using IronPdf;
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
Imports System
Imports System.Web.UI
Imports IronPdf
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
IronPDF 通過 Chromium 渲染引擎很好地支持 JavaScript。不過,有一點需要注意,您可能需要在頁面渲染中添加延遲,以便在生成 PDF 時讓 JavaScript 有時間執行。
IronPDF 可以輕鬆整合到 Windows Forms(WinForms)桌面應用程式中以建立 PDF。 此範例顯示如何從TextBox
取得使用者輸入並在按下Button
時生成PDF。
using IronPdf;
using System.Windows.Forms;
using System;
using System.ComponentModel;
using System.Drawing;
namespace ReadPdf
{
public partial class Form1 : Form
{
private TextBox textBox1;
private Button button1;
private IContainer components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
this.textBox1.Location = new System.Drawing.Point(12, 12);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(260, 20);
this.textBox1.TabIndex = 0;
this.button1.Location = new System.Drawing.Point(12, 38);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(100, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Create PDF";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 73);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "PDF Creator";
this.ResumeLayout(false);
this.PerformLayout();
}
private void button1_Click(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
string text = textBox1.Text;
renderer.RenderHtmlAsPdf("<h1>"+ System.Net.WebUtility.HtmlEncode(text) +"</h1>").SaveAs("custom.pdf");
MessageBox.Show("Done !");
}
}
}
using IronPdf;
using System.Windows.Forms;
using System;
using System.ComponentModel;
using System.Drawing;
namespace ReadPdf
{
public partial class Form1 : Form
{
private TextBox textBox1;
private Button button1;
private IContainer components = null;
public Form1()
{
InitializeComponent();
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
this.textBox1.Location = new System.Drawing.Point(12, 12);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(260, 20);
this.textBox1.TabIndex = 0;
this.button1.Location = new System.Drawing.Point(12, 38);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(100, 23);
this.button1.TabIndex = 1;
this.button1.Text = "Create PDF";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 73);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "PDF Creator";
this.ResumeLayout(false);
this.PerformLayout();
}
private void button1_Click(object sender, EventArgs e)
{
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
string text = textBox1.Text;
renderer.RenderHtmlAsPdf("<h1>"+ System.Net.WebUtility.HtmlEncode(text) +"</h1>").SaveAs("custom.pdf");
MessageBox.Show("Done !");
}
}
}
Imports IronPdf
Imports System.Windows.Forms
Imports System
Imports System.ComponentModel
Imports System.Drawing
Namespace ReadPdf
Partial Public Class Form1
Inherits Form
Private textBox1 As TextBox
Private WithEvents button1 As Button
Private components As IContainer = Nothing
Public Sub New()
InitializeComponent()
End Sub
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso (components IsNot Nothing) Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
Private Sub InitializeComponent()
Me.textBox1 = New System.Windows.Forms.TextBox()
Me.button1 = New System.Windows.Forms.Button()
Me.SuspendLayout()
Me.textBox1.Location = New System.Drawing.Point(12, 12)
Me.textBox1.Name = "textBox1"
Me.textBox1.Size = New System.Drawing.Size(260, 20)
Me.textBox1.TabIndex = 0
Me.button1.Location = New System.Drawing.Point(12, 38)
Me.button1.Name = "button1"
Me.button1.Size = New System.Drawing.Size(100, 23)
Me.button1.TabIndex = 1
Me.button1.Text = "Create PDF"
Me.button1.UseVisualStyleBackColor = True
'INSTANT VB NOTE: The following InitializeComponent event wireup was converted to a 'Handles' clause:
'ORIGINAL LINE: this.button1.Click += new System.EventHandler(this.button1_Click);
Me.AutoScaleDimensions = New System.Drawing.SizeF(6F, 13F)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(284, 73)
Me.Controls.Add(Me.button1)
Me.Controls.Add(Me.textBox1)
Me.Name = "Form1"
Me.Text = "PDF Creator"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New ChromePdfRenderer()
'INSTANT VB NOTE: The variable text was renamed since Visual Basic does not handle local variables named the same as class members well:
Dim text_Conflict As String = textBox1.Text
renderer.RenderHtmlAsPdf("<h1>" & System.Net.WebUtility.HtmlEncode(text_Conflict) &"</h1>").SaveAs("custom.pdf")
MessageBox.Show("Done !")
End Sub
End Class
End Namespace
此 WinForms 代碼使用 TextBox
和 Button
初始化一個簡單的使用者介面。 按下按鈕時,它會從textBox1
中取出文本,將其包裹在 H1 HTML 標籤內(為了安全起見確保對用戶輸入進行 HTML 編碼),並將其渲染到「custom.pdf」中。
IronPDF 的 Chrome PDF 渲染引擎保證從原始 HTML 源生成的 PDF 文件具有「Chrome 相同」的 PDF 渲染效果。
Chrome PDF 渲染功能的一些特點是:
持續維護和改進對 .NET 6、5、Core 和 Framework 4.0+ 的全面支持。
這是一個例子:
using IronPdf;
using IronPdf.Rendering;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
using var doc = renderer.RenderHtmlAsPdf("<h1>Hello world! This is sample for IronPdf</h1>");
doc.SaveAs("google_chrome.pdf");
using IronPdf;
using IronPdf.Rendering;
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen;
renderer.RenderingOptions.PrintHtmlBackgrounds = true;
renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
using var doc = renderer.RenderHtmlAsPdf("<h1>Hello world! This is sample for IronPdf</h1>");
doc.SaveAs("google_chrome.pdf");
Imports IronPdf
Imports IronPdf.Rendering
IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Screen
renderer.RenderingOptions.PrintHtmlBackgrounds = True
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
Dim doc = renderer.RenderHtmlAsPdf("<h1>Hello world! This is sample for IronPdf</h1>")
doc.SaveAs("google_chrome.pdf")
雖然有其他 PDF 庫可供選擇,但 IronPDF 提供了數個引人注目的優勢,特別是針對專注於高效且高品質的 PDF 生成的開發人員:
很多開發人員發現 IronPDF 是最簡單的方法之一,因為它的 RenderHtmlAsPdf
方法簡單且對 HTML 標準有強大的支持。 您可以只需幾行程式碼就從 HTML 字串或 URL 建立 PDF 檔。
IronPDF 提供開發和測試的免費授權。 生產部署需要商業許可證。 他們提供試用期以評估所有功能。
A:是的,IronPDF 使用現代化的 Chromium 引擎,提供對 HTML5、CSS3、JavaScript、響應式佈局及其他網頁技術的優良支援,確保在您創建 pdf 文件時的精確呈現。
是的,IronPDF 專為效能而設計,能有效地建立相當大尺寸的 PDF 文件。其渲染引擎和非同步操作選項使其適合用於要求嚴格的應用程式。
感謝閱讀! 本綜合教程已向您展示了幾種使用IronPDF在.NET中創建PDF文檔的強大方法。 無論您需要將 HTML 轉換為 PDF、渲染 URL 或生成複雜的報告,IronPDF 都提供了一個直觀且強大的解決方案。 它的易用性再加上進階功能,如 JavaScript、CSS 和圖像支援,使其成為開發者尋求高效生成高質量 PDF 文件的理想選擇。
準備好簡化您的 PDF 生成並掌控您的文檔工作流程了嗎?
有問題嗎? 聯繫我們的專家支援團隊或查看我們的社群資源。
如果您購買完整的Iron Suite,您將以顯著的折扣獲得所有 10 款 Iron Software .NET 產品(相當於兩個 Lite 授權的費用)。