Ver Mensaje Individual
  #12 (permalink)  
Antiguo 17/06/2004, 09:30
DotNetDeveloper
 
Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años
Puntos: 2
Código:
using System;
using Root.Reports;
using Pagina = Root.Reports.Page;
using System.Drawing;
using System.Collections;
using System.Diagnostics;

namespace SOFIA.Utilerias
{
	/// <summary>
	/// Clase que nos permite generar un archivo PDF.
	/// </summary>
	public class PDF : Report
	{
		
		#region Atributos

		private SortedList letras = new SortedList();			// Colección con los tipos de letras
		private ArrayList paginas = new ArrayList();			// Colección con las páginas del PDF
		private SortedList lineas = new SortedList();			// Colección con los tipos de líneas
		
		#endregion

		#region Constantes

		private const string NOMBRE_LETRA_DEFAULT = "Default";	// Nombre de la letra default
		private const string LETRA_DEFAULT = "Arial";			// Tipo de letra DEFAULT.

		#endregion

		#region Constructores

		/// <summary>
		/// Constructor que inicializa la letra por default
		/// </summary>
		public PDF()
		{
			EstablecerLetraDefault();
		}

		#endregion

		#region Métodos

		/// <summary>
		/// Método que inicializa la letra por default
		/// </summary>
		public void EstablecerLetraDefault()
		{
			FontDef letra = new FontDef(this, LETRA_DEFAULT);
			FontProp letraProp = new FontProp(letra, 8);
			letras.Add(NOMBRE_LETRA_DEFAULT, letraProp);
		}


		/// <summary>
		/// Método que permite agregar un tipo de letra al Documento PDF
		/// </summary>
		/// <param name="nombreLetra">Nombre que se le va a dar a la letra.</param>
		/// <param name="tipoLetra">Tipo de letra.</param>
		/// <param name="tamano">Tamaño de la letra.</param>
		/// <param name="color">Color de la letra.</param>
		/// <param name="negrita">true si la letra debe estar en negrita.</param>
		/// <param name="italica">true si la letra debe estar en itálica.</param>
		/// <param name="subrayada">true si la letra debe estar subrayada.</param>
		public void AgregarLetra(string nombreLetra, string tipoLetra, double tamano, Color color, bool negrita, bool italica, bool subrayada )
		{
			FontDef letra = new FontDef(this, tipoLetra);
			FontProp letraProp = new FontProp(letra, tamano, color);
			letraProp.bBold = negrita;
			letraProp.bItalic = italica;
			letraProp.bUnderline = subrayada;
			letras.Add(nombreLetra, letraProp);
		}

		/// <summary>
		/// Método que permite agregar una página al documento actual.
		/// </summary>
		public void AgregarPagina()
		{
			Page pagina = new Pagina(this);
			pagina.rWidthMM = 211;
			paginas.Add(pagina);
		}

		/// <summary>
		/// Método que permite agregar una cadena a una página.
		/// </summary>
		/// <param name="numPagina">Número de pagina al que se le quiere agregar la cadena, la primera página equivale al indice 0</param>
		/// <param name="coorX">Coordenada X en la que se insertará la cadena.</param>
		/// <param name="coorY">Coordenada Y en la que se insertará la cadena.</param>
		/// <param name="cadena">Cadena que se insertara en el Documento PDF.</param>
		/// <param name="tamanio">Tamaño de la letra que se insertará en el documento PDF.</param>
		/// <param name="negrita">true si la letra necesita estar en negrita.</param>
		public void AgregarCadenaAPagina(int numPagina, double coorX, double coorY, string cadena, double tamanio, bool negrita)
		{
			FontProp letra = (FontProp) letras[NOMBRE_LETRA_DEFAULT];
			letra.bBold = negrita;
			letra.rSize = tamanio;
			((Pagina)paginas[numPagina]).AddMM(coorX, coorY, new RepString(letra, cadena));
		}

		/// <summary>
		/// Método que permite agregar una cadena a una página.
		/// </summary>
		/// <param name="numPagina">Número de pagina al que se le quiere agregar la cadena, la primera página equivale al indice 0</param>
		/// <param name="coorX">Coordenada X en la que se insertará la cadena.</param>
		/// <param name="coorY">Coordenada Y en la que se insertará la cadena.</param>
		/// <param name="cadena">Cadena que se insertara en el Documento PDF.</param>
		/// <param name="nombreLetra">Nombre de la letra a agregar por si no se quiere la de Default.</param>
		public void AgregarCadenaAPagina(int numPagina, double coorX, double coorY, string cadena, string nombreLetra)
		{
			FontProp letra = (FontProp) letras[nombreLetra];
			((Pagina)paginas[numPagina]).AddMM(coorX, coorY, new RepString(letra, cadena));
		}

		/// <summary>
		/// Método que permite agregar una cadena a una página alineandola a la derecha.
		/// </summary>
		/// <param name="numPagina">Número de página a la cual se quiere agregar la cadena.</param>
		/// <param name="coorX">Coordenada X en donde se ubicará.</param>
		/// <param name="coorY">Coordenada Y en donde se ubicará.</param>
		/// <param name="cadena">Cadena que queremos agregar.</param>
		/// <param name="tamanio">Tamaño de la letra que queremos agregar.</param>
		/// <param name="negrita">true si queremos que la letra este en negritas.</param>
		public void AgregarCadenaDerechaAPagina(int numPagina, double coorX, double coorY, string cadena, double tamanio, bool negrita)
		{
			FontProp letra = (FontProp) letras[NOMBRE_LETRA_DEFAULT];
			letra.bBold = negrita;
			letra.rSize = tamanio;
			((Pagina)paginas[numPagina]).AddRightMM(coorX, coorY, new RepString(letra, cadena));
		}

