比较

Winnovative 与 IronPDF:技术比较指南

Aspose.Total的生产部署看起来像一个采购矩阵:开发者小型企业为$3,999,OEM为$11,997,SDK为$79,980(50个商业部署配额),然后是Site小型企业/OEM/SDK层,加上$1,999/月起的按需按月计量。 每个提升步骤都是一个单独的层级,具有明确的再分发配额,设计用于跨越20+利基格式的系统集成商和ISV。 Iron Suite将十款Iron Software产品以每开发者永久捆绑包形式从$2,998发货,持许可席位免版税,SaaS、OEM和分布式再分发均由一个再分发附加组件而非多层SDK矩阵覆盖。

这个比较以采购主导的决策实际涉及的内容为开篇:每个套件的定价方式、许可结构以及实际盒子中有什么。 能力详情和代码接下来是给将要交付的工程师们的。

一目了然的比较

维度Aspose.Total for .NETIron Suite
定价定位开发者小型企业$3,999; OEM $11,997; SDK $79,980; 从$1,999/月起按量计费Lite $2,998 / Plus $4,498 / Professional $8,998 / Unlimited $17,998(Enterprise定制)。 所有10款产品以2款的价格,节省75%
许可模式每开发者的永久许可+站点+OEM+SDK层级; 也可以按量支付每开发者的永久许可; 许可席位免版税; 通过再分发附加组件实现SaaS/OEM再分发
捆绑中的组件26+库(Word、Cells、PDF、Slides、Email、Imaging、BarCode、OCR、CAD、3D、GIS、Tasks、Diagram、Note、Finance、Medical、LLM,…)10个产品(IronPDF、IronWord、IronXL、IronPPT、IronOCR、IronBarcode、IronQR、IronPrint、IronZIP、IronWebScraper)
格式/能力覆盖市场中最广:Office、PDF、CAD、3D、GIS、Visio、MS Project、OneNote、XBRL、DICOM、OMR前十高容量格式:PDF、Office、OCR、Barcode/QR、ZIP、Print、Web Scraping
跨平台/云Windows、Linux、macOS、Docker、Azure、AWSWindows、Linux、macOS、Docker、Azure、AWS Lambda
.NET运行时支持.NET Standard 2.0 + net8.0,覆盖.NET Framework 4.6.2+、.NET Core、.NET 6/7/8/9.NET Framework 4.6.2+, .NET Core, .NET 6/7/8/9/10
目标市场中级市场到大型企业;需要20+格式的ISV和SI独立开发者、小型企业、中型市场.NET团队、嵌入标准文档自动化的ISV
供应商Aspose Pty LtdIron Software

标题对比很清晰:Aspose在原始格式宽度上胜出,而Iron Suite在捆绑简单性和每产品价格上胜出。 真正需要CAD、3D或DICOM的团队只有一个现实选择;需要PDF + Office + OCR + Barcode的团队是典型的Iron Suite买家。

定价和许可

Aspose.Total发布了一个六层的永久性矩阵以及一个按需按月计费的选项:开发者小型企业$3,999、开发者OEM $11,997、开发者SDK $79,980、站点小型企业$19,995、站点OEM $55,986、站点SDK $199,950,以及部分不限开发者的$1,999/月起的按需计费。 每个永久层包括一年的更新和免费支持; 续费通常较列表价便宜50%。SDK再分发层级明确命名,报价时带有部署数量配额(开发者SDK层50个商业部署,站点SDK层250个)。

Iron Suite作为一个单一永久每开发者许可证销售,分为五个等级(Lite、Plus、Professional、Unlimited和Enterprise),起价$2,998。 市场定位是"全部10个产品以2个的价格,节省75%",基础许可证对许可席位、位置或项目免版税。 SaaS、OEM和基础许可证以外的分布式再分发使用单个,单独定价的再分发附加组件,而不是多层级的SDK矩阵。

实际中的对比:Aspose的矩阵为采购团队提供每种部署形式的层级,但在站点/SDK级别需要谈判。 Iron Suite的平面永久模式为开发者提供了他们可以内部引用的公开数字,而无需涉及销售。

什么是Aspose.Total for .NET

