Una vez creada esta imagen lo vamos a poner en un informe, indicándole los parámetros adecuados para que genere el código barras concreto de una factura, por ejemplo pasandole el número único de la factura.
- Lo primero será generan el fichero ashx, en este caso: prueba.ashx, lo podréis crear en vuestro projecto, en Visual Studio, en este caso en C#:
<%@ WebHandler Language="C#" Class="prueba" %>
using System;
using System.Web;
using System.IO;
public class CodigoBarras : IHttpHandler
{
public string GetCode(HttpContext context)
{
string codigo = String.Empty;
bool resultado = false;
int? numeroFactura = String.IsNullOrEmpty(context.Request.QueryString["numeroFactura"]) ? null : (short?)Convert.ToInt16(context.Request.QueryString["numeroFactura"]);
// Obtiene el texto con la información del código de barras
// En posteriores entradas indicaré un ejemplo co la información del texto del código de barras
if (numeroFactura.HasValue)
resultado = facturaBL.ObtenerBarcode(numeroFactura, out codigo);
if (resultado)
return codigo;
return null;
}
public void ProcessRequest(HttpContext context)
{
// Formato de código de barras 128
iTextSharp.text.pdf.Barcode128 barcode = new iTextSharp.text.pdf.Barcode128();
barcode.CodeType = iTextSharp.text.pdf.Barcode128.CODE128_UCC;
// Obtiene el texto con la información del código de barras
// En posteriores entradas indicaré un ejemplo co la información del texto del código de barras
barcode.Code = GetCode(context) ?? String.Empty;
//Establecer tipo mime
context.Response.ContentType = "image/png";
//Tamaño de la imagen one va alojado el código de barras
System.Drawing.Bitmap imagen = new System.Drawing.Bitmap(363, 59);
System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(imagen);
graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
// Pintar la imagen del código de barras
graphics.DrawImage(barcode.CreateDrawingImage(System.Drawing.Color.Black, System.Drawing.Color.White), new System.Drawing.Point(30, 0));
// Pintar el texto con el código de barras
graphics.DrawString(barcode.Code, new System.Drawing.Font("Verdana", 7, System.Drawing.FontStyle.Regular), System.Drawing.Brushes.Black, new System.Drawing.Point(34, 22));
// Guardar imagen
using (MemoryStream stream = new MemoryStream())
{
imagen.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
stream.WriteTo(context.Response.OutputStream);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
Antes de ponerlo en vuestro informe podréis probarlo desde el navegador para ver si os sale correctamente:
http://localhost/prueba.ashx?numeroFactura=1
- Por último crear la imagen en un informe (SSRS Reporting Services)
1. Creamos la imagen:
2. Vamos a las propiedades de la imagen y le vamos a indicar una expresión para recoger la imagen del fichero ashx.
3. Le indicamos de donde va a coger la imagen dinámica y le pasamos como parámetro el número de la factura, que ya debemos tener en el propio informe.
No hay comentarios:
Publicar un comentario