		/// <summary>
		/// Método que permite agregar una línea a una página.
		/// </summary>
		/// <param name="numPagina">Número de página a la cual queremos agregar la línea.</param>
		/// <param name="coorX">Coordenada X donde iniciará.</param>
		/// <param name="coorY">Coordenada Y donde iniciará.</param>
		/// <param name="anchoPluma">Ancho de la línea.</param>
		/// <param name="lineaX">Coordenada X donde terminará la línea.</param>
		/// <param name="lineaY">Coordenada Y donde terminará la línea.</param>
		/// <param name="color">Color de la línea.</param>
		public void AgregarLineaAPagina(int numPagina, double coorX, double coorY, double anchoPluma, double lineaX, double lineaY, Color color)
		{
			PenPropMM pluma = new PenPropMM(this, anchoPluma, color);
			RepLineMM linea = new RepLineMM(pluma, lineaX, lineaY);
			((Pagina)paginas[numPagina]).AddMM(coorX, coorY, linea);
		}

		/// <summary>
		/// Método que permite agregar un rectángulo a una página con algun color de fondo
		/// </summary>
		/// <param name="numPagina">Número de página a la cual queremos agregar el rectángulo.</param>
		/// <param name="coorX">Coordenada X donde queremos agregar el rectángulo.</param>
		/// <param name="coorY">Corrdenada Y donde queremos agregar el rectángulo.</param>
		/// <param name="anchoPluma">Ancho de la línea del rectángulo.</param>
		/// <param name="alto">Alto del rectángulo.</param>
		/// <param name="ancho">Ancho del rectángulo.</param>
		/// <param name="color">Color del rectángulo.</param>
		public void AgregarRectanguloFondoAPagina(int numPagina, double coorX, double coorY, double anchoPluma, double alto, double ancho, Color color)
		{
			BrushProp brocha = new BrushProp(this, color);
			RepRectMM rectangulo = new RepRectMM(brocha, ancho, alto);
			((Pagina)paginas[numPagina]).AddMM(coorX, coorY, rectangulo);
		}

		/// <summary>
		/// Método que permite agregar un rectángulo sin fondo a una página.
		/// </summary>
		/// <param name="numPagina">Número de página donde queremos agregar el rectángulo.</param>
		/// <param name="coorX">Coordenada X donde queremos agregar el rectángulo.</param>
		/// <param name="coorY">Coordenada Y donde queremos agregar el rectángulo.</param>
		/// <param name="anchoPluma">Ancho de la pluma.</param>
		/// <param name="alto">Alto del rectángulo.</param>
		/// <param name="ancho">Ancho del rectángulo.</param>
		/// <param name="color">Color del rectángulo.</param>
		public void AgregarRectanguloAPagina(int numPagina, double coorX, double coorY, double anchoPluma, double alto, double ancho, Color color)
		{
			PenPropMM pluma = new PenPropMM(this, 0.2, color);
			RepRectMM rectangulo = new RepRectMM(pluma, ancho, alto);
			((Pagina)paginas[numPagina]).AddMM(coorX, coorY, rectangulo);
		}

		/// <summary>
		/// Método para agregar una cadena en el centro del documento.
		/// </summary>
		/// <param name="numPagina">Número de página a la cual se quiere agregar la cadena.</param>
		/// <param name="coorY">Coordenada Y en donde se ubicará.</param>
		/// <param name="cadena">Cadena que queremos agregar.</param>
		/// <param name="tamanio">Tamaño de la letra.</param>
		/// <param name="negrita">true si queremos que la letra este en negrita.</param>
		public void AgregarCadenaCentradaAPagina(int numPagina, double coorY, string cadena, double tamanio, bool negrita)
		{
			FontProp letra = (FontProp) letras[NOMBRE_LETRA_DEFAULT];
			letra.bBold = negrita;
			letra.rSize = tamanio;
			((Pagina)paginas[numPagina]).AddCenteredMM(coorY, new RepString(letra, cadena));
		}

		/// <summary>
		/// Método que permite agregar una imagen a un documento.
		/// </summary>
		/// <param name="numPagina">Número de página a la cual se quiere agregar la cadena.</param>
		/// <param name="coorX">Coordenada X en donde se ubicará.</param>
		/// <param name="coorY">Coordenada Y en donde se ubicará.</param>
		/// <param name="ruta">Ruta de la imágen que queremos agregar.</param>
		public void AgregarImagenAPagina(int numPagina, double coorX, double coorY, double coorXA, double coorYA, string ruta)
		{
			((Pagina)paginas[numPagina]).AddMM(coorX, coorY, new RepImage(ruta, coorXA, coorYA));
		}

		/// <summary>
		/// Método que muestra en el Browser el documento PDF.
		/// </summary>
		/// <param name="response">Recibe el HttpResponse en donde se desplegará.</param>
		public void MostrarPdf(System.Web.HttpResponse response)
		{
			RT.ResponsePDF(this, response);
		}