比較

Apryse PDF與IronPDF:技術比較指南

當.NET開發人員評估PDF生成解決方案時,GemBox PDF作為專注於讀取、寫入、合併及拆分PDF任務的工具而突出。 然而,其基於座標的佈局、免費版本的2頁限制以及有限的HTML到PDF轉換使得許多團隊考慮探索替代方案。 IronPDF提供了一種現代化的方法,使用HTML/CSS進行佈局,採用Chromium渲染引擎,免去了座標計算和頁面限制的需要。

此比較分析了兩個程式庫在相關技術方面的表現,以協助開發人員及架構師為其.NET PDF需求做出明智決策。

了解GemBox PDF

GemBox PDF是一個商業.NET元件,專為在C#應用程式中處理PDF文件而設計。 此程式庫允許開發人員在不需要安裝第三方軟體如Adobe Acrobat的情況下執行讀取、寫入、合併和拆分PDF文件操作。

GemBox PDF使用ComponentInfo.SetLicense()進行授權註冊。 為了新增文字內容,程式庫使用page.Content.DrawText()渲染。 文件載入使用document.Save()

一個顯著的特點是免費版本的2頁限制。 超過2頁的文件若沒有授權將無法處理,這使得免費版本對於較長的商業文件來說顯得不實用。 該程式庫使用基於座標的佈局,要求開發人員為每個文字元素、圖像和形狀計算準確的X/Y位置。

了解IronPDF

IronPDF是一個.NET PDF程式庫,使用Chromium渲染引擎進行HTML到PDF的轉換,使開發人員能使用熟悉的HTML/CSS進行文件佈局,而不是基於座標計算。 此程式庫專注於PDF特定的功能,並採用現代化的.NET模式。

IronPDF使用PdfDocument物件。 為了在現有文件中新增文字,ApplyStamp()應用。 文件載入使用SaveAs()

此程式庫無頁面限制。 完整的CSS3支援包括Flexbox、Grid佈局和JavaScript的執行,使得開發人員可以利用其已知的網頁技術進行PDF生成。

架構及佈局方法的比較

這些.NET PDF程式庫之間的根本區別在於它們的佈局理念。

方面GemBox PDFIronPDF
免費版本限制2頁僅有水印,無內容限制
HTML到PDF是(最近增加)完整的Chromium引擎
佈局方法基於座標,手動HTML/CSS流佈局
表格支持無限制,使用HTML表格
現代CSSFlexbox、Grid、CSS3
JavaScript支援完整的JavaScript執行
設計變更重新計算座標編輯HTML/CSS
學習曲線PDF座標系統HTML/CSS(網頁熟悉)

這一轉變是顯著的:

GemBox PDF:"在位置(100, 700)繪製文本"
IronPDF:"使用CSS樣式渲染此HTML"

GemBox PDF需要手動計算每個位置。 想要調整間距? 重新計算坐標。 想要不同的字體大小? 調整其下方的所有Y位置。 IronPDF使用HTML/CSS的流佈局,內容自然定位。

程式碼比較:常見的 PDF 操作

HTML 到 PDF 轉換

最基本的操作展示了核心架構差異。

GemBox PDF:

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var document = PdfDocument.Load("input.html");
        document.Save("output.pdf");
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        var document = PdfDocument.Load("input.html");
        document.Save("output.pdf");
    }
}
Imports GemBox.Pdf
Imports GemBox.Pdf.Content

Module Program
    Sub Main()
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Dim document = PdfDocument.Load("input.html")
        document.Save("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

GemBox PDF使用Save()進行輸出。 這種方法將HTML視為待載入的文件而非待渲染的內容。

IronPDF建立SaveAs()存檔。 Chromium引擎帶著完整的CSS3和JavaScript支持渲染HTML,就像瀏覽器一樣。

想了解進階HTML渲染選項,請參閱HTML到PDF轉換指南

合併多個PDF

PDF合併展示了文件操作方法的不同。

GemBox PDF:

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using System.Linq;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var source1 = PdfDocument.Load("document1.pdf");
            var source2 = PdfDocument.Load("document2.pdf");

            document.Pages.AddClone(source1.Pages);
            document.Pages.AddClone(source2.Pages);

            document.Save("merged.pdf");
        }
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using System.Linq;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var source1 = PdfDocument.Load("document1.pdf");
            var source2 = PdfDocument.Load("document2.pdf");

            document.Pages.AddClone(source1.Pages);
            document.Pages.AddClone(source2.Pages);

            document.Save("merged.pdf");
        }
    }
}
Imports GemBox.Pdf
Imports System.Linq

