ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法

“索引超出了数组界限”也有可能确实是因为你选择的二维码Version对应的容量不足以存储你所放的内容,如果你确定使用的版本容量二维码能存储你的内容,但还是报错,那么再考虑此解决方法

这两天忙着做一个客户标签打印程序,因为二维码里面存在控制符,使用ZPL指令存在一些问题,因此决定使用生成二维码图片然后转换成ZPL格式图片来打印。途中找了很多类库,很多都无法自定义QR的version而放弃,转而找到ThoughtWorks.QRCode.dll,效果很满意,但是测试的时候发现经常会提示“索引超出了数组界限”异常,开始以为是内容太多的原因。测试多种version都不凑效,我使用的是version=10,而该版本最高可容纳213个字节,实际内容却只有100多个字节。然后网上各种找答案,要么说设置为0(0是QR自动大小)这样我使用该类库就没有意义了,而且使用此方法也测试过,依然报错。

然后我开始找ThoughtWorks.QRCode的源码,使用源码一行一行调试,结果发现使用源码自带的demo程序,设置与我程序一样的version,放一样的内容,竟然没有报错,此时我肯定了不是因为二维码容量导致的。

接着我开始两个程序同步调试,一行一行观察两个程序运行时源码QRCodeEncoder.cs中每个数值是否相同(里面计算太复杂了,整整调试了半个多小时),最后在我的程序在源码第448行处发现报了异常,源码demo却没有。查看代码,此处在读某个文件,

然后发现在源码demo程序生成文件夹中有这么一个文件夹(下图),按448行的理解,此文件夹中应该存储的是QR对应的Version的数据文件,用于计算二维码容量,而我的程序没有此文件夹计算结果为0,后续计算自然会报“索引超出了数组界限”异常。

把此文件夹复制到程序中,问题解决,不再报此异常。

数据文件下次再上传

时间: 2024-11-13 17:24:10

ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法的相关文章

Google API快速生成QR二维码

Google API快速生成QR二维码 现在来说生成二维码最简单的方法是使用Google Chart API来实现,再次膜拜Google大神- Google Chart API是一套可以让你在线生成报表图的系统,通过URL你可以得到各种图表.举个例子:你在浏览器中输入 https://chart.googleapis.com/chart?cht=qr&chs=200×200&choe=UTF-8&chld=L|4&chl=http://Codeup.org 你将得到一个内容

pbfunc外部函数扩展应用-直接在Datawindow中生成QR二维码,非图片方式

利用pbfunc外部函数在Datawindow中直接生成QR二维码,非图片方式.需要注意以下面几点: 1 Datawindow的DataObject的单位必须为像素(Pixels). 2 Datawindow的DataObject中放一个Text控件作为要显示QR二维码的位置和大小,长宽要相同 下面代码演示在Datawindow中直接显示QR二维码的操作: 在Datawindow中显示一行QR码: 1 string ls_Data 2 ls_Data = mle_1.Text//QR码内容 3

利用Google API快速生成QR二维码

//laravel public function index(){ $urlToEncode="http://www.baidu.com"; $this -> generateQRfromGoogle($urlToEncode); //return view('welcame'); } public function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0') { $chl =

Python qrcode 生成一个二维码

借助第三方库qrcode实现. 二维码图片生成借助pillow qrcode的安装 在命令行中输入 pip install qrcode[pil]   用法: 1.在命令行中输入 qr "Some text" > test.png 2.在python中输入 import qrcode img = qrcode.make('Some data here') 高级用法: 使用QRCode类 import qrcode qr = qrcode.QRCode( version=1, er

Asp.Net QRCode创建WEB二维码时遇到的问题!

12 条评论 C# Qrcode是一个开源的二维码生成类库,项目地址是:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 今天手头一个项目需要添加动态生成二维码的功能,所以把这个类库稍微研究了一下,遇到了一个问题.在我重新编译QRCodeLib这个类库的时候报错! 报错信息为: 错误    7    “ThoughtWorks.QRCode.Properties.Resources”并不包含“GetResou

为jquery qrcode生成的二维码嵌入图片

在一次微信项目中,需要实现通过扫描二维码来进行会议签到,二维码的生成选择了qrcode.js的版本,然后使用jquery.qrcode.js插件来绘制二维码. <script type="text/javascript" src="jquery-1.8.2.min.js" ></script> <script type="text/javascript" src="jquery.qrcode.js"

微信支付-无法识别qrcode生成的二维码图片

1.开始使用 table方式,但是还是无法识别二维码  http://www.cnblogs.com/staticed/p/8549316.html var code_url = data.code_url; $("#wechatQrcode").qrcode({ render: "table", //table方式 width: 200, //宽度 height:200, //高度 text: code_url //任意内容 }); 2.后来采用canvas方式,

jquery.qrcode二维码插件生成彩色二维码

jquery.qrcode.js 是居于jquery类库的绘制二维码的插件,用它来实现二维码图形渲染支持canvas和table两种绘图方式. (jquery.qrcode.js 设置显示方式为table时在webkit核心浏览器如chrome下会变形) 以下是测试代码(增加了颜色控制,可以设置4个区块的颜色值,需要指定render为table.),效果: jquery.qrcode生成彩色二维码" src="http://www.jbxue.com/d/file/2014/08/20

[AX2012 R3]在SSRS报表中使用QR二维码

AX2012是自带生成QR二维码的类,可以很方便的用在SSRS报表中,下面演示如何在RDP的报表中使用二维码,首先从定义临时表开始: 字段URL是要用于二维码的字符串,QrCode是container类型,保存最终生成的二维码图形二进制数据. DP类: class TestQrCodeDp extends SRSReportDataProviderBase { TestQrCodeTmp qrCodeTmp; } [ SRSReportDataSetAttribute(tableStr(Test