
17/06/2004, 09:30
|
| | Fecha de Ingreso: abril-2003
Mensajes: 606
Antigüedad: 21 años, 11 meses 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);
}
|