跳過到頁腳內容
產品比較

從字節數組創建PDF C# iTextSharp(vs IronPDF)

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.

View Full Comparison

在現代.NET應用程式中,建立和管理 PDF 文件是一項常見需求—無論是產生報告、發票還是數位記錄。 開發人員經常使用第三方 PDF 庫來完成這項任務,而.NET生態系統中最受歡迎的兩個選擇是IronPDFiText 7 (iTextSharp 的繼任者)。

每個庫都針對不同的使用場景提供了一套強大的工具集。 但是,在 C# 中,哪種方法最適合從[位元組陣列](https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2013/dd831853(v=vs.120)產生 PDF 檔案? 本文透過比較、程式碼範例和見解,對所有內容進行了詳細分析,以幫助.NET開發人員做出正確的選擇。

無論您是建立企業級應用程式還是小型內部工具,選擇合適的 PDF 庫都可以節省您的開發時間並確保輸出穩定可靠。 讓我們一起來看看每個圖書館提供哪些服務。

PDF庫簡介

PDF庫有哪些用途?

C# 中的 PDF 程式庫允許開發人員以程式設計方式產生、操作和讀取 PDF 檔案。 它們適用於多種應用場景,例如:

  • 匯出報表和發票
  • 從網頁表單產生動態內容 將HTML頁面或範本轉換為PDF
  • 在 PDF 檔案中添加視覺元素,例如頁碼、圖表、圖像等 合併或分割文檔
  • 對PDF檔案進行數位簽名

它們在資料可攜性和符合 PDF/A 等歸檔或無障礙要求等標準方面也發揮著至關重要的作用。

iTextSharp 和IronPDF:兩大競爭者

在現有的.NET PDF 庫中, iTextSharpIronPDF已成為領先的解決方案——它們各自具有獨特的優勢:

  • iTextSharp是一個成熟的開源程式庫,基於 Java 的 iText,提供強大的 PDF 控制功能,但學習曲線陡峭,並且存在許可方面的限制。
  • IronPDF是一款現代化的商業庫,專注於簡潔性、速度和 Web 集成,可讓您直接將 HTML 和ASP.NET視圖轉換為 PDF 文件。

為什麼選擇合適的圖書館很重要

在這兩者之間做出選擇不僅僅是個人偏好的問題——它還會影響生產力、維護、性能,甚至法律許可合規性。 對於需要快速週轉、頻繁格式變更或從 HTML 範本渲染 PDF 的項目,快速開發是有益的;而企業級應用程式則可能優先考慮標準合規性和長期可維護性。

功能對比

iText 7 for .NET (iTextSharp 的後續版本)

iText 7iTextSharp的正式繼任者,並提供了完全重新設計的架構。 這是一個功能強大、可擴展的程式庫,適用於在法律、金融和政府等合規性要求高的行業中建立、編輯和驗證 PDF 文件。 iText 7 套件包括對 PDF/A、PDF/UA、數位簽章、編輯和表單​​建立的支援。

雖然它仍然是根據 AGPL 許可證開源的,但專有專案可以獲得商業許可。

iText 7 主要功能

  • 現代化的 API,取代了 iTextSharp 的舊結構
  • 模組化支援:HTML 轉 PDF、PDF/A、表單、內容編輯、數位簽名
  • 為企業應用程式提供高效能
  • 非常適合 PDF/A、無障礙存取和合規性

請注意您需要使用 itext7 進行核心 PDF 操作,並且可能需要單獨包含 html2pdf 等可選插件。

安裝(NuGet)

下載 iText 7 的 PDF 產生核心軟體包:

Install-Package itext7

透過NuGet套件管理器控制台安裝 iText 7

您也可以透過"解決方案的套件管理器"畫面安裝 iText 7。 為此,您首先需要前往"工具"下拉式選單,然後找到"NuGet套件管理器 > 管理解決方案的NuGet套件"。

Visual Studio 的工具下拉選單

然後,只需搜尋 iText 7,然後點擊"安裝"即可。

iText 7 NuGet套件頁面

程式碼範例:使用 iText 7 從位元組數組建立 PDF 文檔

using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
$vbLabelText   $csharpLabel

輸出 PDF 文件

iText 7 PDF 輸出

解釋

  • PdfWriter 將內容寫入 MemoryStream
  • PdfDocument 管理 PDF 的內部結構。
  • Document 用於新增進階內容(文字、圖像、表格)。
  • 呼叫 doc.Close() 後,PDF 內容已完全寫入,可作為位元組陣列傳回。