Aspose.Total for .NET是由Aspose Pty Ltd发布的主捆绑包。它将整个Aspose .NET目录(目前有26+个专业化库)组合成一个单一许可证SKU。 该套件面向中级市场和企业团队、系统集成商和需要在服务器端读取、写入或转换几乎所有业务文件格式的ISV,而不依赖于Microsoft Office或Adobe安装。 Aspose单独发布独立节奏的库更新,但将它们整合到同一个Aspose.Total NuGet元包中,并且该套件支持永久每开发者购买和按需按月计费。

关键的捆绑组件和功能:

  • Office格式:Aspose.Words(DOCX),Aspose.Cells(XLSX),Aspose.Slides(PPTX),Aspose.Email(MSG/PST/MBOX)
  • PDF和结构化文档:Aspose.PDF,Aspose.HTML,Aspose.Page(XPS/EPS),Aspose.SVG
  • 图像处理和识别:Aspose.Imaging,Aspose.OCR,Aspose.OMR,Aspose.BarCode
  • 利基/垂直格式:Aspose.CAD(DWG),Aspose.3D(glTF/FBX),Aspose.GIS(Shapefile),Aspose.Tasks(MS Project),Aspose.Diagram(Visio),Aspose.Note(OneNote),Aspose.Finance(XBRL),Aspose.Medical(DICOM)
  • 新增:Aspose.LLM,Aspose.TeX,Aspose.Drawing,Aspose.Font
  • 定价模型:永久开发者/站点/OEM/SDK层级加按需按月计费

什么是Iron Suite

Iron Suite for .NET是由Iron Software发布的捆绑包,将所有十款Iron Software产品打包成一个永久每开发者许可证,以"两款产品的价格购买10款产品,节省75%"的形式营销,许可证起价$2,998。 该套件专为.NET开发者和ISV打造,旨在为几乎每个后端系统中出现的文档任务提供单一、惯用、代码优先的工具包:渲染PDF、操作Word和Excel、运行OCR、生成和读取条形码、抓取网页内容。 相同的组件在Windows、Linux、macOS、Docker、Azure和AWS的.NET Framework 4.6.2+和现代.NET(6/7/8/9/10)上运行。

捆绑的十个产品:

  • IronPDF:HTML到PDF的渲染、PDF编辑、签名、合并
  • IronWord:DOCX的创建和操作
  • IronXL:带有公式计算的Excel读/写
  • IronPPT:PowerPoint的创建和编辑
  • IronOCR:基于Tesseract的OCR与图像预处理
  • IronBarcode:1D/2D条形码的读写
  • IronQR:专用的QR代码库
  • IronPrint:程序化打印
  • IronZIP:ZIP档案的创建和提取
  • IronWebScraper:网页抓取和内容提取

能力比较

文字处理

Word文档生成和DOCX到PDF转换是.NET团队最常见的后端任务之一。 这两个套件都能处理而不需要在服务器上安装Microsoft Word。

// Aspose.Words handles Word document creation, manipulation, and PDF rendering with no Office install.
// NuGet: Install-Package Aspose.Words
using Aspose.Words;
using Aspose.Words.Saving;

class Program
{
    static void Main()
    {
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);

        builder.Font.Size = 18;
        builder.Font.Bold = true;
        builder.Writeln("Quarterly Report");

        builder.Font.Size = 11;
        builder.Font.Bold = false;
        builder.Writeln("Generated from a .NET service with no Microsoft Word dependency.");

        PdfSaveOptions options = new PdfSaveOptions { Compliance = PdfCompliance.PdfA2u };
        doc.Save("report.pdf", options);
    }
}
// Aspose.Words handles Word document creation, manipulation, and PDF rendering with no Office install.
// NuGet: Install-Package Aspose.Words
using Aspose.Words;
using Aspose.Words.Saving;

class Program
{
    static void Main()
    {
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);

        builder.Font.Size = 18;
        builder.Font.Bold = true;
        builder.Writeln("Quarterly Report");

        builder.Font.Size = 11;
        builder.Font.Bold = false;
        builder.Writeln("Generated from a .NET service with no Microsoft Word dependency.");

        PdfSaveOptions options = new PdfSaveOptions { Compliance = PdfCompliance.PdfA2u };
        doc.Save("report.pdf", options);
    }
}
Imports Aspose.Words
Imports Aspose.Words.Saving

Class Program
    Shared Sub Main()
        Dim doc As New Document()
        Dim builder As New DocumentBuilder(doc)

        builder.Font.Size = 18
        builder.Font.Bold = True
        builder.Writeln("Quarterly Report")

        builder.Font.Size = 11
        builder.Font.Bold = False
        builder.Writeln("Generated from a .NET service with no Microsoft Word dependency.")

        Dim options As New PdfSaveOptions With {.Compliance = PdfCompliance.PdfA2u}
        doc.Save("report.pdf", options)
    End Sub
