如何使用IronPDF在C#中创建PDF报告

Generate PDF Reports in ASP.NET with C# or VB

This article was translated from English: Does it need improvement?
Translated
View the article in English

从结构化数据(如 SQL)生成管理或数据库报告是一个常见的 .NET 开发任务。 IronPDF 可以用作 C# 中的 PDF 阅读器,并帮助将 SSIS 报告可视化和导出为 ASP.NET C# 中的 PDF。

IronPDF 可用于将数据快照渲染为 PDF 文件格式的“报告”。 它也可以用作 PDF C# 解析器。

快速入门:使用 IronPDF 生成 PDF 报告

仅需几行代码即可使用 IronPDF 开始生成 PDF 报告。 这份简明指南使开发人员能够立即将 HTML 内容转换为专业的 PDF 文档,并轻松保留所有格式。 请参阅下面的示例,了解如何简单地将您的数据转换为精美的 PDF 报告。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    new IronPdf.ChromePdfRenderer().RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小工作流程(5 步)

  1. 下载并安装 IronPDF C# PDF 报告库
  2. 生成报告为 HTML 文档,然后将 HTML 渲染为 PDF
  3. 使用:文件 -> 导出并选择 HTML 4.0 导出为 HTML
  4. 为 XML 报告设置样式,XML 可以解析,然后用数据生成 HTML
  5. 确保 PDF 报告未被修改或篡改;它可能会被数字签名

class="tutorial-segment-title">步骤 1

1. 安装 IronPDF

使用 NuGet:NuGet 上的 IronPdf

Install-Package IronPdf

您也可以手动下载 IronPDF DLL


class="tutorial-segment-title">教程

2. 创建 PDF 报告的方法

基本的方法是首先将报告生成为 HTML 文档,然后使用 IronPDF 将 HTML 渲染为 PDF。 本教程将向您展示在 ASP.NET C# 中创建 PDF 报告的步骤。

: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")
$vbLabelText   $csharpLabel

3. 将 Crystal Reports 转换为 PDF 和 .NET

在 Crystal Reports 应用程序中,您可以使用以下方法导出为 HTML:

文件 -> 导出并选择 HTML 4.0

然后可以使用上面的 C# 示例代码将生成的报告导出为 PDF。

下面是一个例子:

: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")
$vbLabelText   $csharpLabel

3.1 程序化将 Crystal Reports 转换为 PDF 的 C# 方法

如果您希望通过编程方式从 Crystal Reports (RPT) 文件创建 PDF,这也是可能的,可以为您提供更大的控制。

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System.IO;
using IronPdf;

public static void ExportRptToPdf(string rptPath, string pdfOutputPath)
{
    ReportDocument rpt = new ReportDocument();
    rpt.Load(rptPath);

    // Set export options
    DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions()
    {
        DiskFileName = @"c:\tmp\html\b.html"
    };

    ExportOptions exportOpts = ExportOptions.CreateExportOptions();
    exportOpts.ExportDestinationType = ExportDestinationType.DiskFile;
    exportOpts.ExportFormatType = ExportFormatType.HTML40;
    exportOpts.ExportDestinationOptions = diskOpts;

    // Export report to HTML
    rpt.Export();

    // Convert HTML to PDF
    var Renderer = new ChromePdfRenderer();
    Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
    Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
    Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";

    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)
{
    ReportDocument rpt = new ReportDocument();
    rpt.Load(rptPath);

    // Set export options
    DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions()
    {
        DiskFileName = @"c:\tmp\html\b.html"
    };

    ExportOptions exportOpts = ExportOptions.CreateExportOptions();
    exportOpts.ExportDestinationType = ExportDestinationType.DiskFile;
    exportOpts.ExportFormatType = ExportFormatType.HTML40;
    exportOpts.ExportDestinationOptions = diskOpts;

    // Export report to HTML
    rpt.Export();

    // Convert HTML to PDF
    var Renderer = new ChromePdfRenderer();
    Renderer.RenderingOptions.TextHeader.CenterText = "{url}";
    Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}";
    Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";

    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 Shared Sub ExportRptToPdf(ByVal rptPath As String, ByVal pdfOutputPath As String)
	Dim rpt As New ReportDocument()
	rpt.Load(rptPath)

	' Set export options
	Dim diskOpts As New DiskFileDestinationOptions() With {.DiskFileName = "c:\tmp\html\b.html"}

	Dim exportOpts As ExportOptions = ExportOptions.CreateExportOptions()
	exportOpts.ExportDestinationType = ExportDestinationType.DiskFile
	exportOpts.ExportFormatType = ExportFormatType.HTML40
	exportOpts.ExportDestinationOptions = diskOpts

	' Export report to HTML
	rpt.Export()

	' Convert HTML to PDF
	Dim Renderer = New ChromePdfRenderer()
	Renderer.RenderingOptions.TextHeader.CenterText = "{url}"
	Renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
	Renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"

	Renderer.RenderFileAsPdf(diskOpts.DiskFileName).SaveAs(pdfOutputPath)

	Console.WriteLine("Report Written To {0}", Path.GetFullPath(pdfOutputPath))
