Asp.net 获取泛微OA个人信息并生成二维码名片vCard

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录学习和探索过程

一、二维码名片vCard是什么?

vCard:它是一种用于定义电子名片的标准或这规范。常见的,我们的手机通讯录,可以导出为vCard格式。
网上也能在线生成相应的二维码名片,但网上在线的一般带有推广网址,信息杂。我们现在通过ThoughtWorks生成vCard格式的二维码名片,实现微信扫一扫就可以把名片存入到手机通讯录。(支持iOS和Android)
部分参考文档:https://blog.csdn.net/daiqianjie/article/details/51959542

二、使用步骤

1.引入库

代码如下:

using System;
using System.Drawing;//提供对GDI+图形功能的访问权限
using System.Text;
using System.Web.UI;
using System.Data.SqlClient;//数据连接
using ThoughtWorks.QRCode.Codec;//二维码生成与解析

用Nuget获取ThoughtWorks

2.读取OA数据

代码如下(示例):

ygid = Context.User.Identity.Name;//asp当前登录账号
using (SqlConnection conn = new SqlConnection("EHR数据源"))
     {
          conn.Open();
          SqlCommand command = new SqlCommand("select lastname,jobtitlename,departmentname,mobile,email,telephone from VW_YGXX where workcode = '" + ygid + "'", conn);//根据当前ID获取OA系统员工信息视图语句
          SqlDataReader sread = command.ExecuteReader();
          if (sread.Read())
          {
          //存一下读取的信息,方式无所谓
             Textname.Text = sread["lastname"].ToString();//名字
             Textpos.Text = sread["jobtitlename"].ToString();//职位
             Textdept.Text = sread["departmentname"].ToString();//部门名称
             Texttel.Text = sread["mobile"].ToString();//手机号码
             Textmail.Text = sread["email"].ToString();//邮箱地址
             Textstel.Text = sread["telephone"].ToString();//工作短号
                }
                conn.Close();
            }

3.生成名片

``

private void BuildCode()
        {
            try
            {
                StringBuilder card = new StringBuilder();
                card.Append("BEGIN:VCARD");
                card.Append("\r\nFN:" +"XX公司"+ Textname.Text);//可以在名字面前加个公司抬头
                card.Append("\r\nTITLE:" + Textpos.Text);
                card.Append("\r\nORG:" + Textcom.Text + ";" + Textdept.Text);
                card.Append("\r\nTEL;CELL:" + Texttel.Text);
                card.Append("\r\nTEL;WORK:" + Textstel.Text);
                card.Append("\r\nADR;WORK;POSTAL:" + Textadr.Text);
                //card.Append("\r\nURL:" + Textweb.Text);
                card.Append("\r\nEMAIL;WORK:" + Textmail.Text);
                card.Append("\r\nPHOTO;ENCODING=b;TYPE=JPEG:");
                card.Append("\r\nEND:VCARD\r\n");
                //card.ToString();
                Bitmap b = GetTwoDimensionCode(card.ToString(), string.Empty, 270, 270, "微软雅黑");
                //二维码图片的名称
                string filename = Textno.Text+"-" + DateTime.Now.ToString("yyyyMMddHHmmss");
                //保存二维码图片在DWimg路径下
                b.Save(Server.MapPath("~/DWimg/") + filename + ".jpg");
                //图片控件要显示的二维码图片路径
                Image1.ImageUrl = "~/DWimg/" + filename + ".jpg";
                string source = Server.MapPath("~/img/logo.jpg");
                
            }
            catch (Exception ex)
            {
                tsInfo.Visible = true;
                tsInfo.Text = ex.Message;
            }
        }
        public static Bitmap GetTwoDimensionCode(string strSource,
            string text, int width, int height, string fontName)
        {
            // 创建Bitmap对象
            Bitmap bmp = new Bitmap(width, height);
            // 从image创建 Graphics对象
            Graphics objGraphics = Graphics.FromImage(bmp);
            // 填上背景色
            objGraphics.FillRectangle(Brushes.White, 0, 0, bmp.Width, bmp.Height);
            // 
            QRCodeEncoder qrCodeEncoder =new QRCodeEncoder();
            // 设置编码方法
            qrCodeEncoder.QRCodeEncodeMode =
                QRCodeEncoder.ENCODE_MODE.BYTE;
            // 设置大小
            qrCodeEncoder.QRCodeScale = 3;
            // 适用于信息量较少的情形,图像越小保存的信息量越少
            //qrCodeEncoder.QRCodeScale = 4;
            // 设置版本
            qrCodeEncoder.QRCodeVersion = 0;
            // 设置错误校验的级别,正因为二维码有纠错能力,才能够加入logo
            qrCodeEncoder.QRCodeErrorCorrect =QRCodeEncoder.ERROR_CORRECTION.M;
            Bitmap image;
            image = qrCodeEncoder.Encode(strSource, Encoding.GetEncoding("utf-8"));
            // 写入二维码
            int x = (int)(width - image.Width) / 2;
            int y = (int)(height - image.Height) / 2;
            objGraphics.DrawImage(image, new Point(x, y));
            // 添加Logo图标并居中
            image = Properties.Resource1.logo1;
            x = (int)(width - image.Width) / 2;
            y = (int)(height - image.Height) / 2;
            objGraphics.DrawImage(image, new Point(x, y));
            return bmp;

        }

4.名片效果

在这里插入图片描述


# 总结
以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

载河之舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值