IRONSOFTWAREHOME
与其他组件比较

Spire.Barcode与IronBarcode: 类型规范、PDF支持及定价比较

Curtis Chau
Curtis Chau
Updated: 2026年4月26日

Spire.Barcode在读取时需要条码类型:scanner.Scan(path, BarCodeType.Code128)。 如果您正在处理条形码格式不限的文档,则必须先编写格式检测循环才能提取值。 这项 API 决策决定了您使用 Spire.Barcode 构建条形码扫描工作流程的方方面面,因此在您决定采用它之前,有必要了解它。

了解 Spire.Barcode

Spire.Barcode 是一个商业.NET条形码库,由中国软件公司 E-iceblue 开发,该公司还生产 Spire.Doc、Spire.XLS 和 Spire.PDF 产品线。 该库支持对各种一维和二维条码进行生成和读取,并且旨在与更广泛的 E-iceblue 文档处理生态系统集成。

E-iceblue发布了两个软件包:免费的Spire.Barcode。 免费套餐是永久限量产品,并有意设置了诸多限制,而不是限时试用。 商业版软件包解锁了完整的符号集,并取消了免费版中的限制,但需要单独购买许可证,才能用于任何其他 Spire 产品。

Spire.Barcode 的主要架构特征包括:

  • 必须的BarCodeType参数: 每次调用BarCodeType枚举值。 没有只接受文件路径并执行自动格式检测的过载函数。
  • 设置对象生成模型: 条码生成围绕一个可变的BarCodeGenerator实例,在产生任何输出之前需要多次属性分配。 -不支持原生 PDF: Spire.Barcode 无法直接从 PDF 文件中读取条形码。 基于PDF的工作流需要一个单独的Spire.PDF软件包、一个单独的许可证,以及由开发人员编写的手动页面和图像提取代码。
  • **FreeSpire.Barcode 免费版限制:**免费版会在生成的条形码上应用大型评估水印,故意降低扫描性能,限制可用的符号集,并且需要从 E-iceblue 获取注册密钥才能抑制警告对话框。
  • **E-iceblue 生态系统集成:**已经使用 Spire.Doc 或 Spire.XLS 的团队可能会发现 API 的熟悉性和潜在的捆绑定价很有益处。 单独使用 Spire.Barcode 的团队需要承担完整的产品许可费用,而无法享受生态系统带来的好处。
  • 返回类型: string[],不包含格式元数据。 检测到的类型未包含在结果中。

类型规格要求

Spire.Barcode的BarcodeScanner.Scan()没有接受仅文件路径的重载。 每次读取操作都要求调用代码预先声明条形码格式。 对于单一格式的工作流程,这种方法是可行的,但对于混合格式的文档处理,它会产生一个候选迭代循环:

// Spire.Barcode: multi-format detection iterates through candidate types
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };

string foundValue = null;
foreach (var type in candidates)
{
    string[] found = scanner.Scan("barcode.png", type);
    if (found.Length > 0)
    {
        foundValue = found[0];
        break;
    }
}

候选数组中每增加一种类型,就需要额外进行一次扫描。 列表中未包含的任何格式都会被默默忽略。 开发人员负责维护详尽的类型清单,并在新格式进入工作流程时进行重新测试。

了解IronBarcode

IronBarcode是由Iron Software开发的商业.NET条形码库。 它通过静态 API 模型提供条形码读取和生成功能,无需实例管理。 该库以单个NuGet包的形式提供,包含原生 PDF 和图像处理支持,无需额外的依赖项。

IronBarcode 的读取引擎可在一次扫描过程中自动检测 50 多种条码格式。 由BarcodeReader.Read()返回的结果对象包含检测到的格式、解码值,以及上下文元数据,如PDF来源的页码和源图像内的边界坐标。

IronBarcode的主要特点包括:

  • 自动格式检测: BarcodeReader.Read()不需要类型参数。 该库在扫描过程中识别符号系统,并将其包含在结果对象中。
  • 单一包PDF支持: BarcodeReader.Read()可以直接接受PDF文件,无需额外的NuGet包、许可证或手动页面提取代码。
  • 流畅的生成API: BarcodeWriter.CreateBarcode()是一个静态工厂方法,返回一个可级联对象,用于以单一表达式调整大小、样式和保存。 -试用模式功能齐全: IronBarcode试用版与授权产品使用相同的软件包,提供完整的读取速度、完整的符号体系支持和完整的功能集。 试用模式下生成的输出带有一个小的边缘水印; 阅读行为不受影响。
  • BarcodeReaderOptions进行调谐: 读取速度、多条码检测、图像预处理、预期符号过滤器都可以在不切换库产品的情况下进行配置。
  • 包含元数据的结果对象: PageNumber和图像区域数据。

功能对比

下表总结了 Spire.Barcode 和IronBarcode之间的主要区别:

