当前位置: 首页 > 编程日记 > 正文

rdlc报表显示条码 .

1.条码的生成:

private Bitmap GetCode39(string strSource)
        {
            int x = 5; //左邊界     
            int y = 0; //上邊界     
            int WidLength = 2; //粗BarCode長度     
            int NarrowLength = 1; //細BarCode長度     
            int BarCodeHeight = 24; //BarCode高度     
            int intSourceLength = strSource.Length;
            string strEncode = "010010100"; //編碼字串 初值為 起始符號 *      
            string AlphaBet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%*"; //Code39的字母     
            string[] Code39 = //Code39的各字母對應碼
                {     
                    /**//* 0 */ "000110100",      
                    /**//* 1 */ "100100001",     
                    /**//* 2 */ "001100001",      
                    /**//* 3 */ "101100000",     
                    /**//* 4 */ "000110001",      
                    /**//* 5 */ "100110000",      
                    /**//* 6 */ "001110000",      
                    /**//* 7 */ "000100101",     
                    /**//* 8 */ "100100100",      
                    /**//* 9 */ "001100100",      
                    /**//* A */ "100001001",      
                    /**//* B */ "001001001",     
                    /**//* C */ "101001000",      
                    /**//* D */ "000011001",      
                    /**//* E */ "100011000",      
                    /**//* F */ "001011000",     
                    /**//* G */ "000001101",      
                    /**//* H */ "100001100",      
                    /**//* I */ "001001100",      
                    /**//* J */ "000011100",     
                    /**//* K */ "100000011",      
                    /**//* L */ "001000011",      
                    /**//* M */ "101000010",      
                    /**//* N */ "000010011",     
                    /**//* O */ "100010010",      
                    /**//* P */ "001010010",      
                    /**//* Q */ "000000111",      
                    /**//* R */ "100000110",     
                    /**//* S */ "001000110",      
                    /**//* T */ "000010110",      
                    /**//* U */ "110000001",      
                    /**//* V */ "011000001",     
                    /**//* W */ "111000000",      
                    /**//* X */ "010010001",      
                    /**//* Y */ "110010000",      
                    /**//* Z */ "011010000",     
                    /**//* - */ "010000101",      
                    /**//* . */ "110000100",      
                    /**//*' '*/ "011000100",     
                    /**//* $ */ "010101000",     
                    /**//* / */ "010100010",      
                    /**//* + */ "010001010",      
                    /**//* % */ "000101010",      
                    /**//* * */ "010010100" 
                };
            strSource = strSource.ToUpper();
            //實作圖片     
            Bitmap objBitmap = new Bitmap(((WidLength * 3 + NarrowLength * 7) * (intSourceLength + 2)) + (x * 2), BarCodeHeight + (y * 2));
            Graphics objGraphics = Graphics.FromImage(objBitmap);
            //宣告GDI+繪圖介面     
            //填上底色     
            objGraphics.FillRectangle(Brushes.White, 0, 0, objBitmap.Width, objBitmap.Height);
            for (int i = 0; i < intSourceLength; i++)
            {
                //檢查是否有非法字元         
                if (AlphaBet.IndexOf(strSource[i]) == -1 || strSource[i] == '*')
                {
                    objGraphics.DrawString("含有非法字元", SystemFonts.DefaultFont, Brushes.Red, x, y);
                    return objBitmap;
                }
                //查表編碼         
                strEncode = string.Format("{0}0{1}", strEncode, Code39[AlphaBet.IndexOf(strSource[i])]);
            }
            strEncode = string.Format("{0}0010010100", strEncode);
            //補上結束符號 *      
            int intEncodeLength = strEncode.Length;
            //編碼後長度     
            int intBarWidth;
            for (int i = 0; i < intEncodeLength; i++)
            //依碼畫出Code39 BarCode     
            {
                intBarWidth = strEncode[i] == '1' ? WidLength : NarrowLength;
                objGraphics.FillRectangle(i % 2 == 0 ? Brushes.Black : Brushes.White, x, y, intBarWidth, BarCodeHeight); x += intBarWidth;
            }
            return objBitmap;
        }

