Introducción

En mucha ocasiones uno como desarrollador tiene la necesidad de incluir en las aplicaciones la funcionalidad de enviar la información atravez  de  dispositivos de salida  como son: el disco duro, pantalla o impresora.

En esta ocasión tratare el como trabajar sobre la impresora ya que es un tema que a mas de uno le ha quitado el sueño. Durante los siguientes renglones tratare de explicar de forma amena como manipular la impresora para generar documentos, esto es de mucha utilidad cuando necesitemos generar algún reporte como por ejemplo cuando tenemos un sistema y necesitamos imprimir una la lista de todas las películas existentes de un video club como block boster o cuando tenemos un programa que capture los datos para la membrecía de un gym y lo imprimimos para que el cliente firme su forma de solicitud, etc.

Bueno, este blog tiene como propósito explicarte paso a paso el código necesario para poder realizar todo lo descrito anteriormente para realizar dicha tarea.

*Nota: El código descrito en este blog fue probado en Visual Studio 2005 y Visual Studio 2008 con los framework 2.0 y 3.0. sin problemas.

**Nota: Para usar este código sólo tendrás que copiar los segmentos de código que se encuentra en cada de las secciones que están más abajo, en un futuro pienso subir los proyectos y el código fuente, pero mientras tanto aquí esta un adelanto.

Como Imprimir una Cadena de Caracteres en C#

 

A continuación  explicare como imprimir una o varias líneas de caracteres a través de la impresora mediante el siguiente ejemplo:


Este es un programa que simulara la hoja de registro para un cliente y el cual contiene los siguientes datos:

a) Nombre: Este campo estará compuesto del (de los) Nombre(s) y Apellido(s) del cliente.
b) Dirección: Este campo estará compuesto del nombre y número de la calle donde vive el cliente.
c) Teléfono: Este campo como indica contendrá el número de teléfono del cliente.

Tomen en cuenta que esto es solo un ejemplo para poder entender el código, ya dependerá de uno que otro tipo de información necesita manejar.

Primero crearemos un proyecto en Visual Studio, para quienes no sepan sigan las siguientes instrucciones:

1.-Abrir el Visual Studio desde el principio »de todos los programas» Microsoft Visual Studio 2005 »Microsoft Visual Studio 2005.

2.- En el panel de tipos de proyectos, se muestra una lista de los idiomas disponibles para crear el proyecto en este caso se selecciona la opción de Visual C # y después seleccionar la opción  Windows.

3. En el panel Plantillas, seleccione aplicación forma de Windows.

4.- Después hay que especificar Nombre en este caso llamaremos al proyecto prueba_impresora, a la ubicación de la aplicación y por último haga clic en el botón ok como se ve a continuación.

Después creamos nuestra interface con 3 textbox y 3 labels ubicados en la caja de herramientas y un botón como se muestra en la siguiente figura.

El siguiente paso consiste en agregar el siguiente código en la forma.

**Nota: Antes de compilar el programa agregue los siguientes espacios de nombres: Using System.Drawing.Printing;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace prueba_impresora

{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//estas son las variables donde almacenaremos los datos del cliente

private string Nombre;
private string Direccion;
private string Telefono;
//la siguiente variable define el estilo de fuente y tamaño a usar

//en este caso se utilizo Arial,12

private Font fuente = new Font(“Arial”, 12);


//A continuacion se agregara el siguiente método
public void Imprimir_Solicitud()
{

//Este método contiene dos componentes muy importantes los cuales son:

//PrintDocument y printDialog estos métodos definen las propiedades de impresión

//como son: numero de copias, numero de paginas y seleccionar tipo de impresora
PrintDocument formulario = new PrintDocument();
formulario.PrintPage += new PrintPageEventHandler(Datos_Cliente);
PrintDialog printDialog1 = new PrintDialog();
printDialog1.Document = formulario;
DialogResult result = printDialog1.ShowDialog();
if (result == DialogResult.OK)
{
formulario.Print();
}
}

//En esta función se define los datos a imprimir en este caso

//los datos de nuestros clientes y la posición de los mismos en el documento
private void Datos_Cliente(object obj, PrintPageEventArgs ev)
{
float pos_x = 10;
float pos_y = 20;
Nombre = txtNombre.Text;
Direccion = txtDireccion.Text;
Telefono = txtTelefono.Text;

//Lo que vamos a imprimir
//Estas 3 prmieras lineas de codigo son las que definen los datos del cliente

ev.Graphics.DrawString(“Nombre:”, fuente, Brushes.Black, pos_x, pos_y, new
StringFormat());
ev.Graphics.DrawString(“Direccion:”, fuente, Brushes.Black, pos_x, pos_y + 15, new
StringFormat());
ev.Graphics.DrawString(“Telefono:”, fuente, Brushes.Black, pos_x, pos_y + 30, new
StringFormat());
//Estas ultimas 3 lineas de codigo son las que capturamos en nuestro formulario
ev.Graphics.DrawString(Nombre,fuente,Brushes.Black,pos_x+65,pos_y,new
StringFormat());
ev.Graphics.DrawString(Direccion, fuente, Brushes.Black, pos_x+75, pos_y+15, new
StringFormat());
ev.Graphics.DrawString(Telefono, fuente, Brushes.Black, pos_x+80, pos_y+30, new
StringFormat());
}
//En el botón que incluimos en nuestro pequeño formulario damos doble clic

//e invocamos nuestro método Imprimir_Solicitud()

private void btnImprimir_Click(object sender, EventArgs e)
{
//Llamamos el método que creamos dentro de nuestro formulario y listo.
Imprimir_Solicitud();
}
}
}

