TBarCode .NET 常见问题
部署到 Microsoft Azure 后条码缺失
部署到 Microsoft Azure 后条码缺失
TBarCode 使用 Windows GDI API 调用来绘制线条和渲染文本输出。然而,由于 Web App 沙箱会阻止 GDI 调用,因此在 Azure 上会出现问题。出于安全考虑,Microsoft 限制了对视频/屏幕驱动程序的调用,因此实施了这一限制。这导致条码要么绘制不完整,要么完全无法显示。GDI 函数的完整功能只有在本地自建托管的服务器上才能实现。
解决方案:使用自定义绘制回调接口来替代 GDI API 调用。
- 下载 面向 .NET 6 的 QR 码 Web 应用示例(参见 ASPNETCoreWebApp 文件夹)。
- 请参阅 BarcodeController.cs 中的 GetQRCodeImgNoGDI,它通过回调接口调用 .NET 函数来绘制条码。该方法适用于无法访问 GDI 的 Azure 服务。
- 如果您使用的是 SDK 预编译的条码服务 (WebDeploy 安装包),请更新到最新版本,并设置参数 UseGDI=false。
回调绘制功能在演示模式下无法使用。请向 sales@tec-it.com 申请临时许可证。您可以在 BarcodeNoGDI 的构造函数中实现授权,或通过 barcode.ini 文件进行授权。
Azure 上的字号问题
如果您打算创建带有人类可读文本的一维条码,同样需要通过回调接口输出文本(相关代码已包含在上方链接的 ASP.NET Core 示例中)。我们有时会在 Azure 上观察到不希望出现的字体缩放现象,遇到这种情况时,您需要使用一种已安装的字体,并设置其大小。
barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 10, System.Drawing.FontStyle.Regular, GraphicsUnit.Point);
barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, System.Drawing.FontStyle.Regular, GraphicsUnit.Pixel);