特征Spire.BarcodeIronBarcode
条形码读取是的(需要 BarCodeType 类型)是的(自动检测)
条形码生成
自动格式检测
原生 PDF 支持否(需要 Spire.PDF)
免费套餐FreeSpire.条形码(受限)试用模式(完整功能)
符号计数~38(商业)50岁以上
许可模式按席位分级和订阅永久支持(可选)

详细功能对比

特征Spire.BarcodeIronBarcode
阅读
自动格式检测
条形码类型必填
返回格式元数据
每张图片包含多个条形码
阅读速度控制是的(条形码读取器选项)
机器学习辅助纠错
一代
API模型设置对象 + 生成器具有流畅链的静态工厂
带有自定义徽标的二维码仅限商业层级所有级别
输出格式图片(PNG、JPEG、BMP)PNG、JPEG、BMP、SVG、HTML、流媒体
流畅的链式
PDF 支持
从 PDF 中读取条形码需要 Spire.PDF原生应用,无需额外软件包
结果中的页码手动跟踪
需要额外许可证是的(Spire.PDF)
平台
.NET Framework
.NET Core / .NET 5+
Docker / Linux
符号学
一维条码(Code128、Code39、EAN、UPC)
二维码(QR码、DataMatrix码、PDF417码)
符号总数~38(商业)50岁以上
许可
免费套餐FreeSpire.条形码(带水印,图像质量下降)试用模式(全速播放,小水印)
免费套餐需要注册
许可模式按席位永久使用权 + 订阅永久有效,可续期。
定价切入点$999/年(站点订阅)$999(Lite,永久)

条形码读取

Spire.条形码方法

Spire.Barcode的BarCodeType参数。 当格式已知且有保证时,单类型调用是合适的:

// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);

foreach (string value in results)
{
    Console.WriteLine(value);
}

当格式事先未知时,唯一可行的方法是遍历候选类型。每次遍历都是一次完整的扫描,任何不在列表中的格式都会被忽略。 结果是一个string[],不携带类型信息,因此基于格式的下游路由需要调用者进行额外的状态管理。

IronBarcode方法

IronBarcode的BarcodeReader.Read()不需要类型参数。 该库只需一次扫描即可自动检测所有受支持符号体系的格式。 无论源图像包含多少种不同的条形码格式,从图像中读取条形码都只需要一次方法调用:

// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");

foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}

每个结果对象包括Value和位置元数据。 基于格式的下游路由不需要额外的状态——类型本身就存在于结果中。

免费套餐限制

Spire.Barcode 免费层

FreeSpire.Barcode 会在生成的条形码图像上应用大型评估水印。 水印覆盖了条形码,使其不适合生产使用,并妨碍了对生产质量的有效评估。 免费版有意降低了扫描性能,这意味着评估期间进行的吞吐量测量并不能代表 Spire.Barcode 的商业性能。 免费版软件包还需要从 E-iceblue 获取注册密钥,才能在执行过程中抑制警告对话框。 免费版提供的符号集是商业版符号集的子集。 这些限制共同意味着,基于 FreeSpire.Barcode 进行的评估并不能准确反映商业产品的功能。

IronBarcode试用模式

IronBarcode 的试用版是无需许可证密钥即可使用的授权软件包。 阅读功能以全速运行,支持所有符号,且无行为限制。 阅读速度和准确度选项在试用模式和授权模式下表现完全相同。 试用模式下生成的条形码输出图像边缘带有一个小水印; 它不会遮挡条形码本身。 IronBarcode评估期间测量的行为就是最终部署到生产环境中的行为。

方面FreeSpire.BarcodeIronBarcode试用
生成输出上的水印大号,覆盖条形码仅图像边缘很小
阅读表现故意降低全速
符号学支持付费版本的有限子集全套(50多种)
需要注册是的(E-iceblue提供的免费钥匙)
可用功能有限子集完整功能集
时限None30天

PDF条形码支持

Spire.条形码方法

Spire.Barcode本身不具备PDF读取功能。 为了从PDF文件中提取条码,开发人员必须安装单独的Spire.PDF软件包,购买单独的Spire.PDF许可证,并在开始条码扫描之前编写手动页面迭代和图像提取代码:

// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;

var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");

var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
    var images = page.ExtractImages();
    foreach (var image in images)
    {
        // BarCodeType is still required for each scan call
        string[] results = scanner.Scan(image, BarCodeType.QRCode);
    }
}

此模式需要两个NuGet包、两份许可协议以及开发人员编写的页面管理代码。 如果条形码嵌入在 PDF 的矢量内容中而不是栅格图像中,则图像提取方法可能会完全错过它们。

IronBarcode方法

IronBarcode可原生处理 PDF 文件,无需任何额外依赖。 从PDF文档中读取条码是使用与图像文件相同的BarcodeReader.Read()API的单个方法调用。 每个结果对象中都包含页码:

// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}

无需手动提取页面,无需二级软件包,也无需购买额外许可证。

生成 API

Spire.条形码方法

Spire.Barcode的生成模型集中在一个可变的BarcodeSettings配置对象上。 开发人员实例化设置,分别分配属性,将设置对象传递给GenerateImage()

// Spire.Barcode generation
using Spire.Barcode;

BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;

BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);

可变设置对象意味着,当在多个生成操作中重用单个实例时,配置可能会意外地在多个调用之间共享。 生成器类增加了一个额外的实例化步骤,该步骤本身不包含任何配置逻辑。

IronBarcode方法

IronBarcode使用静态工厂方法,并可选地进行流畅的链式调用。 没有设置对象,也没有生成器实例需要管理:

//IronBarcodegeneration
using IronBarCode;

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");

所有IronBarcode许可级别均提供带有自定义徽标的二维码:

var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");

定价

Spire.Barcode发布的定价涵盖内部使用站点许可证和OEM部署层级:

许可证价格部署
站点许可证(仅限于内部使用)$1,398单一位置
站点订阅(1年更新/支持)每年999美元单一位置
开发者OEM订阅$3,395/年面向公众 / 云 / Docker
网站OEM订阅$10,187/年面向公众 / 云 / Docker(最多10名开发人员)

仅OEM层允许面向公众的网站、Docker或云应用程序的部署。 Site(非OEM)层仅限于在一个地理位置内部使用。 如果还需要 Spire.PDF 来进行 PDF 条形码提取,则该许可证需要额外付费。

IronBarcode licensing使用四个永久层级:

许可证价格开发者
一点$9991
Plus$1,4993
专业$2,99910
无限制$5,999无限制

所有级别均为永久有效,并可选择添加年度支持和更新订阅。 Spire.Barcode 的 Site Subscription为一支五人的团队每年支付$999以获得更新和支持; 等价的IronBarcode Professional层涵盖最多十名开发人员,一次性支付$2,399,无需续订。

API 映射参考

Spire.BarcodeIronBarcode
new BarcodeScanner()静态BarcodeReader.Read()
scanner.Scan(path, BarCodeType.X)BarcodeReader.Read(path)
BarCodeType.Code128 (必需参数)自动检测; 无需等效物
string[] resultsBarcodeResults 集合
results[0] (字符串)results[0].Value (字符串)
new BarcodeSettings()BarcodeWriter.CreateBarcode() 的参数
settings.Type = BarCodeType.Code128BarcodeEncoding.Code128 作为第二个参数
settings.Data = "value"CreateBarcode() 的第一个参数
new BarCodeGenerator(settings)不需要; 静态工厂取代了这一点
generator.GenerateImage() + image.Save().SaveAsPng(path).SaveAsJpeg(path)
Spire.PDF (用于PDF读取)不需要; 内置原生PDF支持
Spire.License.LicenseProvider.SetLicenseKey("key")IronBarCode.License.LicenseKey = "key"

当团队考虑从 Spire.Barcode 迁移到IronBarcode时

混合格式文档处理

最初只使用一种条形码格式的团队,往往会发现随着时间的推移,其条形码格式会变得越来越多样化。例如,一个最初使用 Code128 标签的仓储应用,现在可能会收到供应商使用 DataMatrix、GS1-128 或二维码的货物。 每次有新格式进入工作流程时,都需要更新类型猜测循环中的候选数组,重新测试检测逻辑,并确认迭代顺序不会改变现有格式。 当格式多样性达到一定程度,使得该循环的维护开销成为持续的开发成本时,团队会评估自动检测是否可以完全消除这种负担。

PDF集成

文档密集型应用程序经常会遇到需要从 PDF 文件而不是独立图像中提取条形码的情况。 在 Spire.Barcode 工作流程中,这种转变需要获得 Spire.PDF 许可证,集成第二个软件包,并编写页面迭代和图像提取基础架构,然后才能进行任何条形码读取。 如果团队在最初购买时没有预料到这一要求,他们就会发现自己需要管理两个产品许可证和两个 API 接口,而这项任务在概念上属于条形码读取。 发现 PDF 支持需要单独购买,是促使用户重新评估产品选择的常见原因。

免费层级评估限制

评估过 FreeSpire.Barcode 并购买了商业许可证的团队有时会报告说,商业产品的表现与他们的评估结果有所不同。 这是有意为之:免费层级故意降低读取性能并限制符号集,这意味着在评估期间进行的基准测试和格式覆盖率测试无法转移到商业部署中。 当团队在购买后发现这种差异时,他们通常会寻找替代品,这些替代品的试用行为能够代表生产行为。

减少产品数量

