Formatos de salida de datos

por Hairil Hasyimi Bin Omar

En lugar de limitarse a leer el código de barras e imprimir los valores en la consola, IronBarcode ofrece mucho más. Ofrece varios formatos de salida que allanan el camino para que los usuarios sigan procesando los resultados de la lectura. Estos formatos incluyen propiedades como imagen de código de barras, tipo de código de barras, BinaryValue, coordenadas, altura, anchura, número de página, código de barras, orientación de la página, texto y valor.

Los usuarios pueden seguir manipulando estas propiedades dentro del programa. Exploremos cómo utilizar estas propiedades y los casos de uso en los que pueden ser útiles.

Biblioteca NuGet C# para

Instalar con NuGet

Install-Package BarCode
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Formatos de salida y casos de uso

BarcodeResult almacena varias propiedades útiles. Estas propiedades se enumeran a continuación:

  • imagen de código postal
  • tipo de código de barras
  • ValorBinario
  • Coordenadas, altura y anchura
  • NúmeroDePágina
  • código de barras y orientación de página
  • Texto y valor

Imagen de código de barras

Una vez que IronBarcode realiza el proceso de lectura sobre una imagen, los códigos de barras encontrados en la imagen serán almacenados en BarcodeResult como propiedad BarcodeImage de tipo AnyBitmap. La propiedad BarcodeImage almacena las imágenes de código de barras encontradas. Los usuarios pueden recuperar este objeto para seguir procesando la imagen o guardarla como copia permanente. Esto proporciona una forma eficiente y facilidad de uso al eliminar la necesidad de escribir códigos adicionales para extraer los códigos de barras de una imagen.

Veamos el siguiente fragmento de código que muestra un posible caso de uso de este formato de salida

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeImage.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.Collections.Generic;

//  Leer código de barras de un archivo PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

//  Crear lista para códigos de barras
List<AnyBitmap> barcodeList = new List<AnyBitmap>();

foreach (BarcodeResult barcode in result)
{
    barcodeList.Add(barcode.BarcodeImage);
}

//  Crear TIFF de varias páginas
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif");
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Collections.Generic

'  Leer código de barras de un archivo PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

'  Crear lista para códigos de barras
Private barcodeList As New List(Of AnyBitmap)()

For Each barcode As BarcodeResult In result
	barcodeList.Add(barcode.BarcodeImage)
Next barcode

'  Crear TIFF de varias páginas
AnyBitmap.CreateMultiFrameTiff(barcodeList).SaveAs("barcodeImages.tif")
VB   C#

El fragmento de código anterior ilustra uno de los casos de uso de este formato de salida. En concreto, está diseñado para crear una imagen TIFF de varias páginas a partir de códigos de barras detectados en un documento PDF. En primer lugar, escaneamos o detectamos los códigos de barras en el PDF de muestra. A continuación, creamos una lista AnyBitmap donde almacenamos la información de la propiedad BarcodeImage. Finalmente, utilizamos esta lista para generar un TIFF multipágina utilizando el método CreateMultiFrameTiff.

Tenga en cuenta
la propiedad BarcodeImage de BarcodeResult sólo almacena las imágenes de los códigos de barras encontrados durante la lectura y no toda la imagen de entrada en sí.

Tipo de código de barras

Esta propiedad ayuda a los usuarios a determinar qué tipo de código de barras está presente en la imagen o documento de entrada. Sin embargo, la limitación de esta función es que el tipo de código de barras dentro de la imagen debe ser de los soportados y que puedan ser leídos por IronBarcode. Para saber más sobre los tipos de códigos de barras soportados en IronBarcode, los usuarios pueden consultar esto artículo.

El siguiente fragmento de código demuestra cómo los usuarios pueden recuperar los valores de código de barras, así como el tipo de código de barras en una imagen mediante la impresión de los valores en la consola.

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BarcodeType.cs
using IronBarCode;
using System;

//  Leer código de barras de PNG
BarcodeResults result = BarcodeReader.Read("bc3.png");

