如何用.NET生成二维码

合集下载

如何在ASPNET和WPF中展示二维码

如何在ASPNET和WPF中展示二维码

如何在ASPNET和WPF中展示二维码3. 安装QrCodeNet插件,可以通过NuGet包管理器“QrCodeNet”并安装。

4. 在代码中引入QrCodeNet的命名空间 `using QrCodeNet;`。

```C#protected void Page_Load(object sender, EventArgs e)// 创建一个QrCode对象// 创建一个Bitmap对象,设置宽度和高度var qrCodeImage = new Bitmap(qrCode.Matrix.Width,qrCode.Matrix.Height);using (var graphics = Graphics.FromImage(qrCodeImage))// 使用SolidBrush设置前景色为黑色,背景色为白色var foreground = new SolidBrush(Color.Black);var background = new SolidBrush(Color.White);graphics.Clear(Color.White);for (var x = 0; x < qrCodeImage.Width; x++)for (var y = 0; y < qrCodeImage.Height; y++)if (qrCode.Matrix[x, y])graphics.FillRectangle(foreground, x, y, 1, 1);}elsegraphics.FillRectangle(background, x, y, 1, 1);}}}}using (var stream = new MemoryStream()qrCodeImage.Save(stream, ImageFormat.Png);var byteArray = stream.ToArray(;// 将字节数组转换为Base64字符串var base64String = Convert.ToBase64String(byteArray);// 将Base64字符串赋给Image控件的ImageUrl属性qrCodeImageControl.ImageUrl = "data:image/png;base64," + base64String;}```1. 打开Visual Studio并创建一个新的WPF应用程序项目。

C#利用ZXing.Net生成条形码和二维码

C#利用ZXing.Net生成条形码和二维码

C#利⽤⽣成条形码和⼆维码本⽂是利⽤在WinForm中⽣成条形码,⼆维码的⼩例⼦,仅供学习分享使⽤,如有不⾜之处,还请指正。

什么是?ZXing是⼀个开放源码的,⽤Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语⾔的端⼝。

⽽是ZXing 的端⼝之⼀。

在⼯程中引⽤在项⽬中,点击项⽬名称右键-->管理NuGet程序包,打开NuGet包管理器窗⼝,进⾏搜索下载即可,如下图所⽰:关键类结构图包括Reader【识别图⽚中的条形码和⼆维码】) 和Writer【⽣成条形码和⼆维码到图⽚中】两部分,如下图所⽰:涉及知识点:BarcodeWriter ⽤于⽣成图⽚格式的条码类,通过Write函数进⾏输出。

继承关系如上图所⽰。

BarcodeFormat 枚举类型,条码格式QrCodeEncodingOptions ⼆维码设置选项,继承于EncodingOptions,主要设置宽,⾼,编码⽅式等信息。

MultiFormatWriter 复合格式条码写码器,通过encode⽅法得到BitMatrix。

BitMatrix 表⽰按位表⽰的⼆维矩阵数组,元素的值⽤true和false表⽰⼆进制中的1和0。