End Class
$vbLabelText   $csharpLabel
// NuGet: Install-Package IronWord
using IronWord;
using IronWord.Models;

class Program
{
    static void Main()
    {
        var doc = new WordDocument();

        var heading = new Paragraph();
        heading.AddChild(new TextRun("Quarterly Report — Q1 2026") { FontSize = 18, Bold = true });
        doc.AddParagraph(heading);

        var body = new Paragraph();
        body.AddChild(new TextRun("Revenue grew 14% quarter-over-quarter."));
        doc.AddParagraph(body);

        doc.SaveAs("report.docx");
    }
}
// NuGet: Install-Package IronWord
using IronWord;
using IronWord.Models;

class Program
{
    static void Main()
    {
        var doc = new WordDocument();

        var heading = new Paragraph();
        heading.AddChild(new TextRun("Quarterly Report — Q1 2026") { FontSize = 18, Bold = true });
        doc.AddParagraph(heading);

        var body = new Paragraph();
        body.AddChild(new TextRun("Revenue grew 14% quarter-over-quarter."));
        doc.AddParagraph(body);

        doc.SaveAs("report.docx");
    }
}
Imports IronWord
Imports IronWord.Models

Module Program
    Sub Main()
        Dim doc As New WordDocument()

        Dim heading As New Paragraph()
        heading.AddChild(New TextRun("Quarterly Report — Q1 2026") With {.FontSize = 18, .Bold = True})
        doc.AddParagraph(heading)

        Dim body As New Paragraph()
        body.AddChild(New TextRun("Revenue grew 14% quarter-over-quarter."))
        doc.AddParagraph(body)

        doc.SaveAs("report.docx")
    End Sub
End Module
$vbLabelText   $csharpLabel

Aspose.Words使用了一种从其较旧的API设计中继承的DocumentBuilder光标模式,并在保存选项上直接公开PDF/A合规级别。 IronWord使用一种显式段落/文本运行对象图,更接近底层OOXML模型,并在现代C#中自然阅读。 两者产生相等的输出; IronWord的示例比Aspose.Words短大约3行,而Aspose.Words在一个调用上暴露更多的PDF导出调优表面。

Excel处理

带有公式重新计算的Excel操作是另一项几乎普遍的Office工作负载。 两个套件都可以写入XLSX,服务器端计算公式,并导出为PDF。

// Aspose.Cells provides a full XLSX engine including formula calculation, charts, and PDF export.
using Aspose.Cells;

class Program
{
    static void Main()
    {
        Workbook book = new Workbook();
        Worksheet sheet = book.Worksheets[0];

        sheet.Cells["A1"].PutValue("Region");
        sheet.Cells["B1"].PutValue("Revenue");
        sheet.Cells["A2"].PutValue("EMEA");
        sheet.Cells["B2"].PutValue(120000);
        sheet.Cells["B4"].Formula = "=SUM(B2:B3)";
        book.CalculateFormula();

        book.Save("revenue.xlsx", SaveFormat.Xlsx);
        book.Save("revenue.pdf", SaveFormat.Pdf);
    }
}
// Aspose.Cells provides a full XLSX engine including formula calculation, charts, and PDF export.
using Aspose.Cells;

class Program
{
    static void Main()
    {
        Workbook book = new Workbook();
        Worksheet sheet = book.Worksheets[0];

        sheet.Cells["A1"].PutValue("Region");
        sheet.Cells["B1"].PutValue("Revenue");
        sheet.Cells["A2"].PutValue("EMEA");
        sheet.Cells["B2"].PutValue(120000);
        sheet.Cells["B4"].Formula = "=SUM(B2:B3)";
        book.CalculateFormula();

        book.Save("revenue.xlsx", SaveFormat.Xlsx);
        book.Save("revenue.pdf", SaveFormat.Pdf);
    }
}
Imports Aspose.Cells

Class Program
    Shared Sub Main()
        Dim book As New Workbook()
        Dim sheet As Worksheet = book.Worksheets(0)

        sheet.Cells("A1").PutValue("Region")
        sheet.Cells("B1").PutValue("Revenue")
        sheet.Cells("A2").PutValue("EMEA")
        sheet.Cells("B2").PutValue(120000)
        sheet.Cells("B4").Formula = "=SUM(B2:B3)"
        book.CalculateFormula()

        book.Save("revenue.xlsx", SaveFormat.Xlsx)
        book.Save("revenue.pdf", SaveFormat.Pdf)
    End Sub
