Crear un PDF con ASP clásico

Código ASP clásico

Crear un archivo PDF desde una aplicación ASP clásico puede ser muy útil en situaciones donde necesitas generar documentos legibles y portátiles para compartir con otras personas. Un archivo PDF tiene la ventaja de poder ser visualizado y compartido en diferentes dispositivos sin la necesidad de tener instalado el software original que se utilizó para crearlo. Además, el contenido del PDF no se puede editar fácilmente, lo que lo hace ideal para compartir documentos que requieren un alto nivel de seguridad y protección de la información.

En una aplicación ASP clásico, puedes crear un archivo PDF en tiempo real utilizando herramientas de generación de PDF como iTextSharp o PDFLib. Esto te permite generar documentos personalizados con datos dinámicos, como informes financieros, facturas, confirmaciones de reserva, entre otros. También puedes agregar imágenes, tablas y gráficos para mejorar la presentación visual del documento.

Otra ventaja de generar archivos PDF desde una aplicación ASP clásico es que puedes automatizar la creación y envío de documentos a través de correo electrónico o descarga directa desde la web. Esto puede ahorrar mucho tiempo y esfuerzo en la generación manual de documentos y en la comunicación con los clientes o usuarios.

En resumen, crear archivos PDF desde una aplicación ASP clásico es una manera efectiva de generar y compartir documentos portátiles y seguros con información dinámica y visualmente atractiva. Esta funcionalidad puede mejorar significativamente la eficiencia y la calidad de los procesos empresariales, ya que permite automatizar la creación y envío de documentos importantes a los clientes y usuarios.

En varios de nuestros sistemas web en ASP clásico hemos visto la necesidad de generar documentos PDF al vuelo, es decir de forma dinámica con alguna información extraida de alguna base de datos SQL Server. Existen múltiples componentes (.dll) que se instalan en el servidor web IIS y ayudan a cumplir el objetivo.

Sin embargo, hay ocasiones en que no tenemos acceso o permiso en el servidor web para instalar nada, tal es el caso de los servicios de hosting compartido o webhosting. En este caso existe una librería desarrollada en ASP clásico y la cual es una traducción de una librerría originalmente creada en PHP.

A continuación vemos el siguiente artículo en el cual se muestra el código ASP clásico empleado para genera archivos PDF al vuelo.

Una de las cosas interesantes que se pueden hacer en un sitio web o aplicación es presentar informes directamente en formato pdf. Si usted tiene una base de datos de la que se extraen datos, se puede manipular la información y crear un archivo pdf sobre la marcha. FPDF es  totalmente gratuito para uso comercial y no comercial, y tiene casi todo lo que necesita para construir su documento pdf.

Un gran usuario llamado bcsite decidió organizar los archivos en www.inforemax.com / fpdf.zip .

En primer lugar debe descargar la clase y extraer los archivos en una carpeta de su sitio web. La carpeta (lo llamamos “public”) debe tener permisos de leer y escribir porque el archivo pdf será guardado (temporalmente) en el servidor.
Cree una nueva página ASP. E insertar todo el código necesario para recuperar datos de su base. A continuación, incluya la clase:

 

En este punto tenemos que inicializar el archivo pdf, establecer algunos parámetros:

 

<%  Set pdf=CreateJsObject("FPDF") pdf.CreatePDF "P","mm","A4" pdf.SetPath("fpdf/") pdf.SetFont "Arial","",12 pdf.Open()....

 

La principal diferencia entre el uso de la clase en VBScript y JavaScript es en el comando CreateJsObject, que se utiliza en VBScript. JavaScript es necesario utilizar var pdf = new FPDF ();
En nuestros ejemplos, consideraremos VBScript como lenguaje preferido.
CreatePDF inicializa la clase con 3 parámetros:

  • orientación
  • unidad de medida
  • el formato

Orientación podría ser “P” para el retrato o “L” para el paisaje.

Unidad de Medida acepta pt (por puntos), mm (milímetros para), cm (por centímetros) y en (por pulgadas).

El formato puede ser A3, A4, A5, carta, legal o una matriz bidimensional que contiene la anchura y la altura (expresada en la unidad de medida antes mencionada).

SetPath establece la ruta de acceso relativa o virtual de la carpeta FPDF (donde está toda la incluye, se extiende, las fuentes y modelos de carpetas se encuentran).
SetFont sirve para establecer la fuente del documento y su tamaño – SetFont(string family [, string style [, float size]]).
Open inicia la generación del documento, pero en este momento no se produce realmente. Tenemos que empezar a insertar cosas:

 

pdf.AddPage() pdf.Image "head.jpg",5,5,201,0