//  Salida del tipo de código de barras a la consola
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine("The barcode value is " + barcode.ToString() + " and the barcode type is " + barcode.BarcodeType);
}
Imports IronBarCode
Imports System

'  Leer código de barras de PNG
Private result As BarcodeResults = BarcodeReader.Read("bc3.png")

'  Salida del tipo de código de barras a la consola
For Each barcode As BarcodeResult In result
	Console.WriteLine("The barcode value is " & barcode.ToString() & " and the barcode type is " & barcode.BarcodeType)
Next barcode
VB   C#

En el fragmento de código anterior, realizamos la lectura del código de barras llamando a BarcodeReader.Read()sobre la imagen de entrada. Devuelve el objetoBarcodeResultsque almacena todos losBarcodeResultde la lectura de todos los códigos de barras disponibles en la imagen. A continuación, iteramos a través del objetoBarcodeResultspara recuperar elBarcodeResult` y obtener el valor del código de barras y el Tipo de Código de Barras impresos en la consola.

Valor binario

Con IronBarcode, los usuarios también pueden recuperar la matriz de bytes del valor del código de barras recuperando la propiedad BinaryValue del objeto BarcodeResult. Esto permite a los usuarios manipular el valor del código de barras dentro del programa.

El siguiente fragmento de código muestra uno de los casos de uso de la recuperación del valor del código de barras como datos binarios

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-BinaryValue.cs
using IronBarCode;

//  Leer código de barras de PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");

int i = 1;
foreach (BarcodeResult barcode in result)
{
    var binaryValue = barcode.BinaryValue;
    var barcodeType = IronBarCode.BarcodeEncoding.QRCode;

    //  Crear código QR
    GeneratedBarcode generatedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType);

    //  Exportar código QR
    generatedBarcode.SaveAsPng($"qrFromBinary{i}.png");
    i++;
}
Imports IronBarCode

'  Leer código de barras de PNG
Private result As BarcodeResults = BarcodeReader.Read("multiple-barcodes.png")

Private i As Integer = 1
For Each barcode As BarcodeResult In result
	Dim binaryValue = barcode.BinaryValue
	Dim barcodeType = IronBarCode.BarcodeEncoding.QRCode

	'  Crear código QR
	Dim generatedBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(binaryValue, barcodeType)

	'  Exportar código QR
	generatedBarcode.SaveAsPng($"qrFromBinary{i}.png")
	i += 1
Next barcode
VB   C#

Observando el fragmento de código anterior, hemos creado un programa sencillo que esencialmente transforma múltiples códigos de barras dentro de una imagen en nuevas imágenes separadas de códigos QR. Inicialmente, escaneamos los códigos de barras de la imagen PNG de muestra. Una vez detectados estos códigos de barras, los recorremos, accedemos a la propiedad BinaryValue y la utilizamos para crear nuevos códigos de barras QR.

Coordenadas del código de barras, altura y anchura

Otra propiedad del objeto BarcodeResult a la que los usuarios pueden acceder son las coordenadas del código de barras, incluyendo X1, Y1, y X2, Y2, así como su Altura y Ancho dentro de un archivo de imagen o documento. Estas propiedades resultan muy útiles cuando los usuarios necesitan recuperar información sobre la ubicación y las dimensiones del código de barras. Utilicemos una ilustración para destacar la ubicación y las dimensiones del código de barras.

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-height-width.cs
using IronBarCode;
using IronSoftware.Drawing;
using System.Linq;

//  Leer código de barras de PNG
BarcodeResults result = BarcodeReader.Read("multiple-barcodes.png");

AnyBitmap bitmap = AnyBitmap.FromFile("multiple-barcodes.png");

foreach (BarcodeResult barcode in result)
{
    PointF[] barcodePoints = barcode.Points;

    float x1 = barcodePoints.Select(b => b.X).Min();
    float y1 = barcodePoints.Select(b => b.Y).Min();

    Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);

    bitmap = bitmap.Redact(rectangle, Color.Magenta);

    //  Guardar la imagen
    bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png);
}
Imports System
Imports IronBarCode
Imports IronSoftware.Drawing
Imports System.Linq

'  Leer código de barras de PNG
Private result As BarcodeResults = BarcodeReader.Read("multiple-barcodes.png")

Private bitmap As AnyBitmap = AnyBitmap.FromFile("multiple-barcodes.png")

For Each barcode As BarcodeResult In result
	Dim barcodePoints() As PointF = barcode.Points

	Dim x1 As Single = barcodePoints.Select(Function(b) b.X).Min()
	Dim y1 As Single = barcodePoints.Select(Function(b) b.Y).Min()

'INSTANT VB TODO TASK: There is no VB equivalent to the C# 'null-forgiving operator':
'ORIGINAL LINE: Rectangle rectangle = new Rectangle((int)x1, (int)y1, (int)barcode.Width!, (int)barcode.Height!);
	Dim rectangle As New Rectangle(CInt(Math.Truncate(x1)), CInt(Math.Truncate(y1)), CInt(barcode.Width), CInt(barcode.Height))

	bitmap = bitmap.Redact(rectangle, Color.Magenta)

	'  Guardar la imagen
	bitmap.SaveAs("redacted.png", AnyBitmap.ImageFormat.Png)
Next barcode
VB   C#
Ejemplo de entrada antes de la redacción
Imagen suprimida

El fragmento de código anterior se utiliza para redactar múltiples códigos de barras que se encuentran en un archivo de imagen. Para lograrlo, hemos utilizado una combinación de 2 bibliotecas, que son IronBarcode y IronDrawing. Para obtener el objeto BarcodeResult y extraer sus propiedades, primero leemos los códigos de barras disponibles en un fichero de imagen utilizando BarcodeReader.Read() método. Al mismo tiempo, el archivo de imagen de entrada también debe convertirse en un objeto AnyBitmap para poder utilizar y aplicar el método de redacción a la imagen. Una vez que tenemos el objeto BarcodeResults, podemos aplicar un bucle e iterar a través de él para obtener el X1, Y1, Width, y Height de cada código de barras disponible en la imagen y utilizarlos como propiedades CropRectangle en el AnyBitmap.Redact() método.

Número de página

Los usuarios también pueden recuperar el número de página en el que se encontró el código de barras. Se trata de una función útil para los usuarios que deseen utilizar documentos de varias páginas que contengan varios códigos de barras y necesiten conocer la ubicación de los códigos de barras encontrados en el documento para su posterior procesamiento.

Veamos el siguiente fragmento de código:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-page-number.cs
using IronBarCode;
using System;

//  Leer código de barras de PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

//  Envía el número de página a la consola
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine("The barcode value " + barcode.ToString() + " is found on page number " + barcode.PageNumber);
}
Imports IronBarCode
Imports System

'  Leer código de barras de PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

'  Envía el número de página a la consola
For Each barcode As BarcodeResult In result
	Console.WriteLine("The barcode value " & barcode.ToString() & " is found on page number " & barcode.PageNumber)
Next barcode
VB   C#

El sencillo fragmento de código anterior demuestra un caso de uso en el que los usuarios necesitan que el programa devuelva el valor de los códigos de barras encontrados en un documento PDF de varias páginas, así como sus números de página. El fragmento de código anterior utiliza BarcodeReader.ReadPdf()para leer los códigos de barras dentro de un documento PDF multipágina, que devuelve un objetoBarcodeResultsque almacena todos losBarcodeResult` encontrados en el documento. Aplicar bucle e iterar a través de cada elemento del objeto para recuperar el valor de los códigos de barras y el número de página donde se encontraron los códigos de barras. Aparte de este caso de uso, los usuarios también pueden utilizar esta propiedad para depurar si se han podido leer todos los códigos de barras de un documento.

