jueves, 7 de noviembre de 2019

QRCode.js y Code Length OverFlow Error

El problema

Estoy generando QRCodes mediante  QRCode.js
https://github.com/davidshimjs/qrcodejs
Sin embargo según el contenido algunos se visualizan y otros no.
Mirando en la ventana del navegador veo:
Code Length Overflow Error
por algún problema en el código de QRCode.js

Solución

Usar la bifurcación del proyecto que realizó la compañía Keepx
https://github.com/KeeeX/qrcodejs
dado que el proyecto original no tiene mantenimiento desde hace años.

Referencias

https://github.com/davidshimjs/qrcodejs/issues/78#issuecomment-278567765

vcard, acentos y eñes.

El problema

Creas una página web desde donde pueden descargarse archivos VCard para importarlos y crear contactos en Outlook.
Todo funciona bien salvo que tildes, eñes u otros carácteres  no usados en inglés no se visualizan bien.
Por ejemplo Dª Estefanía se importa como D? Estefan?a

Contexto

El problema me apareció en un desarrollo C# MVC ASP.NET usando la librería MixERP.Net.VCards pero la solución tiene aplicación en otros contextos,

Solución

Hay que codificar con "ISO-8859-1".

Usando un controlador ASP.NET MVC el código es:

        [HttpPost]
        public ActionResult VCard(Simple cto)
        {
            var _VCard = cto.GetComplejo().getVcard(); //genera Vcard en formato MixERP.Net.VCards
            Response.Clear();
            Response.AddHeader(
                $"Content-Disposition",
                $"attachment; filename={_VCard.FormattedName }.vcf;"
                );
            var serializedvCard = _VCard.Serialize();
            return File(
                Encoding.GetEncoding("ISO-8859-1").GetBytes(serializedvCard),
                "text/x-vcard; charset=ISO-8859-1"
                );
        }