此範例展示了 iText 7 相較於 iTextSharp更模組化、更易讀的 API 。然而,除非您引入單獨授權的 pdfhtml 庫,否則它仍然缺乏對 HTML/CSS 渲染的原生支援。

iText 7 的優缺點

優點:

*全面的 PDF 控制 iText 7 提供對 PDF 元素(例如表格、表單和數位簽章)的完全控制。 這使其成為對合規性要求很高的應用的理想選擇,這些應用需要特定的 PDF 標準,例如 PDF/A 或 PDF/UA。

*模組化和可擴展 iText 7 是模組化的,這意味著您可以只安裝您需要的特定模組(例如,pdfhtml 用於 HTML 到 PDF 的轉換)。 如果您不使用所有功能,這樣可以實現更輕量級的方案。

*支援複雜的 PDF 標準 iText 7 支援 PDF/A(存檔)、PDF/UA(輔助功能)和 PDF/X(列印)等 ISO 標準,使其適用於合規性至關重要的專業和法律環境。

*豐富的文件和支援 iText 7 擁有全面的文檔和龐大的使用者社群。 該公司還提供專業支持,確保開發人員在需要時能夠獲得幫助。

*提供免費版本(AGPL) 開發者可以根據 AGPL 授權免費使用 iText 7,這非常適合開源專案或個人使用。

缺點:

  • AGPL 商業用途許可 雖然 iText 7 提供免費版本,但商業用戶必須遵守 AGPL 許可,該許可要求發布任何使用 iText 7 的軟體的源代碼,或支付商業許可費用。

*學習曲線陡峭 iText 7 的 API 更複雜、功能更豐富,與IronPDF等更簡單的函式庫相比,其學習曲線可能更陡峭。 開發人員需要熟悉其底層文件結構和基於模組的架構。

*重量級,適用於簡單任務\ iText 7 在執行基本的 PDF 任務時可能會顯得笨重,例如簡單的文件創建或基本的 HTML 到 PDF 轉換,尤其是與IronPDF等簡化流程的庫相比。

*需要外部模組才能將 HTML 轉換為 PDF iText 7 中的 HTML 轉 PDF 功能只能透過額外的 pdfhtml 模組來實現,該模組需要單獨安裝,並且可能無法像IronPDF那樣無縫地處理現代 Web 內容。

IronPDF for .NET:功能強大的 PDF 庫

IronPDF是一個高級.NET庫,旨在簡化 PDF 文件生成,重點在於提高開發人員的效率。 它在渲染 HTML 內容和樣式方面尤其有效,使其成為現代網頁到 PDF 工作流程的理想選擇。

主要特點:

  • 從位元組數組建立 PDF 文件,無需安裝 Adob​​e Reader 即可處理 PDF 文檔
  • 使用完整的 Chromium 引擎直接渲染 HTML 到 PDF,從 HTML 內容建立 PDF 文檔
  • 支援 MVC 視圖、 Razor頁面以及本機/遠端 URL
  • 開箱即用,支援圖片檔案、 JavaScript、CSS 和響應式佈局
  • 語法簡單易用,設定簡單
  • 永久授權,不受AGPL限制

安裝IronPDF

IronPDF也可以透過NuGet安裝,只需在NuGet套件管理器控制台中執行以下命令:

Install-Package IronPdf

透過軟體包管理器控制台安裝IronPDF

或者,您也可以透過解決方案畫面的NuGet套件管理器進行安裝。 為此,請導覽至"工具 > NuGet套件管理器 > 管理解決方案的NuGet套件"。

Visual Studio 中的"工具"下拉式選單

然後,搜尋IronPDF,然後點選"安裝"。

 IronPDF NuGet套件管理器畫面

安裝完成後,即可在幾秒鐘內將完整的 HTML 頁面渲染成 PDF——無需額外的模組。 它支援現代 CSS、 JavaScript,甚至無需額外配置即可支援互動式 Web 內容。

程式碼範例:使用IronPDF從位元組數組建立 PDF 文檔

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
$vbLabelText   $csharpLabel

輸出 PDF 文件

 IronPDF輸出