End Class
$vbLabelText   $csharpLabel
// NuGet: Install-Package IronXL.Excel
using IronXL;

class Program
{
    static void Main()
    {
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet sheet = workbook.CreateWorkSheet("Sales");

        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Units";
        sheet["A2"].Value = "Widget A";
        sheet["B2"].Value = 1024;
        sheet["A3"].Value = "Widget B";
        sheet["B3"].Value = 768;
        sheet["B4"].Formula = "=SUM(B2:B3)";

        workbook.EvaluateAll();
        workbook.SaveAs("sales.xlsx");
    }
}
// NuGet: Install-Package IronXL.Excel
using IronXL;

class Program
{
    static void Main()
    {
        WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        WorkSheet sheet = workbook.CreateWorkSheet("Sales");

        sheet["A1"].Value = "Product";
        sheet["B1"].Value = "Units";
        sheet["A2"].Value = "Widget A";
        sheet["B2"].Value = 1024;
        sheet["A3"].Value = "Widget B";
        sheet["B3"].Value = 768;
        sheet["B4"].Formula = "=SUM(B2:B3)";

        workbook.EvaluateAll();
        workbook.SaveAs("sales.xlsx");
    }
}
Imports IronXL

Module Program
    Sub Main()
        Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
        Dim sheet As WorkSheet = workbook.CreateWorkSheet("Sales")

        sheet("A1").Value = "Product"
        sheet("B1").Value = "Units"
        sheet("A2").Value = "Widget A"
        sheet("B2").Value = 1024
        sheet("A3").Value = "Widget B"
        sheet("B3").Value = 768
        sheet("B4").Formula = "=SUM(B2:B3)"

        workbook.EvaluateAll()
        workbook.SaveAs("sales.xlsx")
    End Sub
End Module
$vbLabelText   $csharpLabel

Aspose.Cells暴露了更深的公式和图表表面(450+内置功能、条件格式和PDF导出为一流),如果您的工作流包括复杂的Excel自动化,它是更强的选择。 IronXL涵盖了日常读/写/重算范围,使用基于索引器的API(workbook.EvaluateAll()),大多数.NET开发者能立刻阅读。

条形码生成和读取

条形码工作负载在Aspose中作为一个库提供,在Iron Suite中作为两个专用产品提供:IronBarcode用于1D/2D符号学,IronQR专用于QR。 以下是Aspose的生成示例代码; IronBarcode的示例代码展示了读取路径,这是更具挑战性的方向。 两个库都支持双向的写入和读取。

// Aspose.BarCode generates and recognizes 1D, 2D, and postal symbologies across the suite.
using Aspose.BarCode.Generation;

class Program
{
    static void Main()
    {
        BarcodeGenerator code128 = new BarcodeGenerator(EncodeTypes.Code128, "ORDER-44213");
        code128.Parameters.Resolution = 300;
        code128.Save("code128.png", BarCodeImageFormat.Png);

        BarcodeGenerator qr = new BarcodeGenerator(EncodeTypes.QR, "https://example.com/track/44213");
        qr.Save("qr.png", BarCodeImageFormat.Png);
    }
}
// Aspose.BarCode generates and recognizes 1D, 2D, and postal symbologies across the suite.
using Aspose.BarCode.Generation;

class Program
{
    static void Main()
    {
        BarcodeGenerator code128 = new BarcodeGenerator(EncodeTypes.Code128, "ORDER-44213");
        code128.Parameters.Resolution = 300;
        code128.Save("code128.png", BarCodeImageFormat.Png);

        BarcodeGenerator qr = new BarcodeGenerator(EncodeTypes.QR, "https://example.com/track/44213");
        qr.Save("qr.png", BarCodeImageFormat.Png);
    }
}
Imports Aspose.BarCode.Generation

Class Program
    Shared Sub Main()
        Dim code128 As New BarcodeGenerator(EncodeTypes.Code128, "ORDER-44213")
        code128.Parameters.Resolution = 300
        code128.Save("code128.png", BarCodeImageFormat.Png)

        Dim qr As New BarcodeGenerator(EncodeTypes.QR, "https://example.com/track/44213")
        qr.Save("qr.png", BarCodeImageFormat.Png)
    End Sub
