1- Introducción
En este tutorial, se presentarán las características principales del componente ASP-PDF que permite gestionar documentos PDF en páginas web, se mostrarán varios ejemplos de su utilización.
Se puede consultar toda la documentación sobre este componente en la siguiente dirección web: http://www.asppdf.com
2- Conceptos generales sobre ASP-PDF
AspPDF es un componente ActiveX que permite, a través de páginas ASP, la creación, lectura y modificación de documentos PDF sobre el servidor web.
Con él, podrás generar tus propios documentos PDF para múltiples aplicaciones: creación de facturas online, presupuestos online, recibos, creación de informes financieros, hojas de productos, etc.
Se puede descargar desde la dirección: http://www.asppdf.com/download.html (Versión de evaluación de 30 días)
Se solicita una dirección de email para enviarnos una clave temporal y procedemos a descargarnos el archivo.
Para su instalación, necesitaremos tener instalado un sistema operativo Windows XP Professional ó Windows Server 200, 2003 e IIS (Internet Information Server). Los pasos a seguir son:
- Ejecutar el archivo descargado asppdf.exe
- Aceptar las condiciones de uso
- Incluir la clave enviada por Persist (30 días de evaluación) en la dirección de correo indicada anteriormente.
- Reiniciar los servicios del IIS
- Instalación del componente
- Finalización de la instalación, permite la posibilidad de leer el manual del componente en la siguiente dirección por defecto: C:\Archivos de programa\Persits Software\AspPDF\Documentation\manual.html
Características del componente AspPDF
Algunas de las funcionalidades disponibles de este componente de servidor:
- Capacidad de modificar, leer y generar de manera automática y directa, documentos PDF.
- Permite leer los documentos desde su espacio en disco o desde base de datos.
- Puede guardar los documentos PDF en disco, en memoria (método que permite salvar en base de datos) o enviarlos al navegador vía HTTP, utilizando los métodos: SaveToMemory o SaveHttp.
- Permite insertar imágenes, soportando los formatos GIF, JPEG, BMP y TIFF.
- Puede incluir texto formateado (posición, tamaño, tipo de letra, color, etc.).
- Relleno de formularios.
- Permite crear gráficos y dibujos mediante líneas, curvas, etc.
- Soporte para campos de formulario interactivos como cajas de texto, botones o cajas de selección.
- Extracción, inserción o eliminación de páginas.
- Protección del documento o partes del mismo con contraseña.
3- Primer ejemplo de utilización del componente AspPDF: «Hola mundo»
Vamos a presentar el primer ejemplo de utilización de AspPDF, con la generación de un documento PDF que presente la famosa frase «Hola Mundo», para ello utilizaremos el siguiente código:
<%@LANGUAGE="VBSCRIPT"%> <% ' iniciar el objeto Set Pdf = Server.CreateObject("Persits.Pdf") ' iniciar el documento Set Doc = Pdf.CreateDocument ' propiedad "título" del documento Doc.Title = "Ejemplo 1: Hola Mundo" ' añadir página Set Page = Doc.Pages.Add ' indicar la tipografía del documento (hasta nueva orden) Set Font = Doc.Fonts("Arial") ' coordenadas y otros parámetros para el texto Params = "x=0; y=650; width=612; alignment=center; size=50" ' escribir el texto con los parámetros Page.Canvas.DrawText "Hola Mundo", Params, Font ' generar el fichero ' Se indica la ruta final donde se guardará el archivo Filename = Doc.Save(Server.MapPath("/archivos/pdfs/hola.pdf"), False ) ' mostrar el enlace en la página web Response.Write "¡Enhorabuena!, ya puedes descargar el fichero PDF creado <A HREF=/archivos/pdfs/" & Filename & ">aquí</A>" %>
Puedes copiar y pegar este código y probarlo en tu servidor web, para comprobar cómo se genera tu primer documento pdf de forma automática.
4– Ejemplo del tutorial: Realización de factura online
A continuación, presentamos un ejemplo completo de utilización del componente AspPDF para la generación de facturas online en una aplicación web:
El siguiente código muestra un formulario para solicitar los datos necesarios para implementar una factura, la página la llamaremos formulario_factura.asp:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Formulario de datos</title> </head> <body> <h1>Formulario de recogida de datos</h1> <form name="frmFactura" method="post" action="genarar_factura_pdf.asp"> <table width="600" height="100%" border="0" cellpadding="2" cellspacing="0"> <tr><td width="150" class="cuerpoPequeno"><b>Número de Factura:</b></td><td><input type="text" name="nfactura" size="10" maxlength="10" value="" title="Número de factura"></td></tr> <tr><td width="150" class="cuerpoPequeno"><b>Cliente:</b></td><td><input type="text" name="cliente" size="50" maxlength="250" value="" title="Escriba aquí el nombre del cliente"></td></tr> <tr><td width="150"><b>CIF:</b> </td><td><input type="text" name="cif" value="" size="15" maxlength="10" title="Escriba aquí el CIF del cliente"> (mín. 7 dígitos)</td></tr> <tr><td width="150" class="cuerpoPequeno"><b>Base Imponible:</b></td><td><input type="text" name="precio" size="6" maxlength="6" value="0"> Euros</td></tr> <tr><td width="150" class="cuerpoPequeno"><b>Fecha:</b></td><td><input type="text" name="fecha" size="10" maxlength="10" value="<%= date() %>"></td></tr> <tr><td width="150" class="cuerpoPequeno"><b>Concepto:</b></td> <td><textarea name="concepto" cols="40" rows="4"></textarea></td> </tr> <tr><td colspan="2" align="center"><input type="submit" name="enviar" value="Enviar"></td></tr> </table> </form> </body> </html>
El siguiente código muestra la página de recogida de la información del anterior formulario y la generación del archivo pdf utilizando el componente AspPDF utilizando maquetación con HTML, el directorio de destino del archivo pdf creado, debe tener permisos de escritura:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Formulario de generación de PDF</title> </head> <body> <% sNFactura = trim(request("nFactura")) sCliente = trim(request("Cliente")) sBase = trim(request("Precio")) sCif = trim(request("Cif")) sFecha = trim(request("Fecha")) sConcepto = trim(request("Concepto")) ' Creamos una instancia del componente AspPDF Set Pdf = Server.CreateObject("Persits.Pdf") ' Creamos un nuevo documento vacío Set Doc = Pdf.CreateDocument ' Indicamos título y creador del documento Doc.Title = "Factura Online" Doc.Creator = "carixma.com" ' Añadimos una nueva página Set Page = Doc.Pages.Add ' Establecemos la fuente para el texto Set Font = Doc.Fonts("Arial") ' Insertamos el texto del PDF Params = "x=0; y=750; width=552; alignment=center; size=30" Page.Canvas.DrawText "Factura de compra", Params, Font Params = "x=50; y=700; width=552; alignment=left; size=15; html=true" Page.Canvas.DrawText "<b>Fecha:</b> " & sFecha, Params, Font sTexto = "<p align=""justify"">Número de Factura: <b>" & sNFactura & "</b></p>" sTexto = sTexto & "<p align=""justify"">Cliente: " & sCliente & "</p>" sTexto = sTexto & "<p align=""justify"">CIF: " & sCif & "</p>" sTexto = sTexto & "<br><br><p align=""justify"">Base Imponible:<b>" & sBase & "</b></p>" sTexto = sTexto & "<br><br><p align=""justify"">Concepto:" & sConcepto & "</p>" Params = "x=50; y=650; width=552; alignment=left; size=15; html=true" Page.Canvas.DrawText sTexto, Params, Font Params = "x=50; y=310; width=552; alignment=left; size=15" Page.Canvas.DrawText "FIRMA", Params, Font ' Guardamos el documento en disco ' El directorio 'pdf' debe tener permiso de escritura sFichero = "pdf\factura.pdf" Filename = Doc.Save( Server.MapPath(sFichero), true) response.redirect sFichero %> </body> </html>
El siguiente código muestra la página de recogida de la información del anterior formulario y la generación del archivo pdf utilizando el componente AspPDF sin utilizar maquetación con HTML, sino directamente las instrucciones del componente AspPDF:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Formulario de generación de PDF</title> </head> <body> <% sNFactura = trim(request("nFactura")) sCliente = trim(request("Cliente")) sBase = trim(request("Precio")) sCif = trim(request("Cif")) sFecha = trim(request("Fecha")) sConcepto = trim(request("Concepto")) ' Creamos una instancia del componente AspPDF Set Pdf = Server.CreateObject("Persits.Pdf") ' Creamos un nuevo documento vacío Set Doc = Pdf.CreateDocument ' Indicamos título y creador del documento Doc.Title = "Factura Online" Doc.Creator = "carixma.com" ' Añadimos una nueva página Set Page = Doc.Pages.Add ' Establecemos la fuente para el texto Set Font = Doc.Fonts("Arial") ' Insertamos el texto del PDF Params = "x=0; y=750; width=552; alignment=center; size=30" Page.Canvas.DrawText "Factura de compra", Params, Font Params = "x=50; y=700; width=552; alignment=left; size=15; html=true" Page.Canvas.DrawText "<b>Fecha:</b> " & sFecha, Params, Font sTexto1 = "Número de Factura: " & sNFactura sTexto2 = "Cliente: " & sCliente sTexto3 = "CIF: " & sCif sTexto4 = "Base Imponible: " & sBase sTexto5 = "Concepto: " & sConcepto Params = "x=50; y=650; width=552; alignment=left; size=15; html=true" Page.Canvas.DrawText sTexto1, Params, Font Params = "x=50; y=600; width=552; alignment=left; size=15; html=true" Page.Canvas.DrawText sTexto2, Params, Font Params = "x=50; y=550; width=552; alignment=left; size=15; html=true" Page.Canvas.DrawText sTexto3, Params, Font Params = "x=50; y=500; width=552; alignment=left; size=15; html=true" Page.Canvas.DrawText sTexto4, Params, Font Params = "x=50; y=450; width=552; alignment=left; size=15; html=true" Page.Canvas.DrawText sTexto5, Params, Font Params = "x=50; y=310; width=552; alignment=left; size=15" Page.Canvas.DrawText "FIRMA", Params, Font ' Guardamos el documento en disco ' El directorio 'pdf' debe tener permiso de escritura sFichero = "pdf\factura.pdf" Filename = Doc.Save( Server.MapPath(sFichero), true) response.redirect sFichero %> </body> </html>
La diferencia, es que en la primera opción, podemos incluir el contenido formateado en HTML, utilizando tables, párrafos, fonts, … mientras que en el segundo ejemplo, se utiliza la instrucción DrawText para ir colocando todo el contenido de forma correcta utilizando los parámetros «y» y «x».
5– Conclusión
En este tutorial se muestran las características generales del componente ASP-PDF que permite gestionar documentos PDF desde una aplicación web.
Se muestran varios ejemplos de su utilización, ejemplos para la maquetación y presentación de textos e imágenes, pudiendo realizarse muchas más funciones como gráficos, tablas, etc. En el manual completo, se presentan varios ejemplos para su uso y aplicación.
Se puede utilizar este componente para múltiples usos: generación de facturas online, recibos, documentación de productos, currículos, portafolios, presupuestos, etc.
Quiero destacar las siguientes referencias con información y utilidades muy interesantes sobre ASP-PDF, que se han utilizado para la realización de este tutorial.
Puedes consultar el manual completo del componente ASP-PDF en la siguiente dirección:
http://www.asppdf.com/manual.html
También puedes consultar el detalle de todos sus objetos y métodos en la siguiente dirección
http://www.asppdf.com/objectreference.html
Algunas direcciones de interés son:
http://www.arsys.es/ayuda/directorio/productos/hosting/asppdf.htm
http://www.arsys.es/ayuda/guias/componentes-activex/asppdf.htm
Por último, en este tutorial he puesto la mejor intención para presentar esta componente tan útil para el desarrollo de documentos pdfs dinámicos en sitios web, pero puedo haberme equivocado en algún aspecto de este tutorial, si alguien desea aportar datos, o colaborar, o corregirme, estaré encantado de recibir y estudiar su respuesta en icaballero@carixma.com
Hola.. encontre un articulo que buscaba para poder hacer un formulario en el que poder recoger la firma del usuario y luego pasarlo al pdf ??
sabes como puedo hacerlo ?
la firma no la tengo en imagen previamente, sino que la pido en el formulario y luego tengo que generar el pdf con esa firma
Espero puedas ayudarme
gracias y enhorabuena