解釋

  • using IronPdf 語句導入IronPDF庫,以便存取所有與 PDF 相關的類別。
  • var renderer = new ChromePdfRenderer() 創建了一個由無頭 Chromium 引擎驅動的全新 HTML 到 PDF 渲染器。
  • renderer.RenderHtmlAsPdf(...) 將給定的 HTML 字串轉換為 PDF 文件。 您也可以傳入檔案路徑或 URL。
  • pdfDoc.BinaryData 將最終 PDF 作為位元組數組傳回,以便保存、串流或資料庫儲存。

IronPDF的優缺點

優點:

*輕鬆實現 HTML 到 PDF 的渲染 直接將 HTML、CSS 和JavaScript內容渲染到 PDF 中,並保留完整的樣式,包括 Bootstrap 和自訂字體——無需複雜的佈局程式碼或額外的模組。

*快速入門和直覺的 API 只需幾行程式碼即可建立樣式完整的 PDF 文件,語法簡潔,完全相容於.NET Core和.NET Framework 。

*全面支援 Web 技術 IronPDF支援JavaScript、現代 CSS、SVG 和媒體查詢——這是大多數庫都難以實現的,除非它們使用像 Chromium 這樣的無頭瀏覽器( IronPDF內部就是這麼做的)。

*內建影像和資源處理功能 無需額外配置,即可輕鬆包含圖片、本機文件,甚至從遠端 URL 拉取資源。

*永久許可 & 無 AGPL協議 與 iText 7 不同, IronPDF提供靈活的商業許可,不受開源 AGPL 義務的限制。

*非常適合 MVC 和Razor視圖\ 將ASP.NET應用程式中的 .cshtml Razor視圖無縫轉換為可列印的 PDF。

缺點:

*商業用途需獲得許可 雖然提供免費試用,但IronPDF不是開源軟體。 預算緊張的項目可能需要評估許可證費用。

*更大的初始包裝尺寸 由於它捆綁了一個無頭 Chromium 引擎,因此NuGet包比某些替代方案更重。

實用程式碼範例對比

本節中的以下程式碼範例示範了這些函式庫的實際應用,我們將使用相同的任務來比較IronPDFiText 7 。 我們將對這兩個庫進行相同的測試:從 URL 生成 PDF、將圖像渲染為 PDF 以及將樣式化的 HTML 轉換為 PDF,所有這些都將使用位元組數組來處理我們的 PDF 內容。 這將使開發人員能夠評估每個庫如何處理這些常見用例。

1. 使用位元組數組從 URL 產生簡單的 PDF

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
$vbLabelText   $csharpLabel

輸出 PDF

 IronPDF輸出的 PDF URL

IronPDF使用無頭 Chromium 引擎,可實現網頁的像素級完美渲染,並完全支援JavaScript和 CSS。

iText 7

using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
$vbLabelText   $csharpLabel

輸出

iText 7 URL 到 PDF 輸出

iText 7使用 HttpClient 取得原始 HTML,並使用 HtmlConverter 進行渲染,但它不支援JavaScript執行(iText 的官方文件證實了這一點,該文件建議使用 Selenium 或類似的瀏覽器自動化進行JavaScript預處理),並且CSS 樣式有限。 雖然 iText7 在 7.1.15 版本(2021 年)中添加了部分 flexbox 支持,但許多 CSS3 屬性仍然不受支持,特別是對於複雜的現代佈局。

2. 使用位元組數組從圖像建立新的 PDF 文件

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
$vbLabelText   $csharpLabel

輸出

 IronPDF圖片轉 PDF 輸出

使用 IronPDF 的ImageToPdfConverter 工具輕鬆產生影像到 PDF 檔案。 有了它,您可以輕鬆地從 PNG 檔案或 JPG 檔案等圖像建立 PDF 檔案。

iText 7

using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
$vbLabelText   $csharpLabel

輸出

iText 7 PDF 附影像輸出

使用 ImageDataFactory 手動建立文件佈局並明確插入影像。

3. 使用位元組數組將樣式化的 HTML 內容轉換為 PDF

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
$vbLabelText   $csharpLabel

輸出

 IronPDF樣式化的 HTML 轉 PDF 輸出

IronPDF由於採用了 Chromium 引擎,因此完全支援標籤或外部樣式表中的 CSS。

iText 7 + pdfHTML

using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
$vbLabelText   $csharpLabel

輸出

iText 7 樣式化的 HTML 轉 PDF 輸出

需要安裝付費外掛程式 pdfHTML 才能處理 HTML 轉換任務。

比較匯總