End Class
$vbLabelText   $csharpLabel
// NuGet: Install-Package IronBarcode
using IronBarCode;

class Program
{
    static void Main()
    {
        var results = BarcodeReader.Read("shipment-label.png");

        foreach (var barcode in results)
        {
            Console.WriteLine($"Value: {barcode.Value}");
            Console.WriteLine($"Format: {barcode.BarcodeType}");
        }
    }
}
// NuGet: Install-Package IronBarcode
using IronBarCode;

class Program
{
    static void Main()
    {
        var results = BarcodeReader.Read("shipment-label.png");

        foreach (var barcode in results)
        {
            Console.WriteLine($"Value: {barcode.Value}");
            Console.WriteLine($"Format: {barcode.BarcodeType}");
        }
    }
}
Imports IronBarCode

Class Program
    Shared Sub Main()
        Dim results = BarcodeReader.Read("shipment-label.png")

        For Each barcode In results
            Console.WriteLine($"Value: {barcode.Value}")
            Console.WriteLine($"Format: {barcode.BarcodeType}")
        Next
    End Sub
End Class
$vbLabelText   $csharpLabel

Aspose.BarCode使用一个由BarcodeReader),这在现代.NET中读起来更自然,为QR扫描工作流提供了专用的、优化的路径通过IronQR。

PDF生成和合并

PDF是这两个套件风格差异最大的地方。 Aspose.PDF在页面对象图的基础上逐个构建文档; IronPDF使用真正的浏览器引擎从HTML进行渲染。

// Aspose.PDF creates, edits, and merges PDF documents independent of Adobe.
using Aspose.Pdf;

class Program
{
    static void Main()
    {
        Document combined = new Document();
        foreach (string path in new[] { "invoice.pdf", "terms.pdf", "appendix.pdf" })
        {
            Document part = new Document(path);
            combined.Pages.Add(part.Pages);
        }
        combined.Save("merged.pdf");
    }
}
// Aspose.PDF creates, edits, and merges PDF documents independent of Adobe.
using Aspose.Pdf;

class Program
{
    static void Main()
    {
        Document combined = new Document();
        foreach (string path in new[] { "invoice.pdf", "terms.pdf", "appendix.pdf" })
        {
            Document part = new Document(path);
            combined.Pages.Add(part.Pages);
        }
        combined.Save("merged.pdf");
    }
}
Imports Aspose.Pdf

