寻找解决方案?
我正在做一个通过报表制作模板打印票据的功能,需要打印条码。
有两种可参考方案,由于能力有限我没能研究出来:
方法一:由于报表在定义显示字段时需要指定数据集,定义数据表二进制字段CodeBytes,在程序初始化时新建一个DataTable定义Row["CodeBytes"]保存条形码。为Report添加LocalReport指定DataSources和ReportPath。结果显示“错误号”
部分代码如下:
public void InitialBarCode(DataTable dtPict,string code,int barCodeMaxHeight)
        {
            
            MemoryStream ms=new MemoryStream();
            BinaryWriter bw;            BarcodeDraw draw = null;
            draw = InstallBarcodeDraw(draw);
            draw.Draw(code, barCodeMaxHeight).Save(ms, ImageFormat.Png);
            draw.Draw(code, barCodeMaxHeight).Save("file.png"); //保存为图片,显示正确
            byte[] pictBytes = new byte[ms.Length];            bw = new BinaryWriter(ms);
            bw.Write(pictBytes);
            DataRow row = dtPict.NewRow();
            row["PictureBytes"] = pictBytes;
            dtPict.Rows.Add(row);            bw.Flush();
            bw.Close();
            bw.Dispose();
            ms.Close();
            ms.Dispose();
        }
方法二:我没试,有些不懂。由于VS2010自带的Report是rdlc格式其实是一个XML格式文件.保存了数据的相关信息(如位置,字体)等。我试着在报表设计器中添加本地图片,结果在XML中以二进制方式保存着。所以第二种方法可能可以在读取报表数据时替换已有的图片二进制信息。
由于没做过相关功能。希望大虾们指点迷津