Dim fsImageFile As FileStream
Dim brReader As BinaryReader
fsImageFile = New FileStream(strBarcodeImageFilePath, FileMode.Open)
brReader = New BinaryReader(fsImageFile)
Dim bImageByte(Convert.ToInt32(fsImageFile.Length + 1)) As Byte
bImageByte = brReader.ReadBytes(Convert.ToInt32(fsImageFile.Length))
drMyCrystalReport.BarcodeImage = bImageByte
2 回答
我在其中一个论坛上找到了以下解决方案,但我不记得哪一个,(请告诉我,如果你知道原帖,我会链接到它 . )
以下是在crysal报告中添加条形码所需的步骤 .
1)将一个类型为byte array的列添加到报表中使用的数据集中 . 2)打开crytal报告并验证数据库,以便在crytal报告中更新新添加的列 . 3)在水晶设计器中,拖动设计图面上的新数据库列并将其放在所需位置 . 4)在生成报告的方法中,添加以下代码以将条形码图像的内容填充到新列中 .
在上面的示例中,drMyCrystalReport是数据集的数据行,BarcodeImage是添加到数据集的列 . 此代码将图像文件的内容添加到数据库列,并且Crystal列表会在添加此列时显示该内容 .
这取决于您要打印的条形码符号系统 . 对于Code 39条形码,您只需将字符串括在一对"*"字符之间并使用Code39字体;它是自我检查所以不需要进一步处理 . 我使用Free3of9.ttf工作正常 .
代码128需要校验位,并且需要一个函数来计算将在字符串末尾使用的正确字符(与字体相关)以形成完整的条形码 . 这些字体中有一些,包含各种语言的函数库 . 其中一个来自Brian Dobson(FreeBarcodeFonts)并且似乎是一个相当完整的解决方案,包括用于Windows上的Crystal Reports的DLL .
我没有评论您使用动态生成的图像文件的想法,因为Crystal Reports是一个非常模糊的工具 . 听起来似乎有道理,即使您是通过数据库中的存储过程完成的 .
其他符号可用,大多数是商业的 . 在网上搜索“条形码字体”和您的符号系统名称以获得大量结果 .