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

在ASP.NET中使用C#或VB生成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伺服器資料的PDF報告。 此C#程式庫通過幾行程式碼簡化了在ASP.NET應用程式中的報告建立,同時保留所有格式和樣式。

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

只需幾行程式碼即可使用IronPDF開始生成PDF報告。 本快速指南使得開發者可以快捷地將HTML內容轉換為專業的PDF文件,輕鬆保留所有格式。 請參考下面的範例,了解如何輕鬆地將資料轉換為精美的PDF報告。

  1. 使用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?

IronPDF on NuGet

Install-Package IronPdf

您還可以手動下載IronPDF DLL。 對於高級安裝場景,請查看我們的綜合NuGet套件指南,涵蓋Azure、AWS、Linux、Mac 和Windows 平台的配置。 如果您正在使用容器化應用,我們的Docker整合指南提供詳細的設置說明。


如何教程

Icon Quote related to 如何教程

我最喜歡的程式庫是IronPDF。它允許快速高效地操作PDF文件。它還有許多有價值的功能,例如導出到PDF/A格式和數位簽署PDF文件。

Milan Jovanovic related to 如何教程

Milan Jovanovic

Microsoft MVP

查看案例研究
Icon Quote related to 如何教程

IronOCR意味著我們每年可以從手動處理中節省$40,000,同時提高生產力,釋放資源以進行高影響的任務。我會強烈推薦它。

Brent Matzelle related to 如何教程

Brent Matzelle

首席技術官,OPYN

查看案例研究
Icon Quote related to 如何教程

IronSuite在我們的運營中扮演著至關重要的角色。這些工具增加了包括建立平面圖和改善庫存管理在內的業務效率。

David Jones related to 如何教程

David Jones

首席軟體工程師,Agorus Build

查看案例研究

生成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報告?

儘管XML不如JSON等格式易於編碼,但匯出報告資料為XML仍然很常見。 IronPDF提供了卓越的XML到PDF轉換支持,提供多種方法來處理XML資料。

在設置XML報告樣式時,解析XML並用資料生成HTML。

更加優雅的解決方案是使用XSLT借助XslCompiledTransform類將XML直接轉換為HTML,詳見文章使用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
$vbLabelText   $csharpLabel

請存取C#和VB.NET中將XML轉換為PDF的文章以了解有關XML高級轉換技術和最佳實踐的更多資訊。

如何將SQL伺服器報告匯出為PDF?

微軟的SQL Server和免費的SQL Server Express都包含報告工具。 在ASP.NET中將SSRS報告匯出為PDF是IronPDF的一個可用例。 對於複雜的資料可視化需求,IronPDF支持渲染JavaScript圖表,包括受歡迎的C3.js、D3.js 和 Highcharts庫。

教程:如何尋找和啟動報告服務工具(SSRS)

這些報告可以生成為HTML,然後可以使用IronPDF自定義並轉換為PDF格式。 IronPDF的HTML字串到PDF轉換功能提供了對最終輸出的完全控制。

渲染為HTML(報告生成器)

在需要安全資料存取的企業環境中,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 Webforms將ASPX轉換為PDF?

在ASP.NET中提供HTML內容的最簡便方法是使用ASP.NET WebForms應用的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報告、被導出為HTML 4.0的Crystal Reports、經HTML樣式化的XML報告和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格式(File → Export → 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大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備開始了嗎?
Nuget 下載 20,296,129 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在捲動嗎?

想快速獲得證明嗎? PM > Install-Package IronPdf
執行範例 看您的HTML變成PDF。