Integración de Códigos de Barras en PowerBuilder
La guía definitiva para procesamiento local mediante DLL, integración con API en la nube y renderizado de fuentes en DataWindow.
Integración Local con DLL de .NET Core
El uso de DotNetObject le permite ejecutar una lógica compleja de codificación de códigos de barras directamente en la máquina cliente sin latencia de red. Esto es ideal para códigos 2D como QR Code, Aztec y DataMatrix.
DotNetAssembly lnv_Asm
DotNetObject lnv_Encoder
Long ll_ret
lnv_Asm = Create DotNetAssembly
// Asegúrese de que .NET Runtime esté instalado
ll_ret = lnv_Asm.LoadWithDotNetCore("cruflbcsnet.dll")
IF ll_ret = 1 THEN
lnv_Encoder = lnv_Asm.CreateInstance("Barcodesoft.Encoder")
// Encode devuelve una cadena formateada para la fuente BCS
ls_barcode_data = lnv_Encoder.Encode(ls_input)
dw_1.SetItem(row, "barcode_col", ls_barcode_data)
ELSE
MessageBox("Error", "Fallo al cargar la DLL de .NET. Verifique el Runtime.")
END IF
API REST en la Nube (Configuración sin Código)
Para despliegues sin huella local, utilice la API REST. El DataWindow de PowerBuilder maneja esto mediante la expresión Bitmap().
Expresión para Campo Calculado:
Bitmap("https://www.barcodesoft.com/barcode/qrcode/token=SU_TOKEN&text=" + id_field + "&format=png")
Tip: Use un formato PNG pequeño para reducir el tiempo de recuperación del DataWindow.
Pasos de Diseño en DataWindow
Para asegurar que el código de barras se escanee correctamente, siga estos ajustes en el DataWindow Painter:
- Selección de Fuente: Establezca la fuente de la columna a la fuente específica del código de barras (ej.
BCSQRcode). - Anti-Aliasing: Desactive el suavizado "TrueType" en la configuración de fuentes de Windows si el código de barras se ve borroso.
- Tamaño de Columna: Asegúrese de que la columna sea lo suficientemente ancha para evitar el "recorte" (clipping), lo que haría el código ilegible.
- Autosize Height: Active esta propiedad si la cantidad de datos codificados varía significativamente.
Eligiendo su Método
| Característica | DLL de .NET | API REST |
|---|---|---|
| Requiere Internet | No | Sí |
| Rendimiento por Lotes | Alto (Instantáneo) | Medio (Latencia de Red) |
| Facilidad de Instalación | Requiere Runtime | Plug & Play |