End Sub
$vbLabelText   $csharpLabel

4. XML 报告

尽管存在更易于编码的格式如 JSON,导出报告数据为 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)
{
    XslCompiledTransform transform = new XslCompiledTransform();
    using (XmlReader reader = XmlReader.Create(new StringReader(xslt)))
    {
        transform.Load(reader);
    }

    StringWriter results = new StringWriter();
    using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
    {
        transform.Transform(reader, null, results);
    }

    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)
{
    XslCompiledTransform transform = new XslCompiledTransform();
    using (XmlReader reader = XmlReader.Create(new StringReader(xslt)))
    {
        transform.Load(reader);
    }

    StringWriter results = new StringWriter();
    using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
    {
        transform.Transform(reader, null, results);
    }

    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(ByVal xml As String, ByVal xslt As String, ByVal pdfOutputPath As String)
	Dim transform As New XslCompiledTransform()
	Using reader As XmlReader = XmlReader.Create(New StringReader(xslt))
		transform.Load(reader)
	End Using

	Dim results As New StringWriter()
	Using reader As XmlReader = XmlReader.Create(New StringReader(xml))
		transform.Transform(reader, Nothing, results)
	End Using

	Dim renderer As New ChromePdfRenderer()
	renderer.RenderHtmlAsPdf(results.ToString()).SaveAs(pdfOutputPath)
End Sub
$vbLabelText   $csharpLabel

请访问C# 和 VB.NET 中的 XML 转换为 PDF 文章以了解更多。

5. 微软 SQL 服务器报告

微软的 SQL 服务器和免费的 SQL 服务器 Express 包含报告工具。 将 SSRS 报告导出为 ASP.NET 中的 PDF 是 IronPDF 的一个有用用途。

教程:如何定位和启动 SSRS 工具

这些报告可以生成为 HTML,然后可以定制,并使用 IronPDF 转换为 PDF 格式。

渲染为 HTML(报告生成器)

6. 报告安全

为了确保 PDF 报告未被修改或篡改,它可以被数字签名。 这最容易在 PDF 报告文件被渲染然后保存到磁盘后实现。

: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")
$vbLabelText   $csharpLabel

如果您没有数字签名,可以使用免费的 Adobe Acrobat Reader 在 macOS 和 Windows 上创建新的数字签名文件。

7. 使用 ASP.NET Webforms 将 ASPX 转换为 PDF

在 ASP.NET 中提供 HTML 内容的最简单方法是在 ASP.NET WebForms 应用程序的 Form_Load 事件中使用 IronPdf.AspxToPdf 类。

using IronPdf;

public static void RenderAspxToPdf()
{
    var AspxToPdfOptions = new ChromePdfRenderOptions()
    {
        EnableJavaScript = false, // Disable JavaScript for simplicity
        // ...many more options available
    };

    AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions);
}
using IronPdf;

