Creación de documentos PDF en sitios web utilizando el componente AspPDF

1
20119

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:

  1. Ejecutar el archivo descargado asppdf.exe
  2. Aceptar las condiciones de uso
  3. Incluir la clave enviada por Persist (30 días de evaluación) en la dirección de correo indicada anteriormente.
  4. Reiniciar los servicios del IIS
  5. Instalación del componente
  6. 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">&nbsp;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

SOBRE EL AUTOR…

1 COMENTARIO

  1. 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

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad