Preguntas frecuentes sobre TBarCode .NET
Ausencia del código de barras tras implementar en Microsoft Azure
Ausencia del código de barras tras implementar en Microsoft Azure
TBarCode utiliza llamadas a la API GDI de Windows para dibujar líneas y renderizar la salida de texto. Sin embargo, en Azure surge un problema debido al bloqueo de GDI por parte del sandbox de la Web App. Este bloqueo se implementa por motivos de seguridad, ya que Microsoft restringe las llamadas al controlador de vídeo/pantalla por razones de seguridad. En consecuencia, el código de barras se dibuja de forma fragmentada o está totalmente ausente. La funcionalidad completa de las funciones GDI solo se consigue con un servidor alojado en local (on-premise).
Solución: utilice la interfaz de retrollamada de dibujo personalizado (Custom Drawing) como alternativa a las llamadas a la API GDI.
- Descargue el ejemplo de aplicación web de código QR para .NET 6 (véase la carpeta ASPNETCoreWebApp).
- Consulte BarcodeController.cs: GetQRCodeImgNoGDI, que utiliza funciones .NET a través de la interfaz de retrollamada para dibujar el código de barras. Este método es adecuado para servicios de Azure donde GDI no es accesible.
- Si está utilizando el servicio de códigos de barras precompilado del SDK (paquete WebDeploy), actualice a la versión más reciente y configure el parámetro UseGDI=false.
Problemas con el tamaño de fuente en Azure
Si su intención es crear un código de barras lineal con texto legible por humanos, también es necesaria la salida de texto a través de la interfaz de retrollamada (el código está incluido en el ejemplo de ASP.NET Core enlazado más arriba). A veces hemos visto un escalado de fuente no deseado en Azure; en ese caso, debe usar una fuente que esté instalada y establecer el tamaño.
barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 10, System.Drawing.FontStyle.Regular, GraphicsUnit.Point);
barcode.Font = new System.Drawing.Font("Microsoft Sans Serif", 12, System.Drawing.FontStyle.Regular, GraphicsUnit.Pixel);