TBarCode SDK是一款可以在任意应用程序和打印机下生成和打印所有条码的条码软件组件。TBarCode SDK对于Microsoft® Office用户以及软件开发者提供条码打印。使用此款条码软件组件你可以生成和打印所有用于工业和商业条码符号。
一、如何以4位/像素格式保存条形码?
首先以默认的Pixel格式生成条形码(Format32bppArgb):
System.Drawing.Size optimalSize = myBarcode.CalculateOptimalBitmapSize(null, 2, 2); myBarcode.BoundingRectangle = new Rectangle(0, 0, optimalSize.Width, optimalSize.Height); Bitmap barcodeImage = myBarcode.DrawBitmap();
然后将其转换为你需要的Pixel格式的位图:
Bitmap converted = barcodeImage.Clone (new Rectangle(0, 0, barcodeImage.Width, barcodeImage.Height), PixelFormat.Format4bppIndexed); // MessageBox.Show(converted.PixelFormat.ToString());
二、如何编码二进制数据(二维码)
即使你对二进制数据使用转义序列,编码器也将使用Codepage Conversion(代码页转换)(例如:\x88根据需要在Data Matrix中输出不同的值)。
解决方案:
- 关闭代码页转换(使用编码模式LowByte)
- 强制二进制编码模式(如果可用)(参见PDF417编码模式,Data Matrix EnforceBinaryEncoding)
三、部署Web应用程序后出现错误的图像格式
在部署ASP.NET项目到你的IIS Web服务器之后,会出现System.BadImageFormatException(尝试加载格式不正确的程序)。在开发过程中没有这样的问题。
原因:Visual Studio是一个32位应用程序,开发服务器通常以32位进程运行。因此,32位版本的TECIT.TBarCode.DLL已嵌入到你的项目中,在./bin文件夹中。但是你的IIS以64位进程运行,所以会加载错误的格式。
方法1:部署64位版本的程序集
使用C:\Program Files\Common Files\TEC-IT\TBarCode\[version]文件夹中的版本(这是x64版本)。使用该版本交换目标系统上的../bin/TECIT.TBarCode.dll文件。
方法2:让GAC来完成这个工作
从bin文件夹中完全删除TECIT.TBarCode.dll。在这种情况下,将加载来自全局程序集缓存(GAC)的TECIT.TBarCode.dll。公共语言运行库自动加载正确的版本,因为GAC同时包含32和64位版本。
前置条件:必须在目标服务器上执行TBarCode SDK的设置,安装程序会为你安装GAC中的DLL。
如果你没有立即看到效果,请重新启动应用程序池或在命令行上执行“iisreset”(注意,这会重新启动ALL,会话将丢失)。
四、如何创建可读Code 39位图?
以下示例代码可在ASP.NET中生成Code 39位图。
//Code 39 Barcode barcode = new Barcode(); barcode.Data = "10030000007611107871900002199908"; barcode.BarcodeType = BarcodeType.Code39; // with dpi = 100 we get 1 Pixel = 0.254 mms barcode.Dpi = 100; // bar code size should adapt to bounding rectangle barcode.SizeMode = SizeMode.FitToBoundingRectangle; // set default size of symbol (define the default height) barcode.BoundingRectangle = new Rectangle(0, 0, 254, 100 /* = 1 inch */); // now calculate optimal bitmap size for the bar code Size optimalSize = barcode.CalculateOptimalBitmapSize(null, 1, 1); // update rectangle to optimized size barcode.BoundingRectangle = new Rectangle(0, 0, optimalSize.Width, optimalSize.Height); barcode.Draw(filename, ImageType.Jpg);