特徵 IronPDF iText 7(附 pdfHTML)
將 URL 渲染為 PDF 全鉻渲染 取得 HTML,不支援原生 JS
新增圖片 透過 HTML 或其專用圖像浮水印工具嵌入 手動圖像工廠
渲染樣式化的 HTML 完全支援 CSS 僅透過 pdfHTML 支援 CSS
返回位元組數組 是的 是的
設定複雜度 簡單的 中等(手動佈局)
輸出品質 像素級完美 不錯,但略顯呆板

結論:你該選擇哪個.NET函式庫?

IronPDFiText 7之間進行選擇取決於您的專案需求——但就開發者體驗、易用性和現代渲染精度而言, IronPDF顯然更勝一籌。

如果您正在處理動態HTML 內容、網頁渲染,或者需要從 URL建立具有完整JavaScript和 CSS 支援的 PDF 文件,IronPDF 基於 Chromium 的引擎可提供無與倫比的保真度。 其直覺的 API 和快速設定使其成為快速開發和實際生產使用的理想選擇——尤其是在處理位元組數組、文件流或基於 Web 的 PDF 生成時。

另一方面,iText 7 是一個功能強大且備受推崇的函式庫,它採用更傳統的、以佈局為驅動的方法。 它能夠對文件結構進行可靠的控制,非常適合需要精細操作的開發人員,但學習曲線較為陡峭,並且缺乏現代 HTML 渲染功能。

結論就是:

  • 想要獲得像素級完美的現代網頁內容、樣式化的 HTML 輸出或快速原型設計? 選擇IronPDF。 需要具有精細控制功能的底層 PDF 建立工具嗎? iText 7 或許正合適。

準備好開始使用IronPDF了嗎? 下載免費試用版,看看用幾行程式碼在 C# 中建立基於位元組數組的專業 PDF 是多麼容易。

請注意iText 7 是其各自所有者的註冊商標。 本網站與 iText 7 無任何關聯,亦未獲得其認可或贊助。所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映的是撰寫本文時可公開取得的資訊。

常見問題解答

如何在 C# 中將 byte 陣列轉換為 PDF?

您可以使用 IronPDF 在 C# 中將 byte 陣列轉換為 PDF。只需使用 `PdfDocument.FromBytes` 方法將 byte 陣列載入到 IronPDF 文件中,該方法將解析數據並生成 PDF 文件。

使用 IronPDF 進行 HTML 至 PDF 轉換的好處是什麼?

IronPDF 在將 HTML 轉換為 PDF 上表現出色,因為它使用無頭 Chromium 引擎,支持現代 CSS 和 JavaScript。這使得它非常適合將動態網頁內容轉換為像素完美的 PDF 文件。

使用 IronPDF 比使用 iText 7 來生成 PDF 的主要優勢是什麼?

IronPDF 提供了一個更簡單的 API 和更快捷的設置,適用於需要將 HTML 轉換為 PDF 的項目,完全支持 CSS 和 JavaScript。它尤其適合需要快速開發和網頁內容整合的應用程序。

iText 7 如何處理 PDF 合規性?

iText 7 專為合規要求高的行業設計,支持 PDF/A、PDF/UA 和 PDF/X 等標準。它提供了對 PDF 創建的強大控制,適合合規性至關重要的應用程序。

在 .NET 項目中安裝 IronPDF 的過程是什麼?

要安裝 IronPDF,您可以使用 Visual Studio 中的 NuGet 套件管理器。在 Package Manager Console 中運行命令 `Install-Package IronPDF` 以將其添加到您的項目中。

IronPDF 可以從 ASP.NET 視圖創建 PDF 嗎?

是的,IronPDF 可以直接將 ASP.NET 視圖呈現為 PDF 文件。此功能使開發人員可以輕鬆地將具有複雜佈局和樣式的網頁轉換為 PDF。

哪些類型的應用最能受益於使用 IronPDF?

需要將動態網頁內容(如報告和發票)轉換為 PDF 的應用程序最有利於使用 IronPDF。其快速設置和網路技術支持使其非常適合需要頻繁更新和現代設計的項目。

iText 7 的模組化架構如何影響其使用?

iText 7 的模組化架構允許根據需要添加特定的 PDF 功能,例如 HTML 轉換或數字簽名。這提供了靈活性,但每個模組可能需要額外的學習和安裝。

IronPDF 和 iText 7 之間的授權差異是什麼?

IronPDF 提供適合商業應用的永久授權,無 AGPL 限制。相比之下,iText 7 在開源項目中可用於 AGPL 授權,商業用途需付費授權。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me