Module Program
    Sub Main()
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Using document As New PdfDocument()
            Dim source1 = PdfDocument.Load("document1.pdf")
            Dim source2 = PdfDocument.Load("document2.pdf")

            document.Pages.AddClone(source1.Pages)
            document.Pages.AddClone(source2.Pages)

            document.Save("merged.pdf")
        End Using
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")

        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

GemBox PDF需要建立一個新的空document.Save()保存。 此模式要求管理多個文件物件並明確進行頁面複製。

IronPDF使用SaveAs()保存。 靜態合併方法直接返回新的合併文件。

在PDF中新增文字

文字新增展示了基於坐標和列印機的方法。

GemBox PDF:

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var page = document.Pages.Add();
            var formattedText = new PdfFormattedText()
            {
                Text = "Hello World",
                FontSize = 24
            };

            page.Content.DrawText(formattedText, new PdfPoint(100, 700));
            document.Save("output.pdf");
        }
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var page = document.Pages.Add();
            var formattedText = new PdfFormattedText()
            {
                Text = "Hello World",
                FontSize = 24
            };

            page.Content.DrawText(formattedText, new PdfPoint(100, 700));
            document.Save("output.pdf");
        }
    }
}
Imports GemBox.Pdf
Imports GemBox.Pdf.Content

Module Program

    Sub Main()
        ComponentInfo.SetLicense("FREE-LIMITED-KEY")

        Using document As New PdfDocument()
            Dim page = document.Pages.Add()
            Dim formattedText As New PdfFormattedText() With {
                .Text = "Hello World",
                .FontSize = 24
            }

            page.Content.DrawText(formattedText, New PdfPoint(100, 700))
            document.Save("output.pdf")
        End Using
    End Sub

End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>");

        var stamper = new TextStamper()
        {
            Text = "Hello World",
            FontSize = 24,
            HorizontalOffset = 100,
            VerticalOffset = 700
        };

        pdf.ApplyStamp(stamper);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>");

        var stamper = new TextStamper()
        {
            Text = "Hello World",
            FontSize = 24,
            HorizontalOffset = 100,
            VerticalOffset = 700
        };

        pdf.ApplyStamp(stamper);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>")

        Dim stamper = New TextStamper() With {
            .Text = "Hello World",
            .FontSize = 24,
            .HorizontalOffset = 100,
            .VerticalOffset = 700
        }

        pdf.ApplyStamp(stamper)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

GemBox PDF建立新PdfPoint(100, 700)為參數。 基於座標的方法要求知道每個X/Y位置。

IronPDF可以使用pdf.ApplyStamp()應用。 列印機方法允許用基於偏移的位置將文字新增到現有文件。

了解更多有關PDF編輯的資訊,請參閱IronPDF教程

API映射參考

對於正在評估GemBox PDF遷移或比較功能的開發者,此映射顯示相應操作:

核心類映射

GemBox PDFIronPDF
PdfDocumentPdfDocument
PdfPagePdfDocument.Pages[i]
PdfFormattedTextHTML字串與CSS
PdfPointCSS定位或列印機偏移
PdfContent不適用(使用HTML)
ComponentInfo.SetLicense()IronPdf.License.LicenseKey

文件操作對應

GemBox PDFIronPDF
PdfDocument.Load(path)PdfDocument.FromFile(path)
document.Save(path)pdf.SaveAs(path)
document.Pages.Add()渲染HTML
document.Pages.Countpdf.PageCount
document.Pages[index]pdf.Pages[index]
document.Pages.AddClone(pages)PdfDocument.Merge()
page.Content.DrawText(text, point)renderer.RenderHtmlAsPdf(html)

文字格式映射

GemBox PDFIronPDF
formattedText.Text = "..."HTML內容
formattedText.FontSize = 24CSS font-size: 24pt
formattedText.Font = ...CSS font-family: ...
formattedText.Color = ...CSS color: ...
new PdfPoint(100, 700)CSS position:absolute; left:100px; top:700px;

遷移複雜性評估