2.生成条码图片

MemoryStream oStream2 = new MemoryStream();
                        try
                        {
                            Bitmap oBmp2 = GetCode39(goodsNum);
                            oBmp2.Save(oStream2, System.Drawing.Imaging.ImageFormat.Png);
                            //图片路径
                            oBmp2.Save(url + goodsName + ".png",   System.Drawing.Imaging.ImageFormat.Png);
                            oBmp2.Dispose();
                        }
                        finally
                        {
                            oStream2.Dispose();
                        }


3.读取条码图片转化为二进制流


                        FileStream file = new FileStream(url + freightBill + ".png", FileMode.Open, FileAccess.Read);
                        Byte[] bytGoodsCode = new Byte[file.Length];
                        file.Read(bytGoodsCode, 0, bytGoodsCode.Length);
                        file.Close();

4.将条码图片保存进数据库

5.将条码图片在报表上显示出来:

在报表上拖放一个image图像控件,Source设置为DataBase(External为嵌入图片,Embedded为外部图片),Value 选择条码字段,设置MIMEType属性。

这样就能看见报表上面的图片了。

注:本来数据库存放条码图片的URL,但是在报表上用Embedded显示图片的时候,给image控件绑定了条码图片的URL值,但是运行图片显示不出,image控件的SRC="";还没有找到问题。

转载于:https://www.cnblogs.com/ewyb/archive/2011/10/26/2225081.html

相关文章:

python列表(数组)

python列表&#xff08;数组&#xff09; 列表&#xff08;list&#xff09; 就是 数组 - 列表是Python中的一个对象 - 对象&#xff08;object&#xff09;就是内存中专门用来存储数据的一块区域 - 之前我们学习的对象&#xff0c;像数值&#xff0c;它只能保存一…

【js】common.jsp的使用

通过将引入common.jsp将所有文件都需要的内容或静态资源引入&#xff0c;相当于一个页面&#xff0c;在页面被编译之前合并。 代码实现 <% include file "common.jsp的相对路径"%> 注意&#xff1a; <% page language"java" contentType&quo…

12th,Jan 研究生创新项目申报成功

今天的好消息是研究生创新项目申报成了&#xff0c;省里拨下来是1.8k&#xff0c;本来学校应该配3.6k&#xff0c;但是按照以往的经验&#xff0c;学校那3.6k是不会给的。。。所以总共就1.8k&#xff0c;呵呵&#xff0c;钱虽然不多&#xff0c;但是也是个小小小的成就吧。 昨晚…

Android studio中2种build.gradle文件介绍

根目录下的build.gradle通常不需要修改这个文件中的内容&#xff0c;除非需要添加一些全局的项目构建配置 buildscript {repositories {google() //声明代码托管仓库Googlejcenter() //声明代码托管仓库&#xff0c;用于引用jcenter上的开源项目}dependencies {classpath …

10个有趣的javascript和css库(2019年5月最新)

我们的使命是让您了解最新和最酷的Web开发趋势。这就是为什么我们每个月都会发布一些精选的资源&#xff0c;这些资源是我们偶然发现并认为值得您关注的。 1.Tessaract.js 强大的javascript&#xff08;节点和浏览器&#xff09;库&#xff0c;用于从图像中提取文本。它能自动检…

快速开发rails、==常用插件==

1、简化css编写的&#xff1a;sass http://sass-lang.com/download.html 2、简化html编写的:haml http://haml-lang.com/转载于:https://www.cnblogs.com/klobohyz/archive/2011/10/31/2230080.html

【js】绑定事件的两种方法

方法一&#xff1a; 为需要绑定事件的标签添加一个属性onclick 代码实现&#xff1a; <input type"button" value"测试按钮" onclick"testClick()" /> 方法二&#xff1a; 用jquery方法绑定事件 代码实现&#xff1a; <input id&…

对于学习方式的一些思考