El comando AddPage () inserta una nueva página. Acepta una orientación cadena en forma de “P” o “L”, de lo contrario, se llevará a la orientación predeterminada dada por el comando CreatePDF.
En el ejemplo anterior, insertamos una imagen llamada “head.jpg”. La sintaxis del comando es: Image(stringfile, float x, float y, float w [, float h [, string type [, mixed link]]])
Los tipos de imagen soportados son JPG y PNG.
Ahora nos vamos de e insertamos nuevos elementos:

 

pdf.SetXY 95,13pdf.setfillcolor 255,255,255pdf.Cell 55,5,"HELLO!",1,0,,1

 

En primer lugar, nos propusimos la posición de inserción a un punto específico en la página, con SetXY(float x, float y).

Luego establecemos el color de relleno con SetFillColor(int r [, int g, int b]) porque queremos determinar el color de relleno de una celda o un cuadro creado después. De hecho insertamos una celda con el comando: Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, int fill [, mixed link]]]]]]]).

En el ejemplo dado la celda es:

  • 55 de ancho
  • 5 de alto
  • contiene el texto “¡HOLA!”
  • tiene un borde (“1″)
  • está alineado a la derecha (“0″ a la derecha, “1” al comienzo de una nueva línea y “2” en la parte inferior), de forma predeterminada de alineación (posibles valores son “L”, “C” y “R”)
  • el relleno debe ser coloreado (“0″ sería transparente ).

La cadena puede ser sustituido por algo que te gusta, a partir de una variable a un valor de conjunto de registros. También puede utilizar una región repetida sencilla para mostrar los registros de una base de datos.

Lo siguiente es:

 

pdf.SetXY 8,156 pdf.setfillcolor 197,198,200 pdf.MultiCell 40,4,"Hello!",0,0,1

 

Después de cambiar la posición y el color de relleno, creamos un MultiCell. Un MultiCell tiene los mismos parámetros que Cell, pero puede contener texto con saltos de línea. Esos saltos de línea podrían ser automática (cuando el texto alcanza el ancho de la celda) o explícita (con /n).

MultiCell(float w, float h, string txt [, mixed border [, string align [, int fill]]]).
Como se puede ver todos los objetos que se pueden colocar dondequiera que usted necesita que sean, y si se utiliza el comando SetXY, usted realmente no necesita seguir el flujo natural documento. De hecho usted puede agregar objetos al final de una página, y después, volver a añadir una imagen en la parte superior de la misma.
Después de insertar todos los elementos necesarios, podemos añadir nuevas páginas y elementos, pero al final nos terminar nuestro trabajo. Así se cierra el documento y creamos:

 

pdf.Close() filewrite=Server.MapPath("/public/mypdf.pdf") pdf.Output filewrite

 

La orden Close cierra el documento. Luego establecemos la variable filewrite para ser utilizado con el comando Output .

El comando Output es: Output([string file [, boolean download]]), donde file es el nombre del archivo.

Si se deja en blanco, el archivo se abrirá en el navegador, de lo contrario se guardará.

Si se especifica el archivo, descargar es  “falso” (el archivo se guarda localmente) o “true” (aparecerá le ventana de “Guardar como”).

Eso me dio un montón de problemas, y por lo que decidió utilizar el comando como en el ejemplo. El archivo se graba en el directorio “public”, y eso podría ser un problema si se generan diferentes archivos con nombres dinámicos. De hecho su carpeta podría estar pronto llena con archivos que realmente no necesita. Entonces sólo tiene que utilizar un pequeño truco para abrir el archivo en el navegador y luego borrarlo del servidor:

 

Response.ContentType = "application/x-unknown"FPath = filewritefn = "mypdf.pdf"Response.AddHeader "Content-Disposition","attachment; filename=" & fnSet adoStream = CreateObject("ADODB.Stream")adoStream.Open()adoStream.Type = 1adoStream.LoadFromFile(FPath)Response.BinaryWrite adoStream.Read()adoStream.CloseSet adoStream = Nothingdim fsSet fs=Server.CreateObject("Scripting.FileSystemObject")if fs.FileExists(server.mappath("/public/"&fn)) thenfs.DeleteFile(server.mappath("/public/"&fn))end ifset fs=nothingResponse.End%>

Básicamente, con el código anterior, abrimos el archivo pdf en el navegador (obviamente, un plug-in o un lector de pdf debe estar instalado en el equipo de destino) y luego usar el Scripting.FileSystemObject para borrar el archivo.

 

 

tags: generar pdf con asp clásico, generar pdf con asp, generar pdf asp clásico, asp classic pdf, asp classic pdf generator, classic asp generate pdf from html, asp classic export to pdf, asp classic save pdf from html

En esta sección encontrarás una mezcla de códigos recopilados de fuentes públicas de Internet y otros creados por ASP TEAM. Compartimos recursos útiles de buena fe para formar una base de conocimiento en el desarrollo de aplicaciones en ASP Clásico.