OBJETIVO:

El objetivo de esta práctica es la creación de un documento PDF dentro de MVC y la recuperación de ficheros en el servidor.

Para ello nos crearemos una aplicación en la que mostraremos una lista de personas y tendremos un enlace para poder crear informes en PDF sobre las personas.

Captura

DATOS A TENER EN CUENTA:

Lo primero que haremos será crearnos un proyecto nuevo de MVC al que llamaremos DevolverFile.

Segundo vamos a necesitar descargarnos la librería para crear documentos PDF en C#.

La librería se llama ITextSharp y la descargaremos del sitio :

http://sourceforge.net/projects/itextsharp/

DESARROLLAMOS NUESTRA APLICACIÓN:

Después de crearnos nuestro proyecto MVC y de insertar la librería que nos hemos descargado sobre nuestra referencia de nuestro proyecto.

(Para incluir el fichero en nuestro proyecto se realiza sobre Reference, botón derecho, agregar una nueva referencia(add reference), en browse y la buscamos y agregamos )


1.Lo primero que nos crearemos será un modelo persona para crearnos personas. Sobre nuestra carpeta models agregamos una nueva clase llamada persona, en la cual tendrá cuatro tipos de datos, el nombre, ciudad, oficio y el numero de id.

Y sobre nuestro proyecto nos creamos una carpeta nueva llamada informes que es donde se van a guardar nuestros PDF de las personas  que creemos.

1


2.Nos creamos en la misma zona otra nueva clase llamada ModeloPersona.

Nos creamos una lista de personas dándole todos los valores que necesitemos.

2

Nos creamos un método por el cual recuperaremos la lista de personas, al que llamaremos GetPersonas retornado la lista de personas.

Por último nos creamos un método Public para recuperar la persona por su numero de ID al que llamaremos GetPersonaId.

3


3. Ahora vamos a crearnos una zona nueva en nuestra vista que la llamaremos persona, sobre esa carpeta nueva creada añadiremos una vista q la llamaremos Index.

Sobre este Index es sobre el cual trabajaremos y pintaremos nuestro modelo unos pasos mas adelante.


4.Despues de crearnos todo esto, es hora de crearnos el controlador de nuestra vista.

sobre nuestra carpeta de Controller agregamos un nuevo controlador q le llamaremos PersonaController.

lo primero que debemos hacer es crearnos los using en la zona de arriba para poder llamar a nuestro modelo persona creado anteriormente y a nuestra librería creada en referencias para ello utilizamos:

Para la librería de PDF:

using iTextSharp.text;
using System.Drawing.Printing;
using iTextSharp.text.pdf;
using System.IO;

Para tipar el modelo:

using DevolverFile.Models;

Hacemos a nivel de clase la llamada a nuestro modelo y lo tipamos con :

ModeloPersonas modelo;

 

En nuestro método PersonaController ,instanciamos el modelo persona.

this.modelo = new ModeloPersonas();

Creamos nuestro metodo Get Personas de nuestro Index donde realizaremos la llamada a nuestra lista de personas y retornado dicha lista para que se dibuje en nuestra vista llamada Index.

public ActionResult Index()
{
List<Persona> lista = this.modelo.GetPersonas();
return View(lista);
}

5


5.Aunque esta separado del anterior va exactamente dentro del mismo controller pero este metodo es el más importante por que es que llamaremos desde nuestra vista Index y es el que nos va a crear y devolver el PDF.

Nos crearemos el método llamado GenerarInforme el cual buscara a cada persona por su ID, lo primeros que nos crearemos será la ruta de destino de dichos informes y se la tenemos que dar la ruta absoluta.

Una vez creada dicha ruta es hora de preguntar si esa ruta existe que nos la devuelva y si no existe la creamos.

6

Como la creamos:

1.Recuperariamos el modelo y la persona por su ID

– ModeloPersonas modelo = new ModeloPersonas();

– Persona p = modelo.GetPersonaId(idpersona);

2.Creamos el código para crear el PDF y creamos el fichero con su ruta.

– Document doc = new Document(PageSize.LETTER);

– PdfWriter fichero = PdfWriter.GetInstance(doc,
new FileStream(rutapdf, FileMode.Create));
doc.AddTitle(“Informe Persona ” + p.Nombre);
doc.AddCreator(“Ejemplo PDF”);

 

3.Abrimos el documento y definimos la fuente del documento con el tipo de letra su fuente, color y demás.

-doc.Open()

-iTextSharp.text.Font _standardFont = new iTextSharp.text.
Font(iTextSharp.text.Font.FontFamily.HELVETICA, 11,
iTextSharp.text.Font.NORMAL, BaseColor.BLACK);

4.  Creamos el encabezado del texto, poniendo aquí lo que queramos,el título, autor ,fecha, etc.  y le damos un salto de línea.

-doc.Add(new Paragraph(“Informe de la persona: ” + p.Nombre + “, ”
+ DateTime.Now.ToLongDateString()));

–  doc.Add(Chunk.NEWLINE)

7

5.Aqui ya es mero dibujo, en este caso vamos a crear una tabla para representar cuatro datos de las personas, creando sus estilos y valores

-PdfPTable tabla = new PdfPTable(4);
tabla.WidthPercentage = 100;

–  PdfPCell colnombre = new PdfPCell
(new Phrase(“Nombre:”, _standardFont));
colnombre.BorderWidth = 0;
colnombre.BorderWidthBottom = 0.75f;

este código lo repetiremos tantas veces como hayamos declarado que vamos a crear sus valores

6.Añadimos las celdas a las tablas.

-tabla.AddCell(colnombre);

7.Añadimos datos a las celdas y añadimos dichas celdas a las tablas de nuevo ya con los valores obtenidos de nuestro modelo

-colnombre = new PdfPCell
(new Phrase(p.Nombre, _standardFont));
colnombre.BorderWidth = 0;

– tabla.AddCell(colnombre);

8.Agregamos la tabla al documento, cerramos el documento ,liberamos el PDF y devolvemos el PDF

– doc.Add(tabla);

– doc.Close();

-fichero.Close();

– return File(rutapdf, “application/pdf”);

9


6.Este es  el  último paso.

Nos vamos a nuestra vista Index anterior mente creada, lo primero que deberíamos de hacer es tapar nuestro modelo.Aquí haremos un foreach de nuestra lista de empleado para pintar a nuestra persona y crear un action link que nos devuelva el método antes creado, GenerarInforme.

4

Y con todo esto nos tendria que devolver el PDF sin problemas

 

 

Descripción: UTILIZAR PETICIÓN Y RESPUESTA FILE. Nos va a enseñar como poder crear documentos PDF y devolverlos.

Autor/a: Pedro Rodríguez Sánchez

Curso: ( Microsoft MCSD Web Applications + SharePoint Apps, Microsoft MCSE Private Cloud)

Centro: Tajamar

Año académico: 2016-2017