对技术栈进行标准化的组织有时会将 Spire.Barcode 视为不断增长的 E-iceblue 产品库中的一个组件,每个组件都有自己的许可费用和续订周期。 如果 Spire.Barcode 的主要驱动力是在文档处理流程中读取条形码,而不是与 Spire.Doc 或 Spire.XLS 深度集成,那么团队会评估一个独立的条形码库是否可以降低许可复杂性和支持范围。

常见迁移注意事项

移除 BarCodeType 参数

Spire.Barcode代码库中每个BarCodeType 参数。 用BarcodeReader.Read()替换这些调用会完全去除类型参数。 类型猜测循环——foreach块遍历候选BarCodeType值——可以全部删除; 一个单一的BarcodeReader.Read()调用取代整个循环。

更新退货类型

Spire.Barcode的string[]。 IronBarcode返回一个BarcodeResults集合。 分配给string[]或将结果传递给期望该类型的方法的调用点需要更新。 提取值作为数组使用.Select(r => r.Value).ToArray(); 访问第一个结果使用.First()?.Value

移除 Spire.PDF 包

如果只为支持从PDF文件提取条码而安装了Spire.PDF,在迁移到IronBarcode之后可以将其删除。 所有的BarcodeReader.Read("file.pdf")调用替代。 如果Spire.PDF用于条码提取之外的其他文档操作,应该保留,只有条码相关的代码路径替换。

命名空间变更

using IronBarCode;。 用于生成的BarcodeEncoding替换,读取时不需要等效物。 许可证初始化从IronBarCode.License.LicenseKey属性分配。

##IronBarcode的其他功能

以上对比中未涵盖以下IronBarcode功能:

  • 批量图像读取Bitmap实例,启用批量处理而无需手动遍历输入集合。
  • **BarcodeReaderOptions:**读取速度、多条码检测、最大候选项和图像增强预处理可以通过单个选项对象配置,传递给Read()
  • SVG和HTML输出:.SaveAsHtmlFile(),除了光栅图像格式,还能提供网络可嵌入的条码输出。
  • 带标志的QR码:AddBrandLogo(),允许在QR码中心合成自定义图像,而在合适的错误纠正级别上不影响扫描可靠性。
  • **流和字节数组输出:**生成的条码可以导出为byte[],用于直接存储或HTTP响应写入,无需中间文件。
  • GS1-128 和结构化符号体系: IronBarcode包含对结构化 GS1 符号体系的支持,而 Spire.Barcode 商业版则不包含这些支持。

.NET兼容性和未来准备情况

IronBarcode支持.NET Framework 4.6.2及更高版本、.NET Core 3.1和当前的.NET版本。 该库在Windows、Linux和macOS上进行了测试,并可在Docker容器中运行无需额外本地依赖配置。 Spire.Barcode 也支持跨平台.NET部署,但其 Linux 和 Docker 配置可能需要根据所使用的版本进行额外的本地库设置。IronBarcode的定期发布节奏确保了新的 C# 语言特性和.NET运行时改进与平台兼容性更新一起被纳入其中。

结论

Spire.Barcode 和IronBarcode从根本上不同的角度看待条形码读取问题。 Spire.Barcode 将格式知识置于调用者身上——每次扫描操作都需要开发人员预先声明符号体系,这在封闭格式的工作流程中是一个可行的限制,但在开放格式的工作流程中则是一个维护负担。 IronBarcode将格式检测功能放在库内部,不需要类型参数,并将检测到的格式作为结果的一部分返回。

Spire.Barcode 对于处理单一有保证的条形码格式的应用程序来说是一个合理的选择,特别是当团队已经投入到 E-iceblue 产品生态系统中时。 设置对象生成模型对于喜欢显式配置的开发者来说很熟悉,而且商业许可对于单个开发者的项目来说也很有竞争力。 能够保证每次调用BarCodeType.Code128的团队在强制类型参数上无需支付任何实际成本。

IronBarcode更适合格式多样性不可预测或不断增长的应用,PDF 条形码提取是首要要求,以及评估准确性很重要的应用。 试验以全生产速度和全套符号集运行,使得评估期间进行的性能基准测试和格式覆盖率测试可以直接应用于生产部署。 原生 PDF 支持省去了对辅助库的需求以及相关的许可费用。 对于正在考虑使用IronBarcode作为 Spire.Barcode 替代方案的团队, Spire.Barcode 替代方案概述提供了有关比较的更多背景信息。

最终的决定取决于格式的可预测性和工作流程的范围。 对于采用固定 Code128 标签标准且没有 PDF 源文档的仓库系统而言,没有实际理由优先选择IronBarcode的自动检测功能。 对于从外部供应商接收条形码、处理混合符号体系并读取 PDF 附件的文档处理流程而言,强制性的类型参数和双库 PDF 要求会带来持续的维护成本,而IronBarcode可以消除这些成本。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户