再牛X的书都不要太当回事儿&#xff0c;书只是知识的一个载体&#xff0c;掌握知识的途径之一。学习的过程应该是由一个个知识模块所驱动的&#xff0c;继而去调动身边的学习资源和工具&#xff0c;而不是被一本本所谓的牛书生拉硬拽着去学一大套可能永远都用不到的东西。“知识…

python开发环境安装

PyCharm的安装地址&#xff1a;http://www.jetbrains.com/pycharm/download/#sectionwindows&#xff0c;免费的可以选择社区版本 Python解释器的安装地址&#xff1a;https://www.python.org/downloads/&#xff0c;选择对应的平台及版本下载&#xff0c;安装时勾选 添加到环…

HGOI 20190709 题解

Problem A 紫色激情 一个序列$\{a_n\}$&#xff0c;求出方差最大的子序列。 其中方差 [l,r] 的定义是$S^2 \frac{1}{n} \sum\limits_{il}^{r} (x_i-\bar{x})^2$ 对于100%的数据满足$n \leq 10^3$ Sol : 直接推一波公式就可以前缀和优化了。 ${ S_{l,r} }^2 -\bar{x}^2 \frac{…

C++标准库简介(转)

C标准库的所有头文件都没有扩展名。C标准库的内容总共在50个标准头文件中定义&#xff0c;其中18个提供了C库的功能。 <cname>形式的标准头文件【 <complex>例外】其内容与ISO标准C包含的name.h头文件相同&#xff0c;但容纳了C扩展的功能。在 <cname>形式标…

【jquery】$.each的使用方法

代码实现&#xff1a; $.each(goodsArray, function(index){if(goods.barCode goodsArray[index].barCode){goodsArray[index].count;boo true;return; }});

MyEclipse插件安装

一、安装方法&#xff1a; 方法一、如果可以上网可在线安装 1. 打开Myeclipse&#xff0c;在菜单栏中选择Help→Software Updates→Find and Install; 2. 选择Search for new features to install&#xff0c;点击Next进入下一步; 3. 点击"New Remote Site"按钮&…

软件质量与测试 第4周小组作业

一、项目地址 https://github.com/changjiang666/WcPro 二、PSP 三、设计思路 我负责main函数的编写和print输出模块的编写。 1.main函数 int main(/*int argc, char **argv*/) {char *textBuf readfile("test.txt"); // 读取输入文件WcPro wcpro(textBuf);// 将输入…

UVA 10714 - Ants

这道题是要我们找出所有蚂蚁中最靠近端点和最靠近中间的蚂蚁所在的位置&#xff0c;计算端点的蚂蚁爬到另一个 端点的时间和计算靠近中间的蚂蚁爬到离他近的端点的时间。我们只需分输入的位置在棒的左边还是右边 来讨论就行。 #include<iostream>using namespace std;int…

Mysql Cluster 集群 windows版本

VM1&#xff1a;192.168.220.102 管理节点(MGM) VM2&#xff1a;192.168.220.103 数据节点(NDBD1)&#xff0c;SQL节点(SQL1) VM3&#xff1a;192.168.220.104 数据节点(NDBD2)&#xff0c;SQL节点(SQL2) MySQL Cluster版本&#xff1a;7.4.6 (MSI Installer) 下载地址&…

【js】通过js代码改变html表单中的数据

代码实现&#xff1a; document.getElementById("sum").innerHTML sum;

Asp.net MVC 3实例学习之ExtShop(五)——产品详细页

在产品详细页需要使用到tab控件&#xff0c;在jquery的ui包已包含改控件&#xff0c;因而将相应文件链接加到母版页就可以了。 打开“ProductController”文件&#xff0c;在里面添加一个Details操作&#xff0c;代码如下&#xff1a; 1 public ActionResu…

linux安装配置postgres及使用dblink

