在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
在现代 C# .NET 开发中,生成 PDF 文档是一项常见且至关重要的需求,无论是用于开具发票、创建详细报告、存档网页内容还是确保文档共享安全。 开发人员通常会探索各种方法在 .NET 应用程序中生成 PDF,包括使用像 iTextSharp(现在的 iText 7)、PdfSharp、QuestPDF 这样知名的库,或利用内置的 .NET 功能来处理简单任务。 一些人还考虑集成第三方基于云的API或命令行工具,如wkhtmltopdf。
虽然这些多样化的选项存在,但找到一个完美平衡易用性、全面功能、先进渲染能力和强大性能的C# PDF库对于高效开发至关重要。 这正是IronPDF与众不同的地方,它为C#开发人员提供了一个强大而又极为直观的解决方案。 本教程将指导您使用IronPDF在C# .NET中创建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 内容转换成没有 HTML 标记的 PDF。 IronPDF 提供了功能,例如从 HTML 在 C# 中创建 PDF,因为它使用方便,并且具有使用 JavaScript、CSS 和图像等附加功能。
本文将详细介绍 IronPDF 提供的 HTML 到 PDF 的 C# 转换。
在开始编写代码之前,让我们考虑为什么您可能需要在C#中创建PDF:
生成票据、代金券或证书:创建具有独特动态生成内容的可打印文档。 IronPDF 将 HTML 转换为 PDF 的能力非常适合此类文档的模板化。
IronPDF为所有这些用例及更多提供有效的解决方案。
打开 Visual Studio 软件,进入 "文件 "菜单。 选择“新建项目”,然后选择“控制台应用程序”。 本文将使用控制台应用程序生成 PDF 文档。
在Visual Studio中创建新项目
在相应的文本框中输入项目名称并选择路径。 然后,点击下一步按钮。
配置此项目
选择所需的 .NET Framework,然后单击下面所示的“创建”按钮:
.NET Framework 选择
Visual Studio 项目现在将为选定的应用程序生成结构,如果您选择了控制台、Windows 或 Web 应用程序,它将打开 program.cs
文件,您可以在其中输入代码并构建/运行应用程序。
下一步是添加库和测试程序。
Visual Studio 软件提供了 NuGet 软件包管理器选项,可直接将软件包安装到解决方案中。 下面的截图显示了如何打开 NuGet 包管理器。
如前所述,IronPDF 提供免费的开发和测试许可证。
导航到NuGet包管理器
它提供了搜索框,显示 NuGet 网站上可用的软件包库列表。在软件包管理器中,搜索关键词 "IronPdf",如下截图所示:
从 NuGet 软件包管理器安装 IronPDF 软件包
从上图中,从相关 NuGet 软件包列表中选择 IronPdf 选项,并安装该解决方案的软件包。
--LIBRARY_NUGET_INSTALL_BLOCK--
在 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
。 然后,我们调用RenderHtmlAsPdf()
,使用一个基本的HTML字符串。 最后,doc.SaveAs()
将生成的 PDF 保存为 'FirstPDFDocument.pdf'。 此文件将包含呈现的 H1 标签。 执行 C# 项目后,在项目的 bin 文件夹中会出现一个名为 "FirstPDFDocument.pdf "的文件,双击上述文件,PDF 文件就会在浏览器标签页中打开。 使用 IronPDF,用 C# 创建 PDF 文件或创建将 HTML 转换为 PDF 的 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文件转换为PDF。然后使用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
、视图名称和模型转换为HTML字符串来渲染Razor视图。 然后,这个字符串可以传递给 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
执行转换,生成的HTML字符串随后由IronPDF渲染为‘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
页面生成PDF的C#方法。 这需要 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。 这是一种典型的为Web表单或报告生成可下载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
。 由于 ASPX 已被 MVC 模型取代,因此在 .NET Core 中无法使用。
这是一个从HTML字符串创建PDF的快速示例。 这在 HTML 内容较少或是动态生成的情况下,对于非常简单的 PDF 生成需求很有用。
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
通过 Chromium 渲染引擎,IronPDF 可以很好地支持 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文档。其渲染引擎和异步操作选项使其适合于高要求的应用程序。
感谢阅读! 本教程全面展示了在 .NET 中使用 IronPDF 创建 PDF 文档的几种强大方法。 无论您是需要将HTML转换为PDF、渲染URL,还是生成复杂报告,IronPDF都提供了一种直观且强大的解决方案。 其易用性,加上像JavaScript、CSS和图像支持这样的高级功能,使其成为开发人员高效制作高质量PDF文档的理想选择。
准备简化您的PDF生成并控制您的文档工作流程吗?
有问题吗? 联系我们的专家支持团队或查看我们的社区资源。
如果您购买完整的Iron Suite,您将以显著的折扣(相当于两个Lite许可证的费用)获得所有10个Iron Software .NET产品。