Tenga en cuenta
El valor devuelto por esta propiedad es basado en 1, lo que significa que la primera página es siempre uno y no cero.

Rotación del código de barras y orientación de la página

Con IronBarcode, los usuarios también pueden recuperar información sobre la orientación del código de barras, así como sobre la orientación de la página en la que se encontró el código de barras. Para extraer estas dos informaciones, los usuarios pueden recuperar las propiedades Rotation y PageOrientation del objeto BarcodeResult. Rotation devolverá un número entero que representa el ángulo de rotación del código de barras encontrado. Sin embargo, tenga en cuenta que

Veamos el siguiente fragmento de código:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-orientation.cs
using IronBarCode;
using System;

//  Leer código de barras de PDF
BarcodeResults result = BarcodeReader.ReadPdf("test.pdf");

//  Orientación y rotación de la página de salida en la consola
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine(barcode.Value);
    Console.WriteLine(barcode.PageOrientation);
    Console.WriteLine(barcode.Rotation);
}
Imports IronBarCode
Imports System

'  Leer código de barras de PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("test.pdf")

'  Orientación y rotación de la página de salida en la consola
For Each barcode As BarcodeResult In result
	Console.WriteLine(barcode.Value)
	Console.WriteLine(barcode.PageOrientation)
	Console.WriteLine(barcode.Rotation)