功能遷移複雜性
載入/儲存PDF非常低
合併PDFs非常低
切分PDF
文字提取非常低
新增文字
表格
圖片
水印
密碼保護
表單欄位

功能比較總結

功能GemBox PDFIronPDF
HTML到PDF是(最近增加)是(Chromium引擎)
HTML字串渲染是(最近增加)
合併PDFs是(AddClone模式)是(靜態合併)
新增文字是(基於座標)是(基於列印機)
表格是(無限)
CSS3 Flexbox/Grid
JavaScript
流式佈局否(基於座標)是(HTML/CSS)
免費版本2頁僅有水印

團隊考慮從GemBox PDF轉移到IronPDF時

開發團隊評估從GemBox PDF遷移到IronPDF的若干原因:

2頁限制:免費版本將輸出限制在2頁,使免費版本對較長的商業文件變得不實用。 IronPDF的免費版本無內容限制——只有水印。

有限的HTML到PDF轉換:雖然GemBox PDF最近增加了HTML到PDF支援,但它主要使用基於座標計算的程式構建文件。 IronPDF的Chromium引擎直接高忠實度渲染HTML/CSS,使用開發人員已經具備的技能。

基於座標的佈局複雜性:與HTML/CSS中佈局自然流動不同,GemBox PDF要求對每個文字元素、圖像和形狀計算準確的X/Y位置。 每次設計更改——調整間距,改變字體大小——都需要為所有受影響的元素重新計算座標。

頁面限制:免費版本的2頁限制使得無法在未獲得授權下處理更長的商業文件。 多頁複雜報告迅速超過此限。 IronPDF允許其試用版本中無限的內容。

現代CSS需求:儘管GemBox PDF增加了CSS支援,但需要全面使用Flexbox、Grid或CSS3動畫的應用可能發現IronPDF的Chromium引擎提供更完整的現代CSS支援。

學習曲線:開發人員必須在PDF座標系統中思考,而不是文件流,這使得簡單的任務變得驚人地複雜。 IronPDF使用現有的Web開發人員熟知的HTML/CSS。

優勢和考量

GemBox PDF的優勢

  • 專注功能:為特定PDF操作進行的精簡優化
  • 部署方便:.NET元件無第三方依賴
  • 商業支援:提供有專屬支援和更新的商業許可

GemBox PDF的考慮因素

  • 2頁限制:免費版本限制為2頁
  • 有限的HTML到PDF:最近新增但不如替代方案成熟
  • 基於座標的佈局:需手動計算每個X/Y位置
  • 功能有限:功能少於綜合程式庫
  • 設計變更摩擦:每次佈局更改都需重新計算座標

IronPDF的優勢

  • HTML/CSS佈局:使用開發者熟悉的網路技術
  • 無內容限制:試用版僅有水印,無頁面限制
  • Chromium渲染:完整的CSS3、Flexbox、Grid、JavaScript支援
  • 流式佈局:內容自然定位,無需坐標計算
  • 現代方法:設計更改需要編輯HTML/CSS,而非重新計算位置
  • 全面的資源: 豐富的教程文件

IronPDF考量

  • 不同的模式:需在HTML/CSS中思考,而非座標
  • 商業許可:生產使用需要商業許可

結論

GemBox PDF和IronPDF代表了.NET中PDF生成的根本不同方法。 GemBox PDF的基於座標的佈局系統要求開發者為每個元素計算準確的位置,其免費版本的2頁限制使其在較長商業文件中的實用性受到限制。

IronPDF提供了一種使用HTML/CSS進行佈局的現代化替代方案,消除了座標計算和頁面限制。 Chromium渲染引擎支援完整的CSS3、Flexbox、Grid和JavaScript,使開發者能使用熟悉的網頁技術進行PDF生成。

隨著組織計劃.NET 10、C# 14的應用開發至2026年,基於座標的PDF構建和HTML/CSS佈局之間的選擇顯著影響開發速度。 需要表格、複雜佈局或現代CSS的團隊將發現IronPDF的方法消除了基於座標的文件構建固有的摩擦。

免費試用 開始評估 IronPDF,並探索全面的文件以評估特定需求的適用性。

請注意Adobe Acrobat 和 GemBox是各自所有者的註冊商標。 此網站與Adobe Inc.或GemBox Ltd.無關聯,未經其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供資訊參考,並反映了撰寫時公開的資訊。)}