Class Program
    Shared Sub Main()
        Dim combined As New Document()
        For Each path As String In {"invoice.pdf", "terms.pdf", "appendix.pdf"}
            Dim part As New Document(path)
            combined.Pages.Add(part.Pages)
        Next
        combined.Save("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel
// NuGet: Install-Package IronPdf
// Docs: https://ironpdf.com/how-to/merge-or-split-pdfs/
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // PdfDocument.Merge accepts an array or params list of PdfDocument objects.
        // Order is preserved, and metadata, bookmarks, and annotations are retained.
        string[] inputs = { "invoice.pdf", "terms.pdf", "appendix.pdf" };

        List<PdfDocument> parts = new List<PdfDocument>();
        foreach (string path in inputs)
            parts.Add(PdfDocument.FromFile(path));

        PdfDocument merged = PdfDocument.Merge(parts.ToArray());
        merged.SaveAs("contract-package.pdf");
    }
}
// NuGet: Install-Package IronPdf
// Docs: https://ironpdf.com/how-to/merge-or-split-pdfs/
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // PdfDocument.Merge accepts an array or params list of PdfDocument objects.
        // Order is preserved, and metadata, bookmarks, and annotations are retained.
        string[] inputs = { "invoice.pdf", "terms.pdf", "appendix.pdf" };

        List<PdfDocument> parts = new List<PdfDocument>();
        foreach (string path in inputs)
            parts.Add(PdfDocument.FromFile(path));

        PdfDocument merged = PdfDocument.Merge(parts.ToArray());
        merged.SaveAs("contract-package.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic

Module Program
    Sub Main()
        ' PdfDocument.Merge accepts an array or params list of PdfDocument objects.
        ' Order is preserved, and metadata, bookmarks, and annotations are retained.
        Dim inputs As String() = {"invoice.pdf", "terms.pdf", "appendix.pdf"}

        Dim parts As New List(Of PdfDocument)()
        For Each path As String In inputs
            parts.Add(PdfDocument.FromFile(path))
        Next

        Dim merged As PdfDocument = PdfDocument.Merge(parts.ToArray())
        merged.SaveAs("contract-package.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

Aspose.PDF公开了用于细粒度编辑(合并、拆分、修订、页面树操作)的低级粒度页面对象模型。 IronPDF的PdfDocument API直接在PDF对象模型上涵盖相同的操作(HTML往返仅在创建时发生,不在操作过程中):RedactTextOnAllPages(...)用于文本修订。 IronPDF通过RenderHtmlAsPdfUA(html)在一次调用中生成带标记的可访问PDF(默认PDF/UA-1; 也支持PDF/UA-2),记录可直接符合第508节和WCAG 2.0 AA。 两种套件在从Web应用数据创建PDF时差异最大:IronPDF使用开发者已经为浏览器编写的相同HTML/CSS生成由Chrome渲染的PDF(现代CSS、Web字体、SVG)通过捆绑的Chromium单包安装; Aspose.PDF在页面画布上逐个构建文档。

PowerPoint导出

在Aspose.Slides中以一流库形式提供PowerPoint操作。 Iron Suite的IronPPT也涵盖PowerPoint生成,但其定位为创建/操作库,而不是一个深度的PPTX功能对等表面。

// Aspose.Slides handles PowerPoint creation, manipulation, and export to PDF or images.
using Aspose.Slides;
using Aspose.Slides.Export;

class Program
{
    static void Main()
    {
        using (Presentation pres = new Presentation())
        {
            ISlide slide = pres.Slides[0];
            IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 600, 80);
            shape.TextFrame.Text = "Aspose.Slides exports PPTX without PowerPoint installed.";
            pres.Save("deck.pptx", SaveFormat.Pptx);
            pres.Save("deck.pdf", SaveFormat.Pdf);
        }
    }
}
// Aspose.Slides handles PowerPoint creation, manipulation, and export to PDF or images.
using Aspose.Slides;
using Aspose.Slides.Export;

class Program
{
    static void Main()
    {
        using (Presentation pres = new Presentation())
        {
            ISlide slide = pres.Slides[0];
            IAutoShape shape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 600, 80);
            shape.TextFrame.Text = "Aspose.Slides exports PPTX without PowerPoint installed.";
            pres.Save("deck.pptx", SaveFormat.Pptx);
            pres.Save("deck.pdf", SaveFormat.Pdf);
        }
    }
}
Imports Aspose.Slides
Imports Aspose.Slides.Export

Class Program
    Shared Sub Main()
        Using pres As New Presentation()
            Dim slide As ISlide = pres.Slides(0)
            Dim shape As IAutoShape = slide.Shapes.AddAutoShape(ShapeType.Rectangle, 50, 50, 600, 80)
            shape.TextFrame.Text = "Aspose.Slides exports PPTX without PowerPoint installed."
            pres.Save("deck.pptx", SaveFormat.Pptx)
            pres.Save("deck.pdf", SaveFormat.Pdf)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel
// NuGet: Install-Package IronPPT
// Docs: https://ironsoftware.com/csharp/ppt/docs/
using IronPPT;
using IronPPT.Models;

class Program
{
    static void Main()
    {
        // PresentationDocument is the entry point for PPTX creation in IronPPT.
        // No Microsoft PowerPoint or Office Interop required.
        PresentationDocument document = new PresentationDocument();

        Slide titleSlide = new Slide();
        titleSlide.AddText("Quarterly Update");
        document.AddSlide(titleSlide);

        Slide bodySlide = new Slide();
        bodySlide.AddText("Generated from .NET, no PowerPoint dependency.");
        document.AddSlide(bodySlide);

        document.Save("update.pptx");
    }
}
// NuGet: Install-Package IronPPT
// Docs: https://ironsoftware.com/csharp/ppt/docs/
using IronPPT;
using IronPPT.Models;

class Program
{
    static void Main()
    {
        // PresentationDocument is the entry point for PPTX creation in IronPPT.
        // No Microsoft PowerPoint or Office Interop required.
        PresentationDocument document = new PresentationDocument();

        Slide titleSlide = new Slide();
        titleSlide.AddText("Quarterly Update");
        document.AddSlide(titleSlide);

        Slide bodySlide = new Slide();
        bodySlide.AddText("Generated from .NET, no PowerPoint dependency.");
        document.AddSlide(bodySlide);

        document.Save("update.pptx");
    }
}
Imports IronPPT
Imports IronPPT.Models

