GrapeCity Barcode 与 IronBarcode:C# 条形码库对比
MessagingToolkit.Barcode vs IronBarcode:迁移被废弃的 .NET 库
MessagingToolkit.Barcode 将其目标平台列为Silverlight 5和 Windows Phone 7。 两者都已停产多年。 如果此库在您的代码库中,则替换是实际的下一步。
了解 MessagingToolkit.Barcode
MessagingToolkit.Barcode 是 Java ZXing 条形码库的.NET移植版,并扩展了额外的消息传递集成功能。 该库大约在 2011 年启动,并在 2012 年和 2013 年保持活跃发展。其最终版本 —— 版本 1.7.0.2 —— 于 2013 年 4 月 27 日发布。项目页面不再积极维护,自该时以来未出现公共维护者。
该库是为.NET Framework时代以及定义该时期的移动平台而设计的。 它通过基于实例的API提供条码解码和编码,接受.BarcodeFormat属性的结果对象。 对于 2012 年在 Windows 上运行的.NET Framework 4.x 应用程序来说,这种方法是实用且常用的。
作为 ZXing 的移植版本,MessagingToolkit.Barcode 沿用了该 Java 库的底层解码引擎,但在其之上构建了自己的 API 接口和面向消息传递的扩展点。该库始终基于.NET Framework框架。 未发布 .NET Standard 目标,未添加.NET Core支持,2013 年 4 月发布后没有任何更新。
MessagingToolkit.Barcode 的主要特性:
- 最终版本:2013 年 4 月,版本 1.7.0.2,没有后续更新
- ZXing 传承: Java ZXing 库的移植版,并添加了 .NET 特有的扩展
- 基于实例的API: 每次操作都需要实例化
BarcodeEncoder对象 - System.Drawing依赖: 接受和返回
System.Drawing.Bitmap,使其在现代.NET中仅限于Windows -每次解码调用只返回一个结果:返回一个结果对象(或 null),而不是一个集合。 -不支持 PDF:输入仅限于位图对象; 没有本地文档读取 -不支持自动格式检测:格式必须预先配置,或者由库仅从镜像中检测。 -已停用的平台目标:列出 Silverlight 3、4 和 5; Windows Phone 7.0、7.5、7.8 和 8.0 的NuGet元数据 -没有现代.NET目标框架名称:无法在面向.NET Core、 .NET 5 或任何更高版本的项目中编译
平台和维护记录
MessagingToolkit.Barcode 的NuGet包元数据记录了其预期目标。 下表中的每个条目都代表该库开发时处于当前或接近当前状态的平台:
| 平台 | 2026 年的状况 |
|---|---|
| Silverlight 3 | 已停止服务——浏览器插件已于2021年移除 |
| Silverlight 4 | 已停止服务——浏览器插件已于2021年移除 |
| Silverlight 5 | 已停止服务——浏览器插件已于2021年移除 |
| Windows Phone 7.0 | 已停产——2014年停止支持 |
| Windows Phone 7.5 | 已停产——2014年停止支持 |
| Windows Phone 7.8 | 已停产——2014年停止支持 |
| Windows Phone 8.0 | 已停产——2017年停止支持 |
| .NET Framework 3.5 | 仅提供安全补丁,不包含新功能 |
| .NET Framework 4.0 | 仅提供安全补丁,不包含新功能 |
| .NET Framework 4.5 | 仅提供安全补丁,不包含新功能 |
该库没有与.NET Core、 .NET 5、 .NET 6、 .NET 7、 .NET 8 或.NET 9 兼容的目标框架。面向这些运行时的项目在包无法解析兼容的框架名称时会遇到构建时失败——这不是运行时警告,而是编译错误。
了解IronBarcode
IronBarcode是一个用于.NET的商业条形码读取和生成库,由Iron Software开发和维护。 它通过静态API模型操作:BarcodeWriter.CreateBarcode()用于编码,无需实例化读取器或写入器对象。 该库自带图像处理管道,不依赖System.Drawing,使其在Windows、Linux、macOS和容器环境中兼容。
IronBarcode接受多种输入类型进行读取:文件路径、Stream对象、字节数组和PDF文档路径。 返回结果为集合而不是单个可为空的对象,从而无需单独配置即可处理多条形码图像。 格式检测是自动的——该库会根据图像内容识别条形码类型,而无需调用者事先指定。
IronBarcode为生成返回来自BarcodeWriter.CreateBarcode()的流畅结果对象,支持多种输出格式,包括PNG、JPEG、SVG、PDF和base64编码字符串。 该库会定期更新,并积极发布新的NuGet版本。
IronBarcode的主要特点:
- 静态API设计:
BarcodeWriter.CreateBarcode()不需要实例化对象 -跨平台:可在 Windows、Linux、macOS、Docker 容器和云函数上运行 -不依赖 System.Drawing:使用与所有现代.NET平台兼容的内部图像管道 -多结果读取:每次解码调用都返回一个集合,支持多条形码图像 - PDF读取:直接从PDF文档中读取条形码,无需外部提取步骤 -自动格式检测:无需调用方配置,即可从图像内容中识别条形码类型 -流畅的输出格式:从单个结果对象保存为 PNG、JPEG、SVG、PDF 或字节数组 -主动维护:定期通过NuGet发布安全补丁和新功能 -商业许可:生产用途需要许可证密钥; 在没有试用模式下运行
功能对比
下表概述了 MessagingToolkit.Barcode 和IronBarcode之间的主要区别:
| 特征 | MessagingToolkit.Barcode | IronBarcode |
|---|---|---|
| 最后更新时间 | 2013 年 4 月 | 2026(生效) |
| 现代.NET支持 | 否 | 是的(.NET 6、7、8、9) |
| 跨平台 | 否(仅限Windows系统) | 是的(Windows、Linux、macOS) |
| PDF条形码读取 | 否 | 是 |
| 自动格式检测 | 否 | 是 |
| 主动安全补丁 | 否 | 是 |
| 商业支持 | None | 提供专业支持 |
详细功能对比
| 特征 | MessagingToolkit.Barcode | IronBarcode |
|---|---|---|
| 维护 | ||
| 最后更新时间 | 2013 年 4 月 | 2026(生效) |
| NuGet版本 | 1.7.0.2(最终版) | 当前版本,定期更新 |
| 积极开发 | 否 | 是 |
| 安全补丁 | 自 2013 年起无更新 | 常规补丁 |
| 平台 | ||
| .NET Framework 3.5–4.5 | 是 | 否 |
| .NET Framework 4.6.2+ | 否 | 是 |
| .NET Core | 否 | 是 |
| .NET 5 / 6 / 7 / 8 / 9 | 否 | 是 |
| ASP.NET Core | 否 | 是 |
| .NET MAUI | 否 | 是 |
| 布雷泽 | 否 | 是 |
| Linux / macOS | 否 | 是 |
| Docker/容器 | 否 | 是 |
| 阅读 | ||
| 输入类型 | 仅限位图 | 路径、流、字节数组、PDF |
| PDF阅读 | 否 | 是的(母语) |
| 自动格式检测 | 否 | 是 |
| 每张图片包含多个条形码 | 否 | 是 |
| 系统绘图依赖项 | 要求 | None |
| 一代 | ||
| 输出格式 | 仅限位图 | PNG、JPEG、SVG、PDF、字节数组 |
| Fluent 输出 API | 否 | 是 |
| 系统绘图依赖项 | 要求 | None |
| 许可 | ||
| 商业支持 | None | 提供专业支持 |
| 审计的维护状态 | 无活跃的维护者或发布流程 | 活跃的维护者,定期发布 |
平台和框架支持
这两个库的平台发展历程存在着12年的空白期。MessagingToolkit.Barcode 是为.NET发展史上的一个特定时期而设计的;IronBarcode的设计理念是面向现在。
MessagingToolkit.条形码方法
MessagingToolkit.Barcode 仅针对.NET Framework 3.5、4.0 和 4.5。 它没有.NET Standard 的名称,没有.NET Core 的目标,也没有针对现代运行时的兼容性补丁。 当项目文件引用此包并面向任何现代.NET版本时, NuGet还原操作将失败,并出现框架兼容性错误——生成不会继续。
NuGet元数据中的平台表使这一点变得具体。 Silverlight 3、4 和 5 是列出的目标; 这三款系统均已于 2021 年停产。列出的系统包括 Windows Phone 7.0、7.5、7.8 和 8.0; 所有这些框架都在 2014 年至 2017 年间停止了支持。剩余的目标框架.NET Framework 3.5、4.0 和 4.5——在 Windows 上仍然具有技术功能,但微软只会提供安全补丁,不会进行任何新功能开发。
实际后果是 MessagingToolkit.Barcode 阻碍了框架的升级。 无法在不首先移除该包的情况下,将一个针对net8.0。 该包不仅仅是过时的 —— 它缺乏现代目标框架名称阻止了框架目标的更改,从而不允许项目访问现代 .NET 功能。
请查阅IronBarcode平台文档,以获取支持的框架和部署目标的完整列表。
IronBarcode方法
IronBarcode支持.NET Framework 4.6.2 至.NET 9,涵盖传统 Windows 应用程序和现代跨平台部署。 一个NuGet包即可安装在所有受支持的平台上,无需单独的图形库或特定于平台的配置。
跨平台支持在实际应用中意义重大。IronBarcode的内部图像管道不依赖于System.Drawing,在.NET 6中变为仅Windows。针对Linux或macOS的应用程序——包括运行在Docker容器中、Linux上的Azure App Service或AWS Lambda——使用与Windows部署相同的IronBarcode API和行为。
API设计
MessagingToolkit.Barcode的API表面是围绕基于实例的对象和System.Drawing.Bitmap输入设计的。IronBarcode的 API 是静态的,并且接受多种输入类型。这两个库都能对条形码进行编码和解码,但调用它们的具体机制却大相径庭。
MessagingToolkit.条形码方法
使用MessagingToolkit.Barcode进行读取需要创建一个.Text之前检查结果是否为空。 生成遵循相同的实例模式:创建一个.Save()。
// MessagingToolkit.Barcode — .NET Framework target frameworks
using MessagingToolkit.Barcode;
using System.Drawing;
// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();
// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
// MessagingToolkit.Barcode — .NET Framework target frameworks
using MessagingToolkit.Barcode;
using System.Drawing;
// Reading
var barcodeReader = new BarcodeDecoder();
var bitmap = new Bitmap("barcode.png");
var result = barcodeReader.Decode(bitmap);
string value = result?.Text;
string format = result?.BarcodeFormat.ToString();
// Writing
var barcodeWriter = new BarcodeEncoder();
barcodeWriter.Format = BarcodeFormat.QrCode;
var outputBitmap = barcodeWriter.Encode("Hello World");
outputBitmap.Save("output.png");
Imports MessagingToolkit.Barcode
Imports System.Drawing
' Reading
Dim barcodeReader As New BarcodeDecoder()
Dim bitmap As New Bitmap("barcode.png")
Dim result = barcodeReader.Decode(bitmap)
Dim value As String = result?.Text
Dim format As String = result?.BarcodeFormat.ToString()
' Writing
Dim barcodeWriter As New BarcodeEncoder()
barcodeWriter.Format = BarcodeFormat.QrCode
Dim outputBitmap = barcodeWriter.Encode("Hello World")
outputBitmap.Save("output.png")
Bitmap依赖并非偶然。 System.Drawing.Bitmap需要GDI+在Windows上。 在.NET 6及更高版本中,尝试在Linux或macOS上使用Bitmap依赖将阻止跨平台部署。
IronBarcode方法
IronBarcode全程使用静态方法。 Bitmap。 结果是一个集合,而不是一个可为空的单个对象。 生成使用BarcodeWriter.CreateBarcode()作为参数传递的编码类型,结果对象直接公开保存方法。
//IronBarcode— .NET Framework 4.6.2 through .NET 9
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();
// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
.SaveAsPng("output.png");
//IronBarcode— .NET Framework 4.6.2 through .NET 9
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Reading
var results = BarcodeReader.Read("barcode.png");
string value = results.FirstOrDefault()?.Value;
string format = results.FirstOrDefault()?.Format.ToString();
// Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode)
.SaveAsPng("output.png");
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Reading
Dim results = BarcodeReader.Read("barcode.png")
Dim value As String = results.FirstOrDefault()?.Value
Dim format As String = results.FirstOrDefault()?.Format.ToString()
' Writing
BarcodeWriter.CreateBarcode("Hello World", BarcodeEncoding.QRCode) _
.SaveAsPng("output.png")
有关如何从图像中读取条形码的详细指导,请参阅如何从图像中读取条形码。 要生成包括 Code 128、EAN-13 和 UPC 格式在内的 1D 条形码,请参阅如何创建 1D 条形码。
安全与维护
未维护的库具有不同于活跃维护库的安全姿态。 不同之处不在于是否提交了CVE —— 而是在提交CVE 时能否得到解决。
MessagingToolkit.条形码方法
自2013 年4月以来, MessagingToolkit.Barcode没有收到任何更新。 任何在该日期之后发现的漏洞——不论是在库本身的图像解析逻辑中,还是在其源自ZXing的解码实现中,还是在其传递性依赖关系中——都未被修补。 没有公共维护者可以通知,没有安全咨询流程可以监控,并且即使开发了漏洞修复,通过发布机制也没有传达给用户的方法。
安全扫描工具 —— Snyk、WhiteSource、GitHub Dependabot、NuGet审计 —— 通常将未维护的包标记为风险升高。 标记并不取决于是否已确认存在 CVE; 这反映出目前没有任何程序可以修复已确认的漏洞。 这与具有活跃维护者和有记录安全响应流程的库风险配置文件不同。
对于在合规框架(PCI DSS、HIPAA、SOC 2、ISO 27001)下运营的团队而言,这会产生实际的审计后果。 这些框架需要第三方软件的活跃补丁管理,而没有响应机制处理漏洞的未维护包通常在审查过程中被标记,即使没有专门针对它的CVE。 该发现与依赖项的维护姿态有关,而非已知漏洞的存在。
IronBarcode方法
IronBarcode会定期收到NuGet更新,内容包括安全补丁、依赖项更新和新功能。 该库由Iron Software开发,该公司维护着完善的支持流程,并为每次更新发布发行说明。 安全公告(如有)会在补丁版本中予以解决。
IronBarcode支持50 多种条形码格式,包括 MessagingToolkit.Barcode 处理的所有格式——QR 码、Code 128、EAN-13、EAN-8、UPC-A 等——以及旧库从未支持的格式:DataMatrix、Aztec、PDF417 和各种现代 2D 条码。
API 映射参考
下表将 MessagingToolkit.Barcode API 元素与其对应的IronBarcode元素进行映射:
| MessagingToolkit.Barcode | IronBarcode | 备注 |
|---|---|---|
new BarcodeDecoder() |
静态 — BarcodeReader.Read() |
无需实例 |
barcodeReader.Decode(bitmap) |
BarcodeReader.Read(path) |
接受路径、流或字节数组 |
result.Text |
result.Value |
物业已更名 |
result.BarcodeFormat |
result.Format |
物业已更名 |
new BarcodeEncoder() |
静态 — BarcodeWriter.CreateBarcode() |
无需实例 |
barcodeWriter.Format = BarcodeFormat.QrCode |
BarcodeEncoding.QRCode(参数) |
作为参数传递的格式,而非属性 |
Bitmap |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.QRCode) |
返回流畅的结果,而不是位图。 |
bitmap.Save("path.png") |
.SaveAsPng("path.png") |
Fluent 方法在结果对象上 |
BarcodeFormat.QrCode |
BarcodeEncoding.QRCode |
枚举命名空间和值已重命名 |
BarcodeFormat.Code128 |
BarcodeEncoding.Code128 |
相同的符号名称 |
| 如果未找到,则返回 null。 | 返回空集合 | 检查.FirstOrDefault() |
| 仅限.NET Framework 3.5–4.5 | .NET 4.6.2 至.NET 9 | 完全支持现代.NET |
当团队考虑从 MessagingToolkit.Barcode 迁移到IronBarcode时
促使团队评估此过渡的场景具有共同结构:项目要求超出了早期-.NET Framework 时代库所能容纳的范围。
框架现代化要求
最常见的触发因素是计划内或正在进行的.NET升级。 当团队决定将项目从.NET Framework 4.x 迁移到.NET 6 或更高版本时,必须审核依赖关系图,找出缺少现代框架支持的包。 MessagingToolkit.Barcode 将在审核中显示为阻塞依赖项——无法针对现代目标框架名称进行解析。 因此,迁移到IronBarcode是更广泛的.NET升级的先决条件,而不是一项独立的计划。负责应用程序现代化改造的团队通常会在升级分析阶段早期发现这种依赖关系。
安全与合规义务
第二种情况涉及安全审查和合规性审计。 根据 PCI DSS、HIPAA、SOC 2 或 ISO 27001 框架运营的团队会定期接受审核,以检查第三方依赖项的健康状况。 未维护的包没有安全响应机制,通常会因为流程理由而在审查中被发现,这与是否已识别特定漏洞无关。 当安全团队将 MessagingToolkit.Barcode 标记为不合规依赖项时,解决方案是替换 —— 无需应用修补程序,没有版本可升级,也没有维护者可联系以获取安全咨询。 迁移至IronBarcode通过用一个定期收到安全更新的依赖项替换无维护路径的依赖项来解决审计发现。
能力扩展
第三种情况是,当新的需求超出 MessagingToolkit.Barcode 所能提供的范围时。 处理扫描文档或 PDF 文件的应用程序需要从这些格式中读取条形码——MessagingToolkit.Barcode 只接受位图输入,因此如果没有单独的提取层,就无法读取 PDF。 用于网络交付条码生成的应用程序需要SVG或base64输出——MessagingToolkit.Barcode返回System.Drawing.Imaging依赖。 当产品需求扩展到这些领域时,旧库的局限性就变成了工程上的限制,无法通过其 API 接口来解决。
平台目标增长
第四种情况是增加新的部署目标。 最初构建Windows应用程序并扩展到Linux托管、macOS开发环境、Docker容器或在Linux运行时上的云函数的团队会发现System.Drawing依赖是个障碍问题。 MessagingToolkit.Barcode需要System.Drawing在.NET 6及以上版本中仅限Windows。 任何非 Windows 部署目标都会导致此依赖项出现运行时故障,而不仅仅是兼容性问题。 迁移到IronBarcode彻底消除了System.Drawing要求,实现团队试图实现的跨平台部署。
常见迁移注意事项
从 MessagingToolkit.Barcode 过渡到IronBarcode 的团队应该注意一些影响迁移机制的技术差异。
命名空间替换
每个包含using IronBarCode;。 在代码库范围内搜索旧命名空间字符串是确定迁移范围的最可靠起点。 仅为与MessagingToolkit.Barcode一起使用的System.Drawing的文件可能在IronBarcode就位后完全删除该导入,因为IronBarcode不需要它。
目标框架变更
从项目文件中移除 MessagingToolkit.Barcode 可以更新目标框架别名。 一旦移除阻碍的依赖,从<TargetFramework>net8.0</TargetFramework>的更改即成为可能。 IronBarcode支持此更改的两方面——它与.NET Framework 4.6.2 和.NET 8 兼容——因此可以在框架升级完成之前安装它,从而允许分阶段迁移,而不是一步完成。
条形码写入器命名空间差异
MessagingToolkit.Barcode使用barcodeWriter.Format = BarcodeFormat.QrCode)。 IronBarcode使用BarcodeWriter.CreateBarcode()作为静态方法,编码类型作为参数传递。 枚举名称不同:BarcodeEncoding.Code128。 Bitmap。
IronBarcode的其他功能
IronBarcode提供的功能远不止以上各节讨论的功能集:
- PDF条码读取:
BarcodeReader.Read("document.pdf")从PDF文档的每页读取条码,返回包括页码元数据的结果。 无需外部PDF提取步骤。 -批量处理:一次即可读取多个文件(图像和 PDF 混合)。 自动格式检测适用于条形码类型,而不仅仅是文件格式。 - QR码定制: 生成的QR码可以通过
QRCodeWriterAPI包含嵌入的徽标、自定义颜色和可调静区。 - 异步友好的使用:
Stream输入,与ASP.NET Core和其他异步.NET应用程序中的async请求管道干净地集成。 -生成多种输出格式:生成的条形码可以保存为 PNG、JPEG、SVG、PDF 格式,也可以作为 base64 编码的字符串检索,以便直接嵌入 HTML 响应或数据库存储。
.NET兼容性和未来准备情况
IronBarcode支持所有当前的.NET版本.NET Framework 4.6.2 到.NET 9——并且会接收跟踪新.NET版本的更新。 该库的内部图像管道避免了对System.Drawing或其他特定平台的图形API的依赖,这意味着相同的包和API在Windows、Linux、macOS和容器环境中可以一致地工作。 随着.NET 10 及后续版本的发布,IronBarcode 积极的开发节奏确保了兼容性,而无需团队因库的限制而推迟.NET升级。
结论
MessagingToolkit.Barcode 和IronBarcode代表了.NET库开发中两个截然不同的阶段。 MessagingToolkit.Barcode 是为 2010 年代早期的 .NET Framework 4.x 和移动平台构建的。IronBarcode是为存在于 2026 年的 .NET 构建的 —— 跨平台、容器友好的,并且有活跃的维护。 它们之间的技术差距并非功能对等的问题; 这是运行时兼容性问题。 MessagingToolkit.Barcode 无法在现代.NET项目中编译,这意味着在大多数实际场景中,比较的对象并非两个相互竞争的选项。
MessagingToolkit.Barcode 仅适用于狭窄的合法用例:仅限于 .NET Framework 4.x 的项目,只在 Windows 上运行,不会升级到更新的运行时,并在没有严格第三方补丁管理要求的环境中操作。 在该特定配置中,库生成输出并且不适用框架目标阻挡项。 维修空白——超过十年没有补丁——仍适用于所有配置。
IronBarcode适用于需要在任何现代.NET环境中使用条形码功能的团队: .NET 6、7、8 或 9; Linux 或 macOS 部署; Docker 或云托管环境; ASP.NET Core应用程序; 或任何处理PDF或需要输出格式超出Windows位图条码的项目。静态API减少了基于实例模型的实例化开销,且System.Drawing依赖的缺失去除了一个有意义的跨平台限制。
基本评估很简单。 对于没有计划更改的.NET Framework 4.x 团队,MessagingToolkit.Barcode 将继续在这些限制条件下运行。 对于其他所有场景——现代化、合规性、跨平台部署或功能扩展——MessagingToolkit.Barcode 都不是一个可行的选择,而IronBarcode是一个直接的替代品,并且具有一个小型、定义明确的迁移路径。
常见问题解答
什么是 MessagingToolkit 条形码?
MessagingToolkit Barcode 是一个 .NET 条形码库,用于在 C# 应用程序中生成和读取条形码。它是开发人员在为 .NET 项目选择条形码解决方案时评估的几个备选方案之一。
MessagingToolkit Barcode 和 IronBarcode 的主要区别是什么?
IronBarcode 使用静态、无状态的 API,无需实例管理,而 MessagingToolkit Barcode 通常需要先创建实例并进行配置才能使用。IronBarcode 还提供原生 PDF 支持、自动格式检测以及跨所有环境的单密钥许可。
IronBarcode 的授权是否比 MessagingToolkit Barcode 更容易?
IronBarcode 使用单一许可证密钥,同时涵盖开发和生产部署。与将 SDK 密钥与运行时密钥分开的许可系统相比,这简化了 CI/CD 流水线和 Docker 配置。
IronBarcode 是否支持 MessagingToolkit Barcode 支持的所有条形码格式?
IronBarcode 支持超过 30 种条码符号体系,包括 QR 码、Code 128、Code 39、DataMatrix、PDF417、Aztec、EAN-13、UPC-A、GS1 等等。格式自动检测功能意味着无需显式枚举格式。
IronBarcode是否支持原生PDF条码读取?
是的。IronBarcode 可以直接从 PDF 文件中读取条形码,使用 `BarcodeReader.Read("document.pdf")` 方法,无需单独的 PDF 渲染库。每页的读取结果包括页码、条形码格式、数值和置信度评分。
与 MessagingToolkit Barcode 相比,IronBarcode 在批量处理方面有何不同?
IronBarcode 的静态方法是无状态的,并且天然线程安全,因此可以直接使用 Parallel.ForEach,而无需进行线程级实例管理。所有定价层级均无吞吐量上限。
IronBarcode支持哪些.NET版本?
IronBarcode 在单个 NuGet 包中支持 .NET Framework 4.6.2+、.NET Core 3.1 以及 .NET 5、6、7、8 和 9。平台目标包括 Windows x64/x86、Linux x64 和 macOS x64/ARM。
如何在.NET项目中安装IronBarcode?
通过 NuGet 安装 IronBarcode:在程序包管理器控制台中运行“Install-Package IronBarCode”,或在命令行界面中运行“dotnet add package IronBarCode”。无需其他 SDK 安装程序或运行时文件。
与 MessagingToolkit 不同,我可以在购买前评估 IronBarcode 吗?
是的。IronBarcode 的试用模式会返回完整的解码条形码值——只有生成的输出图像才会带有水印。您可以在购买前,用自己的文档测试读取准确率。
MessagingToolkit Barcode 和 IronBarcode 的价格有什么区别?
IronBarcode 的永久单开发者许可证起价为 749 美元,涵盖开发和生产环境。定价详情和批量许可选项请访问 IronBarcode 许可页面。无需单独的运行时许可证。
从 MessagingToolkit Barcode 迁移到 IronBarcode 是否简单?
从 MessagingToolkit Barcode 迁移到 IronBarcode 主要涉及将基于实例的 API 调用替换为 IronBarcode 的静态方法、移除许可相关的样板代码以及更新结果属性名称。大多数迁移工作都是减少代码,而不是增加代码。
IronBarcode 能生成带有 logo 的二维码吗?
是的。`QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")` 可以将品牌图片原生嵌入二维码中,并支持配置纠错功能。此外,它还支持通过 `ChangeBarCodeColor()` 函数创建彩色二维码。

