在ASP.NET中使用C#实现HTML转PDF报告生成
IronPDF for .NET 通过将 HTML 内容渲染为 PDF 文档,使 .NET 开发人员能够从 HTML、Crystal Reports、XML 和 SQL Server 数据生成 PDF 报告。 该 C# 库只需几行代码即可简化 ASP.NET 应用程序中的报表创建,并保留所有格式和样式。
快速入门:使用IronPDF实现HTML转PDF报告
仅需几行代码即可使用 IronPDF 开始生成 PDF 报告。 这份简明指南使开发人员能够立即将 HTML 内容转换为专业的 PDF 文档,并轻松保留所有格式。 请参阅下面的示例,了解如何简单地将您的数据转换为精美的 PDF 报告。
最小工作流程(5 个步骤)
- 下载并安装 IronPDF C# PDF 报告库。
- 将报告生成 HTML 文档并渲染为 PDF 文件
- 使用以下方法导出 Crystal Reports:文件 → 导出 → HTML 4.0
- 通过解析 XML 并利用数据生成 HTML 来设计 XML 报告样式
- 对 PDF 进行数字签名,确保报告未被篡改
步骤1
如何安装 IronPdf?
Install-Package IronPdf
您也可以手动下载 IronPDF DLL。 有关高级安装方案,请查看我们全面的 NuGet 软件包指南,其中涵盖了 Azure、AWS、Linux、Mac 和 Windows 平台的配置。 如果您正在使用容器化应用程序,我们的Docker集成指南提供了详细的设置说明。
如何使用教程
创建 PDF 报告的方法是什么?
首先将报告生成 HTML 文档,然后使用 IronPDF 将 HTML 呈现为 PDF。 本教程向您展示了在 ASP.NET C# 中创建 PDF 报告的步骤。 IronPDF 的Chrome 渲染引擎可确保像素级完美转换,同时支持现代 HTML5、CSS3 和 JavaScript。
:path=/static-assets/pdf/content-code-examples/how-to/csharp-pdf-reports-render-html-file.cs
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");
Imports IronPdf
Private renderer As New ChromePdfRenderer()
renderer.RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf")
对于更复杂的报告需求,请浏览我们的综合 PDF 创建教程,其中包括水印、压缩、背景、页眉、页脚、表单和密码保护。
如何使用 .NET 将 Crystal Reports 转换为 PDF?
使用以下工具将 Crystal Reports 导出为 HTML
文件 → 导出 → HTML 4.0
然后可以使用方法论部分中上述的 C# 示例代码将生成的报告导出为 PDF。 IronPDF 为 将 HTML 文件转换为 PDF 提供了出色的支持,保持了 Crystal Reports 输出中的所有格式和样式。
下面是一个例子:
:path=/static-assets/pdf/content-code-examples/how-to/csharp-pdf-reports-render-header-footer.cs
using IronPdf;
using IronSoftware.Drawing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Add a header to very page easily
renderer.RenderingOptions.FirstPageNumber = 1;
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
renderer.RenderingOptions.TextHeader.CenterText = "{url}";
renderer.RenderingOptions.TextHeader.Font = FontTypes.Arial;
renderer.RenderingOptions.TextHeader.FontSize = 12;
// Add a footer too
renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
renderer.RenderingOptions.TextFooter.Font = FontTypes.Arial;
renderer.RenderingOptions.TextFooter.FontSize = 10;
renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
renderer.RenderHtmlFileAsPdf(@"c:\my\exported\report.html").SaveAs("report.pdf");
Imports IronPdf
Imports IronSoftware.Drawing
Private renderer As New ChromePdfRenderer()
' Add a header to very page easily
renderer.RenderingOptions.FirstPageNumber = 1
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.CenterText = "{url}"
renderer.RenderingOptions.TextHeader.Font = FontTypes.Arial
renderer.RenderingOptions.TextHeader.FontSize = 12
' Add a footer too
renderer.RenderingOptions.TextFooter.DrawDividerLine = True
renderer.RenderingOptions.TextFooter.Font = FontTypes.Arial
renderer.RenderingOptions.TextFooter.FontSize = 10
renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
renderer.RenderHtmlFileAsPdf("c:\my\exported\report.html").SaveAs("report.pdf")
有关高级页眉和页脚定制,包括基于 HTML 的页眉,请访问我们的页眉和页脚指南。
如何以编程方式将 Crystal Reports 转换为 PDF?
如果您希望通过编程方式从 Crystal Reports (RPT) 文件创建 PDF,这也是可能的,可以为您提供更大的控制。 这种方法可与 IronPDF 的渲染选项无缝集成,实现完全定制。
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.IO;
using IronPdf;
public static void ExportRptToPdf(string rptPath, string pdfOutputPath)
{
// Load the Crystal Report
ReportDocument rpt = new ReportDocument();
rpt.Load(rptPath);
// Configure export options for HTML output
DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions()
{
DiskFileName = @"c:\tmp\html\b.html" // Temporary HTML file
};
ExportOptions exportOpts = ExportOptions.CreateExportOptions();
exportOpts.ExportDestinationType = ExportDestinationType.DiskFile;
exportOpts.ExportFormatType = ExportFormatType.HTML40; // Export as HTML 4.0
exportOpts.ExportDestinationOptions = diskOpts;
// Export report to HTML
rpt.Export();
// Convert HTML to PDF using IronPDF
var Renderer = new ChromePdfRenderer();
// Add dynamic header with URL
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
// Add footer with timestamp and page numbers
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
// Render the HTML file to PDF and save
Renderer.RenderFileAsPdf(diskOpts.DiskFileName).SaveAs(pdfOutputPath);
Console.WriteLine("Report Written To {0}", Path.GetFullPath(pdfOutputPath));
}
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.IO;
using IronPdf;
public static void ExportRptToPdf(string rptPath, string pdfOutputPath)
{
// Load the Crystal Report
ReportDocument rpt = new ReportDocument();
rpt.Load(rptPath);
// Configure export options for HTML output
DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions()
{
DiskFileName = @"c:\tmp\html\b.html" // Temporary HTML file
};
ExportOptions exportOpts = ExportOptions.CreateExportOptions();
exportOpts.ExportDestinationType = ExportDestinationType.DiskFile;
exportOpts.ExportFormatType = ExportFormatType.HTML40; // Export as HTML 4.0
exportOpts.ExportDestinationOptions = diskOpts;
// Export report to HTML
rpt.Export();
// Convert HTML to PDF using IronPDF
var Renderer = new ChromePdfRenderer();
// Add dynamic header with URL
Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
// Add footer with timestamp and page numbers
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
// Render the HTML file to PDF and save
Renderer.RenderFileAsPdf(diskOpts.DiskFileName).SaveAs(pdfOutputPath);
Console.WriteLine("Report Written To {0}", Path.GetFullPath(pdfOutputPath));
}
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.IO
Imports IronPdf
Public Sub ExportRptToPdf(rptPath As String, pdfOutputPath As String)
' Load the Crystal Report
Dim rpt As New ReportDocument()
rpt.Load(rptPath)
' Configure export options for HTML output
Dim diskOpts As New DiskFileDestinationOptions() With {
.DiskFileName = "c:\tmp\html\b.html" ' Temporary HTML file
}
Dim exportOpts As ExportOptions = ExportOptions.CreateExportOptions()
exportOpts.ExportDestinationType = ExportDestinationType.DiskFile
exportOpts.ExportFormatType = ExportFormatType.HTML40 ' Export as HTML 4.0
exportOpts.ExportDestinationOptions = diskOpts
' Export report to HTML
rpt.Export()
' Convert HTML to PDF using IronPDF
Dim Renderer As New ChromePdfRenderer()
' Add dynamic header with URL
Renderer.RenderingOptions.TextHeader.CenterText = "{url}"
' Add footer with timestamp and page numbers
Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
' Render the HTML file to PDF and save
Renderer.RenderFileAsPdf(diskOpts.DiskFileName).SaveAs(pdfOutputPath)
Console.WriteLine("Report Written To {0}", Path.GetFullPath(pdfOutputPath))
End Sub
如何从 XML 生成 PDF 报告?
尽管 JSON 等更易于编码的格式已经普及,但以 XML 格式导出报告数据仍然很常见。 IronPdf 为 XML 到 PDF 的转换提供了出色的支持,提供了多种处理 XML 数据的方法。
为 XML 报告设计样式,解析 XML 并将数据生成 HTML。
更优雅的解决方案是使用 XSLT 将 XML 直接转换为 HTML,使用 XslCompiledTransform 类,如文章"使用 XslCompiledTransform 类"中所述。
然后可以使用 IronPDF 将生成的 HTML 字符串或文件呈现为 PDF:
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using IronPdf;
public static void ConvertXmlToPdf(string xml, string xslt, string pdfOutputPath)
{
// Initialize XSLT transformation
XslCompiledTransform transform = new XslCompiledTransform();
using (XmlReader reader = XmlReader.Create(new StringReader(xslt)))
{
transform.Load(reader); // Load XSLT stylesheet
}
// Transform XML to HTML
StringWriter results = new StringWriter();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
transform.Transform(reader, null, results); // Apply transformation
}
// Convert the generated HTML to PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf(results.ToString()).SaveAs(pdfOutputPath);
}
using System.IO;
using System.Xml;
using System.Xml.Xsl;
using IronPdf;
public static void ConvertXmlToPdf(string xml, string xslt, string pdfOutputPath)
{
// Initialize XSLT transformation
XslCompiledTransform transform = new XslCompiledTransform();
using (XmlReader reader = XmlReader.Create(new StringReader(xslt)))
{
transform.Load(reader); // Load XSLT stylesheet
}
// Transform XML to HTML
StringWriter results = new StringWriter();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
transform.Transform(reader, null, results); // Apply transformation
}
// Convert the generated HTML to PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderHtmlAsPdf(results.ToString()).SaveAs(pdfOutputPath);
}
Imports System.IO
Imports System.Xml
Imports System.Xml.Xsl
Imports IronPdf
Public Shared Sub ConvertXmlToPdf(xml As String, xslt As String, pdfOutputPath As String)
' Initialize XSLT transformation
Dim transform As New XslCompiledTransform()
Using reader As XmlReader = XmlReader.Create(New StringReader(xslt))
transform.Load(reader) ' Load XSLT stylesheet
End Using
' Transform XML to HTML
Dim results As New StringWriter()
Using reader As XmlReader = XmlReader.Create(New StringReader(xml))
transform.Transform(reader, Nothing, results) ' Apply transformation
End Using
' Convert the generated HTML to PDF
Dim renderer As New ChromePdfRenderer()
renderer.RenderHtmlAsPdf(results.ToString()).SaveAs(pdfOutputPath)
End Sub
请访问在 C# 和 VB.NET 中将 XML 转换为 PDF 的文章,了解有关高级 XML 转换技术和最佳实践的更多信息。
如何将 SQL Server 报表导出为 PDF?
微软的 SQL 服务器和免费的 SQL 服务器 Express 包含报告工具。 将 SSRS 报告导出为 ASP.NET 中的 PDF 是 IronPDF 的一个有用用途。 对于复杂的数据可视化需求,IronPDF 支持 渲染 JavaScript 图表,包括 C3.js、D3.js 和 Highcharts 等流行库。
这些报告可以生成为 HTML,然后可以定制,并使用 IronPDF 转换为 PDF 格式。 IronPdf 的 HTML 字符串到 PDF 的转换功能可完全控制最终输出。
对于需要安全数据访问的企业环境,IronPDF 支持 TLS 网站和系统登录,以处理经过验证的报告生成。
如何确保 PDF 报告的安全?
为确保 PDF 报告未经修改或篡改,请对其进行数字签名。 这最容易在 PDF 报告文件被渲染然后保存到磁盘后实现。 IronPDF 提供全面的PDF 签名功能,包括支持硬件安全模块 (HSM)。
:path=/static-assets/pdf/content-code-examples/how-to/csharp-pdf-reports-sign-pdf.cs
using IronPdf.Signing;
// Sign our PDF Report using a p12 or pix digital certificate file
new PdfSignature("IronSoftware.pfx", "123456").SignPdfFile("signed.pdf");
Imports IronPdf.Signing
' Sign our PDF Report using a p12 or pix digital certificate file
Call (New PdfSignature("IronSoftware.pfx", "123456")).SignPdfFile("signed.pdf")
如果您没有数字签名,可以使用免费的 Adobe Acrobat Reader 在 macOS 和 Windows 上创建新的数字签名文件。 有关其他安全措施,请浏览我们的IronPDF权限和密码指南,以控制文档访问和编辑权限。
如何使用 ASP.NET Webforms 将 ASPX 转换为 PDF?
在ASP.NET中提供 HTML 内容的最简单方法是在ASP.NET WebForms 应用程序的 Form_Load 事件中使用 IronPdf.AspxToPdf 类。 这项强大的功能可让您将整个 ASPX 页面(包括服务器端控件和动态内容)直接转换为 PDF。
using IronPdf;
public static void RenderAspxToPdf()
{
// Configure PDF rendering options
var AspxToPdfOptions = new ChromePdfRenderOptions()
{
EnableJavaScript = false, // Disable JavaScript for simpler reports
PrintHtmlBackgrounds = true, // Include background colors and images
MarginTop = 20, // Set top margin in mm
MarginBottom = 20, // Set bottom margin in mm
PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait,
PaperSize = IronPdf.Rendering.PdfPaperSize.A4
// ...many more options available
};
// Render the HTML page to PDF and prompt download
<code>AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions)</code>;
}
using IronPdf;
public static void RenderAspxToPdf()
{
// Configure PDF rendering options
var AspxToPdfOptions = new ChromePdfRenderOptions()
{
EnableJavaScript = false, // Disable JavaScript for simpler reports
PrintHtmlBackgrounds = true, // Include background colors and images
MarginTop = 20, // Set top margin in mm
MarginBottom = 20, // Set bottom margin in mm
PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait,
PaperSize = IronPdf.Rendering.PdfPaperSize.A4
// ...many more options available
};
// Render the HTML page to PDF and prompt download
<code>AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions)</code>;
}
Imports IronPdf
Public Module PdfRenderer
Public Sub RenderAspxToPdf()
' Configure PDF rendering options
Dim AspxToPdfOptions As New ChromePdfRenderOptions() With {
.EnableJavaScript = False, ' Disable JavaScript for simpler reports
.PrintHtmlBackgrounds = True, ' Include background colors and images
.MarginTop = 20, ' Set top margin in mm
.MarginBottom = 20, ' Set bottom margin in mm
.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait,
.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
' ...many more options available
}
' Render the HTML page to PDF and prompt download
AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions)
End Sub
End Module
我们希望这篇文章已帮助您学习如何在 ASP.NET C# 或 VB.NET 中生成 PDF 报告。 您还可以查看我们完整的ASP.NET ASPX 转 PDF 教程,了解更多高级应用场景,包括 ASPX 页面转 PDF 设置和处理复杂布局。
常见问题解答
如何用 C# 从 HTML 生成 PDF 报告?
IronPDF 使您只需一行代码就能从 HTML 生成 PDF 报告:new IronPDF.ChromePdfRenderer().RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf").这将在最终 PDF 文档中保留所有 HTML 格式和样式。
哪些类型的报告可以转换为 PDF?
IronPDF 支持将多种报告类型转换为 PDF,包括 HTML 报告、Crystal 报告(导出为 HTML 4.0)、XML 报告(采用 HTML 风格)和 SQL Server 数据报告。该库使用 Chrome 渲染引擎,以确保像素级的完美转换。
如何安装 PDF 报告生成器库?
您可以使用 "Install-Package IronPDF "命令通过 NuGet 包管理器安装 IronPDF,也可以手动下载 DLL。该库支持各种平台,包括 Azure、AWS、Linux、Mac、Windows 和 Docker 容器。
我可以在 .NET 中将 Crystal Reports 转换为 PDF 吗?
是的,您可以使用 IronPDF 将 Crystal Reports 转换为 PDF,方法是首先将 Crystal Report 导出为 HTML 4.0 格式(文件 → 导出 → HTML 4.0),然后使用 IronPDF 的 RenderHtmlFileAsPdf 方法将 HTML 输出转换为 PDF 文档。
如何从 SQL Server 数据创建 PDF 报告?
要从 SQL Server 数据创建 PDF 报告,首先用数据生成 HTML 报告,然后使用 IronPDF 的 ChromePdfRenderer 将 HTML 转换为 PDF。该库保留了所有格式,因此非常适合数据库驱动的报告。
我可以对 PDF 报告进行数字签名吗?
是的,IronPDF 允许您对 PDF 报告进行数字签名,以确保它们未被篡改。该功能为您生成的 PDF 文档增加了一层额外的安全性和真实性。
图书馆是否支持现代网络标准?
IronPDF 的 Chrome 渲染引擎完全支持现代 HTML5、CSS3 和 JavaScript,确保您的报告准确渲染,并在 PDF 输出中保留所有现代网络样式和交互元素。