Module Program
    Sub Main()
        ' PresentationDocument is the entry point for PPTX creation in IronPPT.
        ' No Microsoft PowerPoint or Office Interop required.
        Dim document As New PresentationDocument()

        Dim titleSlide As New Slide()
        titleSlide.AddText("Quarterly Update")
        document.AddSlide(titleSlide)

        Dim bodySlide As New Slide()
        bodySlide.AddText("Generated from .NET, no PowerPoint dependency.")
        document.AddSlide(bodySlide)

        document.Save("update.pptx")
    End Sub
End Module
$vbLabelText   $csharpLabel

Aspose.Slides在与PowerPoint文件格式规范匹配的范围(动画、过渡、高级形状几何、SmartArt)上更全面。 IronPPT涵盖常见的操作范围(幻灯片、文本、图像、基本形状),具有与Iron Suite其余部分相同的惯用感觉。PPT需求以创建和导出为主的团队可以得到很好的服务; 对现有的幻灯片组进行深度格式保真的团队将在这里倾向于选用Aspose。

为何选择Iron Suite进行代码优先的.NET文档自动化

对于文档工作负载由日常(来自Web应用数据的PDF、Word和Excel报告、扫描上传的OCR、运单上的条码)形成的.NET团队来说,Iron Suite是专为该目标而构建的。 这十个产品共享惯用的C# API表面、单一的许可证注册模型和单一的供应商关系。没有SDK矩阵需要协商,没有计量器在计数,也没有服务器上的Office或Adobe安装依赖。 对于代码优先的.NET文档工作至关重要的结构优势:

  • 单一捆绑、透明的永久定价:包括Entreprise在内的每个层级的公开美元数额
  • 许可席位免版税部署为开箱即用; SaaS/OEM通过一个干净的再分发附加组件
  • 在一个捆绑内创建识别(PDF/Word/Excel创建外加OCR/Barcode/QR识别)
  • HTML优先的PDF生成,使PDF与用户在屏幕上看到的Chrome渲染一致
  • 没有运行时费用没有按文档计量

Iron Suite如何不同于Aspose.Total

  • 每层公开的美元定价,包括Enterprise。Aspose的Site和SDK层通常需要采购谈判; Iron Suite在公共页面上提供了每层的单个数字。
  • 单一捆绑、单一SKU、单一许可证文件,而不是一个具有每库评估水印行为的26个包的传递依赖树在试用期间的表现。
  • HTML优先的PDF渲染具备完整的浏览器保真度(CSS、Web字体、SVG),与Aspose.PDF的逐个孤立页面画布API相比。
  • 基础捆绑中的识别堆栈(OCR + Barcode + QR),没有单独的计量计数器或按页收费;Aspose.OCR内含于Aspose.Total中,但更广泛的分发场景可能需要OEM级别许可证。
  • 所有10个产品的惯用.NET API表面,没有EncodeTypes风格的单类加选项模式,没有从旧API中继承的DocumentBuilder光标。
  • 范围学科。 Aspose追逐地球上的每个业务文件格式(CAD、GIS、3D、DICOM、XBRL); Iron Suite有意专注于排名前10的高切割率类别。 对于不需要那些利基格式的团队,Iron Suite捆绑是一个更干净的匹配,并且有一个显著更低的入门价格。

结论

Aspose.Total和Iron Suite实际上并不是直接替代品; 它们回答了不同的问题。 Aspose.Total是当问题是"我们需要读或写所有客户可能会给出的文件格式"时的正确答案,尤其是当该列表包括CAD、3D、GIS、MS Project、XBRL或DICOM时。 当问题是"我们需要一个捆绑在一起,具有一个许可证和公开价格的PDF、Word、Excel、OCR和条形码"时,Iron Suite是正确答案。对于正在实际跨越20多个格式的中级市场和企业集成商和ISV,Aspose的矩阵值回票价。而对于工作负载总是处于前十类的.NET团队更广泛人群,Iron Suite提供相同的主要结果而且有一个显著更低的TCO,附带一个永久的免版税许可证。 在ironsoftware.com/csharp/suite上探索Iron Suite,包括$2,998入门级。

请注意Aspose.Total是其所属者的注册商标。 本网站与Aspose.Total无关,未获得其认可或支持。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。