⽰例效果图关键代码如下所⽰,包含⼀维条码,⼆维条码,和带logo的条码using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Imaging;using System.Linq;using System.Text;using System.Threading.Tasks;using ZXing;using mon;using ZXing.QrCode;using ZXing.QrCode.Internal;namespace DemoQrCode{/// <summary>/// 描述:条形码和⼆维码帮助类/// 时间:2018-02-18/// </summary>public class BarcodeHelper{/// <summary>/// ⽣成⼆维码/// </summary>/// <param name="text">内容</param>/// <param name="width">宽度</param>/// <param name="height">⾼度</param>/// <returns></returns>public static Bitmap Generate1(string text,int width,int height){BarcodeWriter writer = new BarcodeWriter();writer.Format = BarcodeFormat.QR_CODE;QrCodeEncodingOptions options = new QrCodeEncodingOptions(){DisableECI = true,//设置内容编码CharacterSet = "UTF-8", //设置⼆维码的宽度和⾼度Width = width,Height = height,Margin = 1//设置⼆维码的边距,单位不是固定像素};writer.Options = options;Bitmap map = writer.Write(text);return map;}/// <summary>/// ⽣成⼀维条形码/// </summary>/// <param name="text">内容</param>/// <param name="width">宽度</param>/// <param name="height">⾼度</param>/// <returns></returns>public static Bitmap Generate2(string text,int width,int height){BarcodeWriter writer = new BarcodeWriter();//使⽤ITF 格式,不能被现在常⽤的⽀付宝、微信扫出来//如果想⽣成可识别的可以使⽤ CODE_128 格式//writer.Format = BarcodeFormat.ITF;writer.Format = BarcodeFormat.CODE_39;EncodingOptions options = new EncodingOptions(){Width = width,Height = height,Margin = 2};writer.Options = options;Bitmap map = writer.Write(text);return map;}/// <summary>/// ⽣成带Logo的⼆维码/// </summary>/// <param name="text">内容</param>/// <param name="width">宽度</param>/// <param name="height">⾼度</param>public static Bitmap Generate3(string text, int width, int height){//Logo 图⽚string logoPath = System.AppDomain.CurrentDomain.BaseDirectory + @"\img\logo.png"; Bitmap logo = new Bitmap(logoPath);//构造⼆维码写码器MultiFormatWriter writer = new MultiFormatWriter();Dictionary<EncodeHintType, object> hint = new Dictionary<EncodeHintType, object>(); hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);//hint.Add(EncodeHintType.MARGIN, 2);//旧版本不起作⽤,需要⼿动去除⽩边//⽣成⼆维码BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, width+30, height+30, hint); bm = deleteWhite(bm);BarcodeWriter barcodeWriter = new BarcodeWriter();Bitmap map = barcodeWriter.Write(bm);//获取⼆维码实际尺⼨(去掉⼆维码两边空⽩后的实际尺⼨)int[] rectangle = bm.getEnclosingRectangle();//计算插⼊图⽚的⼤⼩和位置int middleW = Math.Min((int)(rectangle[2] / 3), logo.Width);int middleH = Math.Min((int)(rectangle[3] / 3), logo.Height);int middleL = (map.Width - middleW) / 2;int middleT = (map.Height - middleH) / 2;Bitmap bmpimg = new Bitmap(map.Width, map.Height, PixelFormat.Format32bppArgb); using (Graphics g = Graphics.FromImage(bmpimg)){g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;positingQuality = positingQuality.HighQuality;g.DrawImage(map, 0, 0,width,height);//⽩底将⼆维码插⼊图⽚g.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH);g.DrawImage(logo, middleL, middleT, middleW, middleH);}return bmpimg;}/// <summary>/// 删除默认对应的空⽩/// </summary>/// <param name="matrix"></param>/// <returns></returns>private static BitMatrix deleteWhite(BitMatrix matrix){int[] rec = matrix.getEnclosingRectangle();int resWidth = rec[2] + 1;int resHeight = rec[3] + 1;BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);resMatrix.clear();for (int i = 0; i < resWidth; i++){for (int j = 0; j < resHeight; j++){if (matrix[i + rec[0], j + rec[1]])resMatrix[i, j]=true;}}return resMatrix;}}}关于⽣成条形码和⼆维码的⽅式有很多,条码的种类也有很多种,每⼀种都有其对应的应⽤领域。

生成二维码代码

生成二维码代码

一、Java所需jar包:QRCode.jar/detail/wangpeng047/4008532TwoDimensionCode类:二维码操作核心类[java]view plaincopy1.package qrcode;2.3.import java.awt.Color;4.import java.awt.Graphics2D;5.import java.awt.image.BufferedImage;6.import java.io.File;7.import java.io.IOException;8.import java.io.InputStream;9.import java.io.OutputStream;10.11.import javax.imageio.ImageIO;12.13.import jp.sourceforge.qrcode.QRCodeDecoder;14.import jp.sourceforge.qrcode.exception.DecodingFailedException;15.16.import com.swetake.util.Qrcode;17.18.public class TwoDimensionCode {19.20./**21. * 生成二维码(QRCode)图片22. * @param content 存储内容23. * @param imgPath 图片路径24. */25.public void encoderQRCode(String content, String imgPath) {26.this.encoderQRCode(content, imgPath, "png", 7);27. }28.29./**30. * 生成二维码(QRCode)图片31. * @param content 存储内容32. * @param output 输出流33. */34.public void encoderQRCode(String content, OutputStream output) {35.this.encoderQRCode(content, output, "png", 7);36. }37.38./**39. * 生成二维码(QRCode)图片40. * @param content 存储内容41. * @param imgPath 图片路径42. * @param imgType 图片类型43. */44.public void encoderQRCode(String content, String imgPath, String imgType) {45.this.encoderQRCode(content, imgPath, imgType, 7);46. }47.48./**49. * 生成二维码(QRCode)图片50. * @param content 存储内容51. * @param output 输出流52. * @param imgType 图片类型53. */54.public void encoderQRCode(String content, OutputStream output, String imgType) {55.this.encoderQRCode(content, output, imgType, 7);56. }57.58./**59. * 生成二维码(QRCode)图片60. * @param content 存储内容61. * @param imgPath 图片路径62. * @param imgType 图片类型63. * @param size 二维码尺寸64. */65.public void encoderQRCode(String content, String imgPath, String imgType, int size) {66.try {67. BufferedImage bufImg = this.qRCodeCommon(content, imgType, size);68.69. File imgFile = new File(imgPath);70.// 生成二维码QRCode图片71. ImageIO.write(bufImg, imgType, imgFile);72. } catch (Exception e) {73. e.printStackTrace();74. }75. }76.77./**78. * 生成二维码(QRCode)图片79. * @param content 存储内容80. * @param output 输出流81. * @param imgType 图片类型82. * @param size 二维码尺寸83. */84.public void encoderQRCode(String content, OutputStream output, String imgType, int size) {85.try {86. BufferedImage bufImg = this.qRCodeCommon(content, imgType, size);87.// 生成二维码QRCode图片88. ImageIO.write(bufImg, imgType, output);89. } catch (Exception e) {90. e.printStackTrace();91. }92. }93.94./**95. * 生成二维码(QRCode)图片的公共方法96. * @param content 存储内容97. * @param imgType 图片类型98. * @param size 二维码尺寸99. * @return100. */101.private BufferedImage qRCodeCommon(String content, String imgType, int size) {102. BufferedImage bufImg = null;103.try {104. Qrcode qrcodeHandler = new Qrcode();105.// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小106. qrcodeHandler.setQrcodeErrorCorrect('M');107. qrcodeHandler.setQrcodeEncodeMode('B');108.// 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大109. qrcodeHandler.setQrcodeVersion(size);110.// 获得内容的字节数组,设置编码格式111.byte[] contentBytes = content.getBytes("utf-8");112.// 图片尺寸113.int imgSize = 67 + 12 * (size - 1);114. bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE _INT_RGB);115. Graphics2D gs = bufImg.createGraphics();116.// 设置背景颜色117. gs.setBackground(Color.WHITE);118. gs.clearRect(0, 0, imgSize, imgSize);119.120.// 设定图像颜色> BLACK121. gs.setColor(Color.BLACK);122.// 设置偏移量,不设置可能导致解析出错123.int pixoff = 2;124.// 输出内容> 二维码125.if (contentBytes.length > 0 && contentBytes.length < 800) { 126.boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes) ;127.for (int i = 0; i < codeOut.length; i++) {128.for (int j = 0; j < codeOut.length; j++) {129.if (codeOut[j][i]) {130. gs.fillRect(j * 3 + pixoff, i * 3 + pixoff, 3,3);131. }132. }133. }134. } else {135.throw new Exception("QRCode content bytes length = " + cont entBytes.length + " not in [0, 800].");136. }137. gs.dispose();138. bufImg.flush();139. } catch (Exception e) {140. e.printStackTrace();141. }142.return bufImg;143. }144.145./**146. * 解析二维码(QRCode)147. * @param imgPath 图片路径148. * @return149. */150.public String decoderQRCode(String imgPath) {151.// QRCode 二维码图片的文件152. File imageFile = new File(imgPath);153. BufferedImage bufImg = null;154. String content = null;155.try {156. bufImg = ImageIO.read(imageFile);157. QRCodeDecoder decoder = new QRCodeDecoder();158. content = new String(decoder.decode(new TwoDimensionCodeImage(b ufImg)), "utf-8");159. } catch (IOException e) {160. System.out.println("Error: " + e.getMessage());161. e.printStackTrace();162. } catch (DecodingFailedException dfe) {163. System.out.println("Error: " + dfe.getMessage());164. dfe.printStackTrace();165. }166.return content;167. }168.169./**170. * 解析二维码(QRCode)171. * @param input 输入流172. * @return173. */174.public String decoderQRCode(InputStream input) {175. BufferedImage bufImg = null;176. String content = null;177.try {178. bufImg = ImageIO.read(input);179. QRCodeDecoder decoder = new QRCodeDecoder();180. content = new String(decoder.decode(new TwoDimensionCodeImage(b ufImg)), "utf-8");181. } catch (IOException e) {182. System.out.println("Error: " + e.getMessage());183. e.printStackTrace();184. } catch (DecodingFailedException dfe) {185. System.out.println("Error: " + dfe.getMessage());186. dfe.printStackTrace();187. }188.return content;189. }190.191.public static void main(String[] args) {192. String imgPath = "G:/TDDOWNLOAD/Michael_QRCode.png";193. String encoderContent = "Hello 大大、小小,welcome to QRCode!" + "\nMyblog [ ]" + "\nEMail [ sjsky007@ ]";194. TwoDimensionCode handler = new TwoDimensionCode();195. handler.encoderQRCode(encoderContent, imgPath, "png");196.// try {197.// OutputStream output = new FileOutputStream(imgPath);198.// handler.encoderQRCode(content, output);199.// } catch (Exception e) {200.// e.printStackTrace();201.// }202. System.out.println("========encoder success");203.204.205. String decoderContent = handler.decoderQRCode(imgPath);206. System.out.println("解析结果如下:");207. System.out.println(decoderContent);208. System.out.println("========decoder success!!!");209. }210.}TwoDimensionCodeImage 类:二维码图片对象[java]view plaincopy1.package qrcode;2.3.import java.awt.image.BufferedImage;4.5.import jp.sourceforge.qrcode.data.QRCodeImage;6.7.public class TwoDimensionCodeImage implements QRCodeImage {8.9. BufferedImage bufImg;10.11.public TwoDimensionCodeImage(BufferedImage bufImg) {12.this.bufImg = bufImg;13. }14.15.@Override16.public int getHeight() {17.return bufImg.getHeight();18. }19.20.@Override21.public int getPixel(int x, int y) {22.return bufImg.getRGB(x, y);23. }24.25.@Override26.public int getWidth() {27.return bufImg.getWidth();28. }29.30.}1.java这边的话生成二维码有很多开发的jar包如zxing,qrcode.q前者是谷歌开发的后者则是小日本开发的,这里的话我使用zxing的开发包来弄2.先下载zxing开发包,这里用到的只是core那个jar包3.使用zxing开发还需要一个类,代码如下4.借助上面的类生成二维码Java代码实现二维码生成与解析 import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage; import java.io.File;import javax.imageio.ImageIO; import com.swetake.util.Qrcode;public class QRCodeEncoderTest {public static void main(String[] args) throws Exception { Qrcode qrcode=new Qrcode(); qrcode.setQrcodeErrorCorrect('M'); qrcode.setQrcodeEncodeMode('B'); qrcode.setQrcodeVersion(7); String testString = "_-+^%$#@!~`=&)*(";byte[] d =testString.getBytes("GBK");BufferedImage bi = new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB); // createGra phicsGraphics2D g = bi.createGraphics(); // set backgroundg.setBackground(Color.WHITE); g.clearRect(0, 0, 139, 139); g.setColor(Color.BLACK);if (d.length>0 && d.length <123){ boolean[][] b = qrcode.calQrcode(d);for (int i=0;i<b.length;i++){for (int j=0;j<b.length;j++){ if (b[j][i]) {g.fillRect(j*3+2,i*3+2,3,3); } } } } g.dispose(); bi.flush();String FilePath="TestQRCode.png"; File f = new File(FilePath); ImageIO.write(bi, "png", f); Syst em.out.println("doned!"); } }import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage; import java.io.File;import javax.imageio.ImageIO; import com.swetake.util.Qrcode;public class QRCodeEncoderTest {public static void main(String[] args) throws Exception { Qrcode qrcode=new Qrcode();qrcode.setQrcodeErrorCorrect('M'); qrcode.setQrcodeEncodeMode('B'); qrcode.setQrcodeVersio n(7);String testString = "_-+^%$#@!~`=&)*(";byte[] d =testString.getBytes("GBK");BufferedImage bi = new BufferedImage(139, 139, BufferedImage.TYPE_INT_RGB); //createGraphi cs Graphics2D g = bi.createGraphics(); // set background g.setBackground(Color.WHITE); g.clearR ect(0, 0, 139, 139); g.setColor(Color.BLACK);if (d.length>0 && d.length <123){ boolean[][] b = qrcode.calQrcode(d); for (int i=0;i<b.length;i++) {for (int j=0;j<b.length;j++){if (b[j][i]) { g.fillRect(j*3+2,i*3+2,3,3); } } } }g.dispose(); bi.flush();String FilePath="TestQRCode.png";File f = new File(FilePath); ImageIO.write(bi, "png", f); System.out.println("doned!"); } } 解码测试: Java代码import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException;import java.io.UnsupportedEncodingException; import javax.imageio.ImageIO;import jp.sourceforge.qrcode.QRCodeDecoder; import jp.sourceforge.qrcode.data.QRCodeIma ge;import jp.sourceforge.qrcode.exception.DecodingFailedException; public class QRCodeDecoder Test { public QRCodeDecoderTest() {public static void main(String[] args) {QRCodeDecoder decoder = new QRCodeDecoder(); File imageFile = new File("TestQRCode.png" ); BufferedImage image = null; try {image = ImageIO.read(imageFile);} catch (IOException e) {System.out.println("Error: "+ e.getMessage()); }try {String decodedData = new String(decoder.decode(new J2SEImage(image)),"GBK"); System.out. println(decodedData);} catch (DecodingFailedException dfe) { System.out.println("Error: " + dfe.getMessage()); } catc h (UnsupportedEncodingException e) { e.printStackTrace(); } } }class J2SEImage implements QRCodeImage { BufferedImage image;public J2SEImage(BufferedImage image) { this.image = image;}public int getWidth() { return image.getWidth(); }public int getHeight() { return image.getHeight(); }public int getPixel(int x, int y) { return image.getRGB(x, y); } }/// 生成二维码(利用dll)/// </summary>/// <param name="data">生成二维码数据</param>/// <param name="filename">图片名称</param>private void createcode(string data,string filename){//Image1.ImageUrl = "Qcodeimage.aspx?strs="+data;QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;qrCodeEncoder.QRCodeScale = 3;qrCodeEncoder.QRCodeVersion = 8;qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//String data = "12345678abcdeftlljws#你好";System.Drawing.Bitmap image = qrCodeEncoder.Encode(data);System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(image.Width + 30, image.Height + 30);//这里是背景图片//bmp.SetPixel(0, 0, Color.White);System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bmp);g.Clear(Color.White);//把背景图片换成白色g.DrawImage(image, new Rectangle(15, 15, image.Width+5, image.Height+5), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel);//Rectangle为15距离顶部和15左边的距离。

generateqrcode方法

generateqrcode方法

generateqrcode方法介绍generateqrcode方法是一个用于生成二维码的函数。

二维码是一种矩阵条码,可以存储大量信息,包括文本、链接、电话号码等。

它已经成为了现代社会中非常重要的一种信息传递方式。

generateqrcode方法可以根据给定的输入参数生成一个二维码,并将其保存为图像文件。

功能generateqrcode方法的功能如下:1.接收一个字符串作为输入参数,用于生成二维码。

2.根据输入参数生成一个二维码图像。

3.将生成的二维码图像保存为图像文件。

使用方法generateqrcode方法的使用方法如下:generateqrcode(data, filename)其中,data是一个字符串,表示要生成二维码的内容;filename是一个字符串,表示要保存的图像文件名。

实现步骤generateqrcode方法的实现步骤如下:1.导入必要的模块,包括qrcode模块和PIL模块。

2.创建一个QRCode对象,用于生成二维码。

3.设置二维码的内容为输入参数中的字符串。

4.调用make方法生成二维码图像。

5.将生成的二维码图像保存为图像文件。

下面是generateqrcode方法的具体实现代码:import qrcodefrom PIL import Imagedef generateqrcode(data, filename):# 创建QRCode对象qr = qrcode.QRCode()# 设置二维码的内容qr.add_data(data)# 生成二维码图像qr.make()img = qr.make_image()# 保存二维码图像img.save(filename)示例下面是一个使用generateqrcode方法生成二维码的示例:data = ""filename = "qrcode.png"generateqrcode(data, filename)这个示例会生成一个包含指定链接的二维码,并将其保存为名为qrcode.png的图像文件。

如何用.NET生成二维码

如何用.NET生成二维码

如何用.NET生成二维码二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,国外对二维码技术的研究始于20世纪80年代末,在二维码符号表示技术研究方面已研制出多种码制,北大青鸟中关村学士后本部常见的有PDF417、QR Code、Code 49、Code 16K、Code One等。

二维码技术已经被广泛应用于公安、外交、军事等部门对各类证件的管理,而且也将二维码应用于海关、税务等部门对各类报表和票据的管理,商业、交通运输等部门对商品及货物运输的管理、邮政部门对邮政包裹的管理、工业生产领域对工业生产线的自动化管理。

下面介绍一下如何用.NET生成二维码(QR Code码制),下面给出详细步骤:1、新建一个window应用程序,然后引入.NET二维码类库(开源的类库,可从网上下载):2、构建UI界面,代码如下:namespace WinQRCode{partial class Form1{/// <summary>/// 必需的设计器变量。

/// </summary>private ponentModel.IContainer components = null;/// <summary>/// 清理所有正在使用的资源。

/// </summary>/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。

</param>protected override void Dispose(bool disposing){if (disposing && (components != null)){components.Dispose();}base.Dispose(disposing);}#region Windows 窗体设计器生成的代码/// <summary>/// 设计器支持所需的方法 - 不要/// 使用代码编辑器修改此方法的内容。

C# 、VB 在Word中添加条码、二维码

C# 、VB 在Word中添加条码、二维码

C#/ 在Word中添加条码、二维码本文介绍如何通过C# 和代码实现在Word文档中添加条码和二维码。

代码中将分为在Word正文段落中、页眉页脚中等情况来添加。

使用工具:Free Spire.Office for .NET (免费版)工具简介:这是Spire所有.NET平台下免费产品的集合包,包含Spire.Barcode.dll、Spire.DataExport.dll、Spire.Pdf.dll、Spire.Doc.dll、Spire.DocViewer.Forms.dll 、Spire.PdfViewer.Forms.dll 、Spire.Presentation.dll 、Spire.XLS.dll等dll可用于操作Word/PDF/Excel/PPT等文件。

本文添加条码、二维码需要在VS程序中添加引用Spire.Doc.dll和Spire.Barcode.dll这两个dll 文件。

dll添加引用效果:注意:1. 需要下载安装到本地指定路径,dll文件可在安装路径下的Bin文件夹下获取。

2. 生成的条码、二维码会有水印字样的文字,可通过此方法去除。

代码示例1. 添加条码到WordC#using Spire.Doc;using Spire.Barcode;using System.Drawing;using System.IO;using Spire.Doc.Documents;namespace AddBarcode{class Program{static void Main(string[] args){//调用方法 ApplyKey(string key) 移除水印文字Spire.Barcode.BarcodeSettings.ApplyKey("在这里输入去除水印字样的序列号");//创建Document对象,加载Word文档Document doc = new Document();doc.LoadFromFile("test.docx");//获取第2节Section section = doc.Sections[1];//使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建条码并保存为图片BarcodeSettings settings = new BarcodeSettings();settings.Type = BarCodeType.Code128;settings.Data = "123456789";settings.Data2D = "123456789";settings.ShowText = false;settings.BarHeight = 4;settings.X = 0.3f;settings.HasBorder = true;settings.BorderWidth = 0.5f;settings.BorderColor = Color.AliceBlue;settings.BackColor = Color.Wheat;BarCodeGenerator barCodeGenerator = new BarCodeGenerator(settings);Image Image = barCodeGenerator.GenerateImage();//Image.Save("Barcode.png", System.Drawing.Imaging.ImageFormat.Png);//如果需要保存生成的Barcode图片,可执行此步骤代码//添加条码到正文段落Paragraph paragraph = section.AddParagraph();paragraph.Text = "收货码:";paragraph.AppendPicture(Image);paragraph.Format.HorizontalAlignment = HorizontalAlignment.Right;//添加条码图片到Word页脚HeaderFooter footer = section.HeadersFooters.Footer;Paragraph footerpara = footer.AddParagraph();footerpara.Text = "扫码识真伪:";footerpara.AppendPicture(Image);footerpara.Format.HorizontalAlignment = HorizontalAlignment.Left;//保存文档doc.SaveToFile("BarCodeToWord.docx", FileFormat.Docx2013);System.Diagnostics.Process.Start("BarCodeToWord.docx");}}}条码添加效果:Imports Spire.DocImports Spire.BarcodeImports System.DrawingImports System.IOImports Spire.Doc.DocumentsNamespace AddBarcodeClass ProgramPrivate Shared Sub Main(args As String())'调用方法ApplyKey(string key) 移除水印文字Spire.Barcode.BarcodeSettings.ApplyKey("在这里输入去除水印字样的序列号")'创建Document对象,加载Word文档Dim doc As New Document()doc.LoadFromFile("test.docx")'获取第2节Dim section As Section = doc.Sections(1)'使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建条码并保存为图片Dim settings As New BarcodeSettings()settings.Type = BarCodeType.Code128settings.Data = "123456789"settings.Data2D = "123456789"settings.ShowText = Falsesettings.BarHeight = 4settings.X = 0.3Fsettings.HasBorder = Truesettings.BorderWidth = 0.5Fsettings.BorderColor = Color.AliceBluesettings.BackColor = Color.WheatDim barCodeGenerator As New BarCodeGenerator(settings)Dim Image As Image = barCodeGenerator.GenerateImage()'Image.Save("Barcode.png", System.Drawing.Imaging.ImageFormat.Png);//如果需要保存生成的Barcode图片,可执行此步骤代码'添加条码到正文段落Dim paragraph As Paragraph = section.AddParagraph()paragraph.Text = "收货码:"paragraph.AppendPicture(Image)paragraph.Format.HorizontalAlignment = HorizontalAlignment.Right'添加条码图片到Word页脚Dim footer As HeaderFooter = section.HeadersFooters.FooterDim footerpara As Paragraph = footer.AddParagraph()footerpara.Text = "扫码识真伪:"footerpara.AppendPicture(Image)footerpara.Format.HorizontalAlignment = HorizontalAlignment.Left'保存文档doc.SaveToFile("BarCodeToWord.docx", FileFormat.Docx2013)System.Diagnostics.Process.Start("BarCodeToWord.docx")End SubEnd ClassEnd Namespace2. 添加二维码到WordC#using Spire.Doc;using Spire.Barcode;using System.Drawing;using System.IO;using Spire.Doc.Documents;using System;namespace AddQRCode{class Program{static void Main(string[] args){//调用方法 ApplyKey(string key) 移除水印文字Spire.Barcode.BarcodeSettings.ApplyKey("在这里输入去除水印字样的序列号");//创建Document对象,加载Word文档Document doc = new Document();doc.LoadFromFile("test.docx");//获取第2节Section section = doc.Sections[1];//使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建二维码并保存为图片BarcodeSettings settings = new BarcodeSettings();settings.Type = BarCodeType.QRCode;settings.ImageWidth = 50;settings.ImageHeight = 50;settings.Data = "123456";settings.Data2D = "123456";settings.X =0.7f;settings.LeftMargin = 1;settings.ShowTextOnBottom = true;settings.QRCodeECL = QRCodeECL.Q;settings.QRCodeDataMode = QRCodeDataMode.Numeric;BarCodeGenerator generator = new BarCodeGenerator(settings);Image image = generator.GenerateImage();//image.Save("QRCode.png", System.Drawing.Imaging.ImageFormat.Png);//如果需要保存生成的二维码图片,可执行此步骤代码//添加二维码到正文段落Paragraph paragraph = section.AddParagraph();paragraph.AppendPicture(image);paragraph.Format.HorizontalAlignment = HorizontalAlignment.Right;//添加二维码图片到Word页眉HeaderFooter header = section.HeadersFooters.Header;//HeaderFooter footer = section.HeadersFooters.Footer;//获取页脚Paragraph headerpara = header.AddParagraph();headerpara.AppendPicture(image);headerpara.Format.HorizontalAlignment = HorizontalAlignment.Center;//保存文档doc.SaveToFile("QRCodeToHeader.docx", FileFormat.Docx2013);System.Diagnostics.Process.Start("QRCodeToHeader.docx");}}}二维码添加效果:Imports Spire.DocImports Spire.BarcodeImports System.DrawingImports System.IOImports Spire.Doc.DocumentsNamespace AddQRCodeClass ProgramPrivate Shared Sub Main(args As String())'调用方法ApplyKey(string key) 移除水印文字Spire.Barcode.BarcodeSettings.ApplyKey("在这里输入去除水印字样的序列号")'创建Document对象,加载Word文档Dim doc As New Document()doc.LoadFromFile("test.docx")'获取第2节Dim section As Section = doc.Sections(1)'使用Spire.Barcode的BarcodeSettings和BarcodeGenerator类创建二维码并保存为图片Dim settings As New BarcodeSettings()settings.Type = BarCodeType.QRCodesettings.ImageWidth = 50settings.ImageHeight = 50settings.Data = "123456"settings.Data2D = "123456"settings.X = 0.7Fsettings.LeftMargin = 1settings.ShowTextOnBottom = Truesettings.QRCodeECL = QRCodeECL.Qsettings.QRCodeDataMode = QRCodeDataMode.NumericDim generator As New BarCodeGenerator(settings)Dim image As Image = generator.GenerateImage()'image.Save("QRCode.png", System.Drawing.Imaging.ImageFormat.Png);//如果需要保存生成的二维码图片,可执行此步骤代码'添加二维码到正文段落Dim paragraph As Paragraph = section.AddParagraph()paragraph.AppendPicture(image)paragraph.Format.HorizontalAlignment = HorizontalAlignment.Right'添加二维码图片到Word页眉Dim header As HeaderFooter = section.HeadersFooters.Header'HeaderFooter footer = section.HeadersFooters.Footer;//获取页脚Dim headerpara As Paragraph = header.AddParagraph()headerpara.AppendPicture(image)headerpara.Format.HorizontalAlignment = HorizontalAlignment.Center'保存文档doc.SaveToFile("QRCodeToHeader.docx", FileFormat.Docx2013)System.Diagnostics.Process.Start("QRCodeToHeader.docx")End SubEnd ClassEnd Namespace。

ASP.NET实现二维码(QRCode)的创建和读取

ASP.NET实现二维码(QRCode)的创建和读取

实现⼆维码(QRCode)的创建和读取⼀、项⽬引⽤QRCode的DLL⽂件(ThoughtWorks.QRCode.dll)⼆、ASPX页⾯(两个jquery的js⽂件请⾃⾏去官⽹下载):<html xmlns="/1999/xhtml"><head runat="server"><title>⼆维码⼯具测试</title><script type="text/javascript" src="../../Scripts/Jquery/jquery-1.6.2.js"></script><script type="text/javascript" src="../../Scripts/Jquery/jquery.form.js"></script><script type="text/javascript" src="js/test.js"></script><style type="text/css">.style1{width: 100%;}#txt_qr{width: 632px;}</style></head><body><div><table class="style1"><tr><td>输⼊⽂字:</td><td><input type="text" id="txt_qr" name="txt_qr" /></td></tr><tr><td>⼆维码图⽚</td><td><img id="qrimg" alt="⼆维码图⽚" /></td></tr><tr><td>⽣成选项</td><td>Encoding:<select id="Encoding"><option value="Byte">Byte</option><option value="AlphaNumeric">AlphaNumeric</option><option value="Numeric">Numeric</option></select>Correction Level:<select id="Level"><option value="M">M</option><option value="L">L</option><option value="Q">Q</option><option value="H">H</option></select>Version:<input id="txt_ver" type="text" value="7" />(1-40) Size:<input id="txt_size"type="text" value="4" /></td></tr><tr><td colspan="4"><input type="button" onclick="getQrImg();" value="⽣成⼆维码" /></td></tr><tr><td><form id="qrForm" action="Ashx/test.ashx" method="post" enctype="multipart/form-data"><input type="file" id="file_qr" name="file_qr" /><input type="submit" value="读取⼆维码" /></form></td><td colspan="1"><img id="img_qr" alt="要读取的图⽚" /><br /><input id="txt_readqr" type="text" /></td></tr></table></div></body></html> 三、test.js⽂件$(document).ready(function (){var options = {beforeSubmit: showRequest,success: showResponse,dataType: 'json',clearForm: true,error: function (request, message, ex){alert('错误:' + message);}};$('#qrForm').ajaxForm(options);});function showRequest(formData, jqForm, options){return true;}function showResponse(responseText, statusText, xhr, $form){if (responseText[0].count == 0){alert(responseText[0].list[0].error);return false;}$("#img_qr").attr("src", responseText[0].list[0].imgurl);$("#txt_readqr").val(responseText[0].list[0].qrtext);return false;}function getQrImg(){var txt_qr = escape($.trim($("#txt_qr").val()));var qrEncoding = $("#Encoding").val(); ;var Level = $("#Level").val(); ;var txt_ver = $("#txt_ver").val(); ;var txt_size = $("#txt_size").val(); ;$.ajax({type: "GET",data: "cmd=set&txt_qr=" + txt_qr + "&qrEncoding=" + qrEncoding + "&Level=" + Level + "&txt_ver=" + txt_ver + "&txt_size=" + txt_size, url: "Ashx/test.ashx",dataType: 'text',beforeSend: function (x){x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");},success: function (json){var dataObj = eval(json);$("#qrimg").attr("src", dataObj[0].list[0].imgurl);return false;},error: function (request, message, ex){alert("错误:" + message);}});} 四、test.ashx,没有判断⽬录是否存在等问题,请⾃⾏建⽴或者更改代码。

.Net生成二维码及签到系统使用说明

.Net生成二维码及签到系统使用说明

签到系统使用说明一、前言:本签到系统可用于签到、发放礼品等,各种需要按独立个人或独立单位处理事项的业务中。

二、特点:1、使用SQLite数据库存储数据,方便快捷;2、可动态配置用于处理的项目(如签到、发放礼品等),处理项目最少为一项;3、可自动生成二维码,并提供三种方式加密二维码;4、可将生成通过Excel导入的数据导出成Mysql脚本。

注:可在手机或平板电脑中集成扫描二维码,并发送相关信息至本系统,实现快捷签到三、运行方式:1、推荐运行环境:1)Windows 98以上系统,内存512以上,40G以上硬盘;2).netFramework3.0。

3)开发环境:VS2010。

2、下载.net Framwork: /showtopic-41409.html3、运行:1)运行【导入Excel并生成DB】文件夹下的InfowayProcessMeetingDbAndQRCode.exe,生成用于签到的SQLite库文件signDB.sdf,具体步骤见【四、使用步骤】;2)运行【依据DB签到】文件夹下的InfowayReceiveForm.exe,用于签到系统,具体步骤见【四、使用步骤】。

四、使用步骤:1、运行【导入Excel并生成DB】文件夹下的InfowayProcessMeetingDbAndQRCode.exe;2、如图1,点击导入数据工具按钮,选择【签到测试文档.xls】,若跳出如图2-2的对话框,则将【导入Excel并生成DB】文件夹下的删除或改名即可正常运行,导入数据时会在右上角部分显示如图2-3的进度条;图2-1 图2-2图2-33、导入成功后,右侧会自动显示Excel中的内容(过程中会有进度条显示导入进度);图3-14、此时可以在【配置信息】下的文本框中填写需要增加的签到项(如抽奖等),并点击【添加列】按钮,则在【添加列】按钮下方的表格中会添加上抽奖这一列(如图4-1和图4-2),同样,在【添加列】按钮下方的表格中选中某一列并右击会出现【删除列】的上下文菜单按钮,点击【删除列】后弹出如图4-2的对话框,点是则刚才增加的【抽奖】列就会被删除掉(如图4-3和图4-4)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何用.NET生成二维码二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,国外对二维码技术的研究始于20世纪80年代末,在二维码符号表示技术研究方面已研制出多种码制,常见的有PDF417、QR Code、Code 49、Code 16K、Code One等。

北大青鸟中关村学士后本部二维码技术已经被广泛应用于公安、外交、军事等部门对各类证件的管理,而且也将二维码应用于海关、税务等部门对各类报表和票据的管理,商业、交通运输等部门对商品及货物运输的管理、邮政部门对邮政包裹的管理、工业生产领域对工业生产线的自动化管理。

下面介绍一下如何用.NET生成二维码(QR Code码制),下面给出详细步骤:1、新建一个window应用程序,然后引入.NET二维码类库(开源的类库,可从网上下载):2、构建UI界面,代码如下:space WinQRCode2.{3. partial class Form14. {5./// <summary>6./// 必需的设计器变量。

7./// </summary>8.private ponentModel.IContainer components = null; 9.10./// <summary>11./// 清理所有正在使用的资源。

北大青鸟中关村学士后本部12./// </summary>13./// <param name="disposing">如果应释放托管资源,为 true;否则为 false。

</param>14.protected override void Dispose(bool disposing)15.{16.if (disposing && (components != null))17.{18. components.Dispose();19.}20.base.Dispose(disposing);21.}22.23.#region Windows 窗体设计器生成的代码24.25./// <summary>26./// 设计器支持所需的方法 - 不要27./// 使用代码编辑器修改此方法的内容。

28./// </summary>29.private void InitializeComponent()30.{31.this.button1 = new System.Windows.Forms.Button();32.this.button2 = new System.Windows.Forms.Button();33.this.pictureBox1 = newSystem.Windows.Forms.PictureBox();bel1 = new bel();35.this.textBox1 = new System.Windows.Forms.TextBox();bel2 = new bel();37.this.lbl解码信息 = new bel();38.((ponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();39.this.SuspendLayout();40.//41.// button142.//43.this.button1.Location = new System.Drawing.Point(446,31);System.Windows.Forms.Padding(4, 5, 4, 5); = "button1";46.this.button1.Size = new System.Drawing.Size(103, 37);47.this.button1.TabIndex = 0;48.this.button1.Text = "编码";eVisualStyleBackColor = true;50.this.button1.Click += newSystem.EventHandler(this.button1_Click);51.//52.// button2北大青鸟中关村学士后本部53.//54.this.button2.Location = new System.Drawing.Point(446,81);55.this.button2.Margin = newSystem.Windows.Forms.Padding(4, 5, 4, 5); = "button2";57.this.button2.Size = new System.Drawing.Size(103, 37);58.this.button2.TabIndex = 1;59.this.button2.Text = "解码";eVisualStyleBackColor = true;61.this.button2.Click += new 北大青鸟中关村学士后本部System.EventHandler(this.button2_Click);62.//63.// pictureBox164.//65.this.pictureBox1.Location = newSystem.Drawing.Point(23, 117);66.this.pictureBox1.Margin = newSystem.Windows.Forms.Padding(4, 5, 4, 5); = "pictureBox1";68.this.pictureBox1.Size = new System.Drawing.Size(279,253);69.this.pictureBox1.SizeMode =System.Windows.Forms.PictureBoxSizeMode.StretchImage;70.this.pictureBox1.TabIndex = 2;71.this.pictureBox1.TabStop = false;72.//73.// label174.//bel1.AutoSize = true;bel1.Location = new System.Drawing.Point(18,39);System.Windows.Forms.Padding(4, 0, 4, 0); = "label1";bel1.Size = new System.Drawing.Size(69, 25);bel1.TabIndex = 3;bel1.Text = "信息:";82.//83.// textBox184.//85.this.textBox1.Location = new System.Drawing.Point(95,37);86.this.textBox1.Margin = newSystem.Windows.Forms.Padding(4, 5, 4, 5); = "textBox1";88.this.textBox1.Size = new System.Drawing.Size(333, 31);89.this.textBox1.TabIndex = 4;90.//91.// label292.//bel2.AutoSize = true;bel2.Location = new System.Drawing.Point(18,81);bel2.Margin = newSystem.Windows.Forms.Padding(4, 0, 4, 0); = "label2";北大青鸟中关村学士后本部bel2.Size = new System.Drawing.Size(88, 25);bel2.TabIndex = 5;bel2.Text = "二维码:";100.//101.// lbl解码信息102.//103.this.lbl解码信息.AutoSize = true;104.this.lbl解码信息.Location = newSystem.Drawing.Point(101, 81);105.this.lbl解码信息.Margin = newSystem.Windows.Forms.Padding(4, 0, 4, 0);106.this.lbl解码信息.Name = "lbl解码信息";107.this.lbl解码信息.Size = new System.Drawing.Size(0,25);108.this.lbl解码信息.TabIndex = 6;109.//110.// Form1111.//112.this.AutoScaleDimensions = newSystem.Drawing.SizeF(11F, 24F);113.this.AutoScaleMode =System.Windows.Forms.AutoScaleMode.Font;114.this.ClientSize = new System.Drawing.Size(572, 384); 115.this.Controls.Add(this.lbl解码信息);116.this.Controls.Add(bel2);117.this.Controls.Add(this.textBox1);118.this.Controls.Add(bel1);119.this.Controls.Add(this.pictureBox1);120.this.Controls.Add(this.button2);121.this.Controls.Add(this.button1);122.this.Font = new System.Drawing.Font("微软雅黑", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,((byte)(134)));123.this.Margin = new System.Windows.Forms.Padding(4, 5, 4, 5); = "Form1";125.this.Text = "二维码";北大青鸟中关村学士后本部126.((ponentModel.ISupportInitialize)(this.pi ctureBox1)).EndInit();127.this.ResumeLayout(false);128.this.PerformLayout();129.130.}131.132.#endregion133.134.private System.Windows.Forms.Button button1;135.private System.Windows.Forms.Button button2;136.private System.Windows.Forms.PictureBox pictureBox1;137.private bel label1;138.private System.Windows.Forms.TextBox textBox1;139.private bel label2;140.private bel lbl解码信息;141. }142.}图形如下所示:3、编写编码和解码按钮事件,进行编码和解码处理:北大青鸟中关村学士后本部ing System;ing System.Collections.Generic;ing ponentModel;ing System.Data;ing System.Drawing;ing System.Linq;ing System.Text;ing System.Windows.Forms;9.space WinQRCode11.{12. using ThoughtWorks.QRCode.Codec;13. using ThoughtWorks.QRCode.Codec.Data;14. using ThoughtWorks.QRCode.Codec.Util;15. using System.IO;16. using PdfToImage;17. public partial class Form1 : Form18. {19.public Form1()20.{21.InitializeComponent();22.}23./// <summary>24./// 编码25./// </summary>26./// <param name="sender"></param>27./// <param name="e"></param>28.private void button1_Click(object sender, EventArgs e)29.{30.if (this.textBox1.Text != "")31.{32. Cursor.Current = Cursors.WaitCursor;33. if (textBox1.Text.Trim() == String.Empty)34. {35.MessageBox.Show("不能为空.");36.return;37. }38. QRCodeEncoder qrCodeEncoder = newQRCodeEncoder();39. qrCodeEncoder.QRCodeEncodeMode =QRCodeEncoder.ENCODE_MODE.BYTE;40. qrCodeEncoder.QRCodeScale = 4;41. qrCodeEncoder.QRCodeVersion =7;42.qrCodeEncoder.QRCodeErrorCorrect =QRCodeEncoder.ERROR_CORRECTION.M;43. System.Drawing.Image image;44. String data = textBox1.Text;45. //编码46. image = qrCodeEncoder.Encode(data);47. //图片显示48. this.pictureBox1.Image = image;49. Cursor.Current = Cursors.Default;50.51.}52.}53./// <summary>54./// 解码55./// </summary>56./// <param name="sender"></param>57./// <param name="e"></param>58.private void button2_Click(object sender, EventArgs e)59.{60.Cursor.Current = Cursors.WaitCursor;61.Bitmap b = this.pictureBox1.Image as Bitmap;62.try63.{64. QRCodeDecoder decoder = new QRCodeDecoder();65. //解码66. String decodedString = decoder.decode(newQRCodeBitmapImage(b));67. //显示解码信息北大青鸟中关村学士后本部68. this.lbl解码信息.Text += decodedString ;69.}70.catch (Exception ex)71.{72. MessageBox.Show(ex.Message);73.}74.Cursor.Current = Cursors.Default;75.}76.77.private void Form1_Load(object sender, EventArgs e)78.{79.80.}81. }82.}4、编译运行,如下图:。

相关文档
最新文档