如何使用 IronPDF for .NET 在 C# 中建立 PDF 報告

使用 C# 或 VB 在 ASP.NET 中產生 PDF 報告

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

IronPDF 讓 .NET 開發人員能夠透過將 HTML 內容渲染為 PDF 文件,從 HTML、Crystal Reports、XML 及 SQL Server 資料中產生 PDF 報表。 此 C# 函式庫僅需幾行程式碼,即可簡化 ASP.NET 應用程式的報表建立流程,並完整保留所有格式與樣式。

快速入門:使用 IronPDF 產生 PDF 報告

只需幾行程式碼,即可開始使用 IronPDF 生成 PDF 報告。 這份快速指南讓開發者能夠立即將 HTML 內容轉換為 Professional PDF 文件,並輕鬆保留所有格式設定。 請參閱以下範例,了解將您的資料轉化為精美 PDF 報告是多麼簡單。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 請複製並執行此程式碼片段。

    // Instantiate ChromePdfRenderer for HTML to PDF conversion
    new IronPdf.ChromePdfRenderer().RenderHtmlFileAsPdf("report.html").SaveAs("report.pdf");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronPDF

    arrow pointer

步驟 1

如何安裝 IronPDF?

NuGet 上的 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")
$vbLabelText   $csharpLabel

若您有更複雜的報表需求,歡迎參閱我們的完整 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")
$vbLabelText   $csharpLabel

如需進行進階的頁首與頁尾自訂(包括基於 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
$vbLabelText   $csharpLabel

如何從 XML 生成 PDF 報告?

儘管有 JSON 等更易於編寫的格式盛行,將報告資料匯出為 XML 仍屬常見做法。 IronPDF 提供出色的 XML 轉 PDF 轉換支援,並提供多種處理 XML 資料的方法。

若要為 XML 報告設定樣式,請先解析 XML,並利用其中的資料產生 HTML。

更優雅的解決方案是使用 XSLT,透過文章《使用 XslCompiledTransform 類別》中所述的 XslCompiledTransform 類別,將 XML 直接轉換為 HTML。

生成的 HTML 字串或檔案可透過 IronPDF 渲染為 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
$vbLabelText   $csharpLabel

請參閱《使用 C# 和 VB.NET 將 XML 轉換為 PDF》一文,進一步了解進階的 XML 轉換技術與最佳實務。

如何將 SQL Server 報表匯出為 PDF?

微軟的 SQL Server 及其免費版本 SQL Server Express 均內建報表工具。 在 ASP.NET 中將 SSRS 報表匯出為 PDF,是 IronPDF 的實用應用之一。 針對複雜的資料視覺化需求,IronPDF 支援渲染 JavaScript 圖表,包括 C3.js、D3.js 和 Highcharts 等熱門函式庫。

教學指南:如何尋找並啟動 Reporting Services 工具 (SSRS)

這些報告可生成為 HTML 格式,隨後可透過 IronPDF 進行自訂並轉換為 PDF 格式。 IronPDF 的 HTML 字串轉 PDF 功能,讓您能完全掌控最終輸出結果。

渲染為 HTML(Report Builder)

對於需要安全資料存取的 Enterprise 環境,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")
$vbLabelText   $csharpLabel

若您尚未擁有數位簽章,可透過 macOS 或 Windows 上的免費 Adobe Acrobat Reader 建立新的數位簽章檔案。 若需採取額外的安全措施,請參閱我們的 PDF 權限與密碼指南,以控制文件的存取與編輯權限。

如何使用 ASP.NET Web Forms 將 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
$vbLabelText   $csharpLabel

希望本文能協助您了解如何在 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 Reports(以 HTML 4.0 格式匯出)、XML 報表(採用 HTML 樣式)以及 SQL Server 資料報表。此函式庫採用 Chrome 渲染引擎,以確保轉換效果精準無誤。

如何安裝 PDF 報表產生器函式庫?

您可以透過 NuGet 套件管理員,使用命令 'Install-Package IronPdf' 安裝 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 輸出中完整保留所有當代網頁樣式與互動元素。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 19,014,616 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。