Next barcode
VB   C#

El sencillo fragmento de código anterior se ejecutó con la entrada PDF de ejemplo adjunta para demostrar que los usuarios pueden recuperar la orientación de la página y la rotación del código de barras obteniendo el valor de BarcodeResult.PageOrientation y BarcodeResult.Rotation respectivamente. Esta función es útil principalmente para fines de depuración.

Tenga en cuenta
IronBarcode sólo puede leer códigos de barras de rotación 0, 90, 180 y 270 grados. IronBarcode no devolverá ningún valor si el código de barras tiene un valor de rotación distinto al mencionado. PageOrientation devolverá un valor orientación de la página objeto, que consisten en Retrato o Paisaje.

Texto y valor

Por supuesto, la principal propiedad que los usuarios querrán recuperar cuando utilicen IronBarcode, es conocer su valor y texto. Estas 2 propiedades se utilizan a menudo indistintamente y devolverán el mismo valor. Además, los usuarios también pueden utilizar BarcodeResult.ToString() para lograr el mismo resultado. El siguiente fragmento de código lo demuestra:

:path=/static-assets/barcode/content-code-examples/how-to/output-data-formats-text-value.cs
using IronBarCode;
using System;

//  Leer código de barras de PDF
BarcodeResults result = BarcodeReader.ReadPdf("barcodestamped3.pdf");

//  Valor de texto de salida a la consola
foreach (BarcodeResult barcode in result)
{
    Console.WriteLine(barcode.Value);
    Console.WriteLine(barcode.Text);
    Console.WriteLine(barcode.ToString());
}
Imports IronBarCode
Imports System

'  Leer código de barras de PDF
Private result As BarcodeResults = BarcodeReader.ReadPdf("barcodestamped3.pdf")

'  Valor de texto de salida a la consola
For Each barcode As BarcodeResult In result
	Console.WriteLine(barcode.Value)
	Console.WriteLine(barcode.Text)
	Console.WriteLine(barcode.ToString())
Next barcode
VB   C#

A partir del fragmento de código anterior, los usuarios sólo tienen que utilizar unas pocas líneas de código para leer el código de barras en una imagen utilizando IronBarcode. Después de iterar por los BarcodeResults devueltos por BarcodeReader.Read()mostramos en la consola el resultado de obtener las propiedades value y text, así como de llamar aBarcodeResult.ToString()` para demostrar que todos ellos devuelven el mismo valor.

En pocas palabras, IronBarcode es una API perfecta para que los usuarios realicen múltiples operaciones relacionadas con los códigos de barras, y no sólo limitadas a la escritura y decodificación de códigos de barras. Con varios formatos de datos de salida soportados, los usuarios pueden hacer mucho más con el objeto BarcodeResult devuelto por IronBarcode.