Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/02/2021, 10:57
pabje
 
Fecha de Ingreso: marzo-2008
Ubicación: Posadas Misiones Argentina
Mensajes: 480
Antigüedad: 16 años, 1 mes
Puntos: 1
Generar Código Qr a través de una codificación en Base 64

Hola ForosdelWeb

Mi pregunta es la siguiente con la librería ThoughtWorks.QRCode.Codec en c#. 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,"nr oCmp":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: eyJ2ZXIiOjEsImZlY2hhIjoiMjAyMC0xMC0xMyIsImN1aXQiOj MwMDAwMDAwMDA3LCJwdG9WdGEiOjEwLCJ0aXBvQ21wIjoxLCJu cm9DbXAiOjk0LCJpbXBvcnRlIjoxMjEwMCwibW9uZWRhIjoiRE 9MIiwiY3R6Ijo2NSwidGlwb0RvY1JlYyI6ODAsIm5yb0RvY1Jl YyI6MjAwMDAwMDAwMDEsInRpcG9Db2RBdXQiOiJFIiwiY29kQX V0Ijo3MDQxNzA1NDM2NzQ3Nn0=

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 QR, pero con la longitud del ejemplo ya no.

Señores del foro 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. En negrita está donde se produce el error en visual studio. Gracias.

Cita:
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;
//genrar el código QR
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;
}
}
}