好久不写东西&#xff0c;一直在看些开源的东西&#xff0c;下面贴下linux上安装配置postgres及使用dblink的操作参考&#xff0c;以供读者和自己今后参考&#xff1a; 1、下载源码&#xff1a;postgresql-9.3.2.tar.gz 2、创建postgres cluster组和用户&#xff1a; groupadd …

从瀑布模型、极限编程到敏捷开发

从瀑布模型、极限编程到敏捷开发---软件开发管理者思维的变化Jack zhai软件开发是一种对人类智慧的管理&#xff0c;对人大脑思维的“工厂化”管理。人是有感情的、有情绪的、变化的、相对独立的工作单元&#xff0c;这与冰冷的机器是不可比的&#xff0c;所以在中国的历史上&a…

递归和循环:跳台阶和变态跳台阶和矩形覆盖

题目描述 跳台阶:一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法&#xff08;先后次序不同算不同的结果&#xff09;。变态跳台阶:一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上…

【js】将json类型的数组或对象转为字符串

代码实现&#xff1a; JSON.stringify(goodsList); 注&#xff1a;该用法多用于数据的传输&#xff0c;如页面于servlet的数据传输不能使用gson的数组直接传输&#xff0c;使用该方法便可解决问题。

Android XML pull 解析器

Android 并未提供对 Java StAX API 的支持。但是&#xff0c;Android 确实附带了一个 pull 解析器&#xff0c;其工作方式类似于 StAX。它允许您的应用程序代码从解析器中获取事件&#xff0c;这与 SAX 解析器自动将事件推入处理程序相反。清单 10 显示了提要解析接口的一个 pu…

Zepto.js库touch模块代码解析

Zepto.js也许并不陌生&#xff0c;专门针对移动端开发&#xff0c;Zepto有一些基本的触摸事件可以用来做触摸屏交互&#xff08;tap事件、swipe事件&#xff09;&#xff0c;Zepto是不支持IE浏览器的。 下面来解析一些Zepto.js触摸事件的解析&#xff1a; 1.触摸事件离不开:tou…

PHP 常用字符串处理代码片段

移除 HTML 标签 $text strip_tags($input, ""); 返回 $start 和 $end 之间的文本function GetBetween($content,$start,$end){ $r explode($start, $content); if (isset($r[1])){ $r explode($end, $r[1]); return $r[0]; } ret…

【maven】初识maven

一&#xff1a;maven的配置&#xff1a; 集成到eclipse步骤&#xff1a; 1、下载maven&#xff0c;放到软件安装目录&#xff0c;打开目录&#xff1a;MAVEN_HOME/conf/ 2、修改文件setting.xml&#xff1a;仓库配置目录&#xff1a;<localRepository>D:\DATA\lo…

[C++再学习系列] 函数模板和类模板

函数模板和类模板 C 提供类模板和函数模板。函数模板允许重载 &#xff0c;而类模板不允许重载(类无重载概念)。类模板可以进行全特化和偏特化&#xff0c;而函数模板仅能够全特化 。因此&#xff0c;写一个看似函数模板偏特化的函数模板实际上是在写一个单独的主函数模板&…

git init 与 git init --bare 区别

git init 与 git init --bare 区别 发现问题 最早是在公司的wiki上发现了这个命令&#xff0c;google后发现值得记录下来 实践中发现的区别 网上找了很多资料&#xff0c;但说的很乱&#xff0c;干脆在自己的服务器上执行对比了一下&#xff1a;git init demo1 # 表示创建一个…

一个虚函数和虚继承的问题。

这个问题困惑好几天了。废话不多说&#xff0c;先上代码。 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 virtual void aa() 8 { 9 } 10 private: 11 char k[3]; 12 }; 13 14 class B:publi…

Linux性能分析命令工具汇总

转自&#xff1a;http://rdc.hundsun.com/portal/article/731.html?refmyread出于对Linux操作系统的兴趣&#xff0c;以及对底层知识的强烈欲望&#xff0c;因此整理了这篇文章。本文也可以作为检验基础知识的指标&#xff0c;另外文章涵盖了一个系统的方方面面。如果没有完善…