public static void RenderAspxToPdf()
{
    var AspxToPdfOptions = new ChromePdfRenderOptions()
    {
        EnableJavaScript = false, // Disable JavaScript for simplicity
        // ...many more options available
    };

    AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions);
}
Imports IronPdf

Public Shared Sub RenderAspxToPdf()
	Dim AspxToPdfOptions = New ChromePdfRenderOptions() With {.EnableJavaScript = False}

	AspxToPdf.RenderThisPageAsPdf(AspxToPdf.FileBehavior.Attachment, "Report.pdf", AspxToPdfOptions)
End Sub
$vbLabelText   $csharpLabel

我们希望这篇文章已帮助您学习如何在 ASP.NET C# 或 VB.NET 中生成 PDF 报告。 您也可以查看我们的完整ASP.NET ASPX 转换为 PDF 教程以了解更多。

常见问题解答

如何在 ASP.NET 中使用 C# 生成 PDF 报告?

您可以使用 IronPDF 将 HTML 文档转换为 PDF 格式来在 ASP.NET 中生成 PDF 报告。首先,将您的报告创建为 HTML 文档,然后使用 IronPDF 的渲染功能将其转换为 PDF。

我应该遵循哪些步骤来安装用于 C# 中 PDF 生成的 IronPDF?

要安装 IronPDF,您可以使用 NuGet 包管理器控制台并输入命令 Install-Package IronPdf ,或从官方 NuGet 网站下载 DLL 并手动将其添加到您的项目中。

我可以在 C# 应用程序中将 Crystal Reports 转换为 PDF 吗?

是的,您可以通过首先将其导出为 HTML,然后使用 IronPDF 将 HTML 文件渲染为 PDF 格式来转换 Crystal Reports 为 PDF。

如何确保我在 C# 中生成的 PDF 报告安全?

您可以使用 IronPDF 数字签名来保护您的 PDF 报告。这确保了 PDF 在创建和保存后未被修改。

在将 HTML 转换为 PDF 时,是否可以处理 JavaScript?

IronPDF 可以在渲染 HTML 为 PDF 时处理 JavaScript 内容。根据项目需要可以启用或禁用此功能。

如何使用 C# 将 SQL Server 报告转换为 PDF?

您可以将 SQL Server 报告导出为 HTML,然后使用 IronPDF 将这些 HTML 文件转换为 PDF,以确保报告保持其格式和布局。

使用 HTML 进行 PDF 报告生成有什么好处?

使用 HTML 可以进行详细的样式和格式化,IronPDF 可以准确地将其转换为 PDF 格式,从而确保报告的视觉完整性。

我可以使用 IronPDF 在 C# 中将 XML 报告转换为 PDF 吗?

是的,您可以使用 XSLT 将 XML 转换为 HTML,然后使用 IronPDF 将其渲染为 PDF。

如何在 ASP.NET WebForms 应用程序中将 ASPX 页面渲染为 PDF?

在 ASP.NET WebForms 应用程序中,您可以在 Form_Load 事件中使用 IronPdf.AspxToPdf 将 ASPX 页面渲染为 PDF。

我在哪里可以找到在 C# 中使用 IronPDF 的资源?

您可以在 IronPDF 网站上找到教程和资源,包括关于将 ASPX 转换为 PDF 以及从不同数据源生成报告的指南。

.NET 10:IronPDF 是否完全兼容 .NET 10,以及它能带来哪些好处?

是的,IronPDF 与 .NET 10 完全兼容,无需任何变通方案或使用已弃用的 API。在 .NET 10 项目中使用 IronPDF 可带来诸多优势,例如性能提升、内存占用降低以及通过 NuGet 实现无缝集成——支持 Web、桌面、容器和服务器等现代应用程序模型。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 16,154,058 | 版本: 2025.11 刚刚发布