Ahora procedemos a compilar nuestro programa y probaremos el programa insertando los datos solicitados por la aplicación como se muestra en la siguiente figura.

Después aparecerá el cuadro de dialogo de la impresora en donde podemos ver la impresora por default, el numero de copias, entre otras propiedades de impresión como se muestra a continuación.

En mi caso yo tengo instalado una impresora virtual el cual genera archivos pdf, después de seleccionar la impresora damos clic en el botón ok y por ultimo obtendremos nuestra impresión como se ve en la siguiente figura.

Como Imprimir una Imagen en C#

En el ejemplo anterior explique como imprimir una o varias líneas de caracteres a través de la impresora a hora imaginen que a esa hoja se le necesita agregar la foto del cliente en el formulario, esto es sencillo si agregamos un pictureBox en nuestro formulario, el cual nos permitirá visualizar en nuestra aplicación la foto obtenida de nuestro cliente para este ejemplo la imagen esta cargada previamente en el pictureBox como se muestra a continuación, pero en próximos artículos les mostrare como cargar una imagen guardada en nuestro disco duro en un pictureBox.

Después procedemos agregar en el método Datos_Cliente el siguiente código:

ev.Graphics.DrawImage(pictureBox1.Image, 90, 0, 70, 85);

//En la linea anterior definimos lo siguiente Imagen a imprimir, pos_x, pos_y,

// tamaño ancho,tamaño alto.

Y finalmente nos disponemos a imprimir nuestro formulario para obtener el siguiente resultado como se muestra en la siguiente figura.


Conclusion


Después de ver como podemos imprimir imágenes o líneas de texto lo único que puedo agregar es que las aplicaciones para este código son varias por ejemplo desarrollar aplicaciones de punto de venta en la cual mediante una impresora especial podamos imprimir tickets o credenciales mediante el uso de impresoras especiales.

Por ultimo como consejo les recomiendo que para las pruebas que realicen con este código en lugar de usar la impresora y desperdiciar hojas mejor utilicen una impresora virtual como es Virtual ImagePrinter, BullZip PDF Printer, doPDF 7 entre otros.

La ventaja es que se instala como una impresora más y así lo tienes disponible en todos los programas que permitan imprimir.


**Nota: todos estos impresoras virtuales son compatibles con los siguientes sistemas operativos: Win2000/XP/2003/Vista/7 y son freeware.


Estos programas están disponibles en internet para descargarlos puedes hacerlo en la siguiente pagina: http://www.softonic.com/s/impresora-virtual-pdf

Lo único que puedo decir es que cualquiera de estas maquinas virtuales es buena, yo uso el doPDF 7 como impresora virtual pero chécalos y decide cual es el que te conviene mas.


Bibliografía

***Nota: Recuerden que siempre hay que darle el honor a quien merece por lo que siempre documenten de donde sacaron la información.

[1].- Arbis Percy Reyes Paredes (Junio 16, 2005), Componentes PrintDocument y PrintDialog, Recuperado Diciembre 9, 2009 http://www.elguille.info/colabora/NET2005/Percynet_PrintDocument_PrintDialog.htm

 

[2].-Irina Medvinskaya (septiembre 13, 2007),Using The Printdocument Component In Vb.Net Applications, Recuperado Diciembre 9, 2009 http://blogs.techrepublic.com.com/programming-and-development/?p=502