Generar Código Qr a través de una codificación en Base 64
Publicado por Pablo Daniel Almada (2 intervenciones) el 13/02/2021 15:26:40
Hola Foro de La web del programador
Mi pregunta s la siguiente con la librería ThoughtWorks.QRCode.Codec. Esta liberia me genera el codigo QR hasta cierta longituda de cadena, pero cuando la cadena es más larga como muestro en el ejemplo de abajo me produce el error: indice fuera de los limites de la matriz.
Ejemplo de la cadena: {"ver":1,"fecha":"2020-10-13","cuit":30000000007,"ptoVta":10,"tipoCmp":1,"nroCmp":94,"importe":12100,"moneda":"DOL","ctz":65,"tipoDocRec":80,"nroDocRec":20000000001,"tipoCodAut":"E","codAut":70417054367476}
Código de la cadena del ejemplo en base 64 en la cual se realiza la conversion a código qr: eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJucm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY1JlYyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0Ijo3MDQxNzA1NDM2NzQ3Nn0=
Aclaración: Cuando la longitud de la cadena es menor al de ejemplo, mas o menos a la mitad o un poco más, me realiza bien la generación del códgo GR, pero con la longitud del ejemplo ya no.
Señores del foro que conocen mucho del tema si me pueden ayudar a encontrar una solución a esta error. Se que me puede decir que busque otra librería , pero necesito hacerla en esta libreria porque luego este código se unirá a un proyecto donde tambien se usa esta librería.
A continuación dejo el código. Aclaro en lineas de comentarios donde se produce el error en visual studio. Gracias.
Mi pregunta s la siguiente con la librería ThoughtWorks.QRCode.Codec. Esta liberia me genera el codigo QR hasta cierta longituda de cadena, pero cuando la cadena es más larga como muestro en el ejemplo de abajo me produce el error: indice fuera de los limites de la matriz.
Ejemplo de la cadena: {"ver":1,"fecha":"2020-10-13","cuit":30000000007,"ptoVta":10,"tipoCmp":1,"nroCmp":94,"importe":12100,"moneda":"DOL","ctz":65,"tipoDocRec":80,"nroDocRec":20000000001,"tipoCodAut":"E","codAut":70417054367476}
Código de la cadena del ejemplo en base 64 en la cual se realiza la conversion a código qr: eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOjMwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJucm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY1JlYyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQXV0Ijo3MDQxNzA1NDM2NzQ3Nn0=
Señores del foro que conocen mucho del tema si me pueden ayudar a encontrar una solución a esta error. Se que me puede decir que busque otra librería , pero necesito hacerla en esta libreria porque luego este código se unirá a un proyecto donde tambien se usa esta librería.
A continuación dejo el código. Aclaro en lineas de comentarios donde se produce el error en visual studio. Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Drawing.Imaging;
using ThoughtWorks.QRCode.Codec;
namespace Generar_Codigo_QR_Lib_QRCode
{
public class QRCode
{
public Bitmap generarqr(string cadena, string ruta)
{
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
Image img;
Bitmap bmp;
//conversor de cadena en byte
byte[] Byte = System.Text.Encoding.UTF8.GetBytes(cadena);
//conversor de byte a base 64
string cadenaBase64 = Convert.ToBase64String(Byte);
//definir la escala del código QE
qrCodeEncoder.QRCodeScale = 3;
//generar el código QR. En esta linea se produce el error
img = qrCodeEncoder.Encode(cadenaBase64);
//crear una instancia de tipo Bitmap
bmp = new Bitmap(img);
//Guardar la ímágen QR resultante en una ruta específica
bmp.Save(@ruta + "\\" + "imagenqr.png");
return bmp;
}
}
}
Valora esta pregunta


0