¿Cómo generar un PDF a través de la librería NRECO PDFGenerator for .NET?

Como programadores, en nuestro día a día, tenemos que enfrentarnos a proyectos con requerimientos muy variados a los que tenemos que buscar soluciones para satisfacer las necesidades del cliente. Hoy me gustaría centrarme en un requerimiento que seguro que alguno de vosotros ya ha tenido que solucionar en alguna ocasión: generar un documento PDF.

Son muchas las posibilidades que tenemos de generar un documento PDF y muchas las librerías que podemos encontrar que nos ayudarían a realizar esta tarea. Mi experiencia me ha enseñado que una de las formas más sencillas de generar un PDF es a partir de una página HTML, siempre que se conozca este lenguaje, y me gustaría explicaros cómo hacerlo.

Antes de todo hay que establecer el marco de trabajo. En mi caso os voy a hablar de una librería para .NET (C#) que nos permite generar archivos PDF a partir de contenido HTML y que resulta muy fácil de utilizar. Dicha librería se llama NRECO PDFGenerator for .NET (www.nrecosite.com/PDF_generator_net.aspx).

En el ejemplo que ilustraré a continuación generaremos un documento PDF de varias páginas de longitud con una cabecera y un pie de página donde, de una forma muy sencilla, podremos insertar el número de páginas del documento.

Lo primero que debemos hacer es descargarnos la librería y referenciarla en nuestro proyecto. En este caso el ejemplo esta realizado en un proyecto MVC generado con una plantilla standard de Visual Studio.

PDF-Generator

A continuación crearemos la página HTML que queremos convertir en PDF. En este caso la página es estática y no recupera los datos de ninguna fuente de datos externa pero podríamos pensar que se trata de una página dinámica que obtiene los datos de un servicio externo o una base de datos.

PDF-GENERATOR2

El siguiente paso sería añadir un botón a la pantalla principal que llamara a la acción de generar PDF. En la acción del controlador añadimos el código necesario para generar el PDF. Sería el siguiente:

pdf-generator-10

En la imagen os he marcado tres zonas que me gustaría destacar. La primera, y la más importante, es la marcada en rojo. Esta línea es la que “genera” el PDF a partir de la vista HTLM. Por otro lado los recuadros en verde: el primero genera el archivo y devuelve los bytes para la descarga del archivo y el último es un método que obtiene la vista, la renderiza y la transforma a string.

pdf-generator-11

Como podéis ver, prácticamente en una sola línea, hemos conseguido generar un documento PDF a partir de una vista HTML. ¿Fácil verdad? Pues aún hay más.

Ahora me gustaría añadir un encabezado con el título del documento y un pie de página con el número de la página del documento. Lo haríamos así:

PDF-GENERATOR-4

Finalmente me gustaría añadir un poco de estilo a la página y una imagen.

Esta librería nos permite referenciar, de una forma “natural”, hojas de estilo y documentos externos para añadirlos a nuestro PDF y así darle el aspecto que más se adapte a nuestras necesidades.

PDF GENERATOR5
Observar que en este caso no podemos añadir una referencia relativa a la hoja de estilo sino que es necesario la ruta absoluta para poder acceder a la misma y poder aplicar los estilos.

PDF-GENERATOR-18

Con las imágenes podemos hacer lo mismo. Añadimos la ruta de la misma y la librería se encarga de ir a buscar la imagen y añadirla al documentoPDF-GENERATOR-19

De todos modos tengo que destacar que me he encontrado con varias limitaciones que no he logrado solventar utilizando la versión free de la librería.

  • El salto de las páginas es automático y se genera dinámicamente en función del contenido HTML. No he encontrado forma de saber cuando se va a realizar un salto de página.
  • La cabecera y el pie de página se repiten sin excepción en todas las páginas y no hay manera de poner encabezados y pies de página diferentes. Sólo existe la posibilidad de generar una portada para el documento donde podríamos no poner encabezado ni pie de página.
  • El estilo del encabezado y el pie de página es necesario realizarlo inline y no se puede formatear a través de una hoja de estilo externa.

En conclusión y a pesar de las “limitaciones” que tenemos considero que esta librería facilita mucho la tarea de realizar documentos PDF si lo comparamos con herramientas como Migradoc/PDFSharp (www.pdfsharp.net) en las que hay que generar el PDF casi pixel a pixel.

Fuentes:

http://www.nrecosite.com/pdf_generator_net.aspx

La página web que he ilustrado es un ejemplo obtenido de http://ejemplocodigo.com/ejemplo-html5-maquetacion-de-una-pagina/

Si quieres saber más sobre las Soluciones de Microsoft de SOGETI, puedes visitar nuestra página.

Marçal Montserrat

Software Engineer and Team Lead | Soluciones Microsoft | SOGETI ESPAÑA

 

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s