一位客户要求我为他们构建一个库存解决方案,他们可以为所有办公设备打印条形码标签,以便以各种方式跟踪它们。
他们给了我一台 Citizen CL-S621 打印机(203x203 dpi 分辨率)用于测试,然后(那是噩梦)配置其驱动程序以打印并将所有内容安装到他们给我测试的非标准标签上,这是我遇到的最大问题仍然遇到的问题是打印机无法以直线打印某些条形,而是以虚线/点线形式打印它们。
下面的 C# 代码显示了我如何构建条形码的基础知识使用这个库 http://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library :
public void CreateTheBarcode(string StringToEncode)
{
Barcode b = new Barcode();
b.LabelFont = new Font("Sample Bar Code Font", 24, FontStyle.Bold);
b.IncludeLabel = true;
b.Encode(BarcodeLib.TYPE.CODE128, StringToEncode, Color.Black, Color.White, 730, 140);
b.SaveImage(@"C:\temp\Barcodes\"+StringToEncode+".png",SaveTypes.PNG);
Print(@"C:\temp\Barcodes\"+StringToEncode+".png");
}
public static void Print(string FilePath)
{
Process printJob = new Process();
printJob.StartInfo.FileName = FilePath;
printJob.StartInfo.UseShellExecute = true;
printJob.StartInfo.Verb = "printto";
printJob.StartInfo.CreateNoWindow = false;
printJob.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
printJob.StartInfo.Arguments = "\"" + "Citizen CL-S621" + "\"";
printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(FilePath);
printJob.Start();
}
硬编码的宽度和高度是我发现的打印机可以接受并准确打印到标签上的良好图像尺寸的最佳近似值,因为我必须通过标尺测量它们的尺寸,并且在打印机偏移和眼睛测量精度问题之间获得有效的尺寸事实证明很麻烦。
无论如何,我生成了一些条形码,图像清晰,看起来相当不错:
线条平直清晰,文字锐利,一切看起来都很好;
但当我去打印它们时,我得到:
有些条形打印笔直且清晰,而有些条形边缘不规则,有些只是不规则的点/斜线/曲线图案。所有这些文本中的文本都遇到同样的问题。我尝试了不同的字体大小和据说对条形码友好的字体,但问题仍然存在。如果我删除文本标签,问题仍然存在。
我觉得这是一个图像光栅化问题,但我不完全确定,也不知道如何解决这个问题。
我还不确定扫描仪是否可以读取这些内容,我明天会收到一个,但是任何有关我可能做错的事情的提示将不胜感激。