Es posible generar archivos PDF desde Oracle?
Buscando por la web encontre un paquete AS_PDF que permite generar archivos PDF con el formato que necesitemos, viendo los ejemplos es muy completa y la podemos adaptar a nuestras necesidades, pero dependiendo del contenido va a depender la complejidad de armar un archivo PDF.
Este post fue realizado con la referencia de ejemplos de la siguiente pagina:
https://technology.amis.nl/2010/10/20/as_pdf-generating-a-pdf-document-with-some-plsql/
Voy a dar unos ejemplos sencillos de como utilizar el paquete, pero antes de usar los ejemplos primero hay que descargar el código del paquete AS_PDF_MINI y compilarlo:
AS_PDF_MINI.PKS
AS_PDF_MINI.PKB
Creación archivo PDF con AS_PDF_MINI
Una vez creado el paquete AS_PDF_MINI tenemos que definir un directorio en el host y crear el directorio en la BD para poder guardar los archivos PDF generados.
Directorio del host de BD D:\PDF
Creamos el directorio en la BD
El archivo EjemploPDF.PDF se generará en la ruta D:\PDF
Ejemplo 2
Creaciónn de lineas verticales y horizontales
El archivo EjemploPDF_2.PDF se generará en la ruta D:\PDF
Ejemplo 3
Manejo de los tipo de lestras y fornato de hoja
El archivo EjemploPDF_3.PDF se generará en la ruta D:\PDF
Ejemplo 4
Inserción de una imagen en el documemento PDF, para ello ubicaremos una imagen BARCELONA.JPG dentro de la ruta del host D:\DMP para que sea leida e insertada en el documento.
El archivo EjemploPDF_4.PDF se generará en la ruta D:\PDF
Buscando por la web encontre un paquete AS_PDF que permite generar archivos PDF con el formato que necesitemos, viendo los ejemplos es muy completa y la podemos adaptar a nuestras necesidades, pero dependiendo del contenido va a depender la complejidad de armar un archivo PDF.
Este post fue realizado con la referencia de ejemplos de la siguiente pagina:
https://technology.amis.nl/2010/10/20/as_pdf-generating-a-pdf-document-with-some-plsql/
Voy a dar unos ejemplos sencillos de como utilizar el paquete, pero antes de usar los ejemplos primero hay que descargar el código del paquete AS_PDF_MINI y compilarlo:
AS_PDF_MINI.PKS
AS_PDF_MINI.PKB
Creación archivo PDF con AS_PDF_MINI
Una vez creado el paquete AS_PDF_MINI tenemos que definir un directorio en el host y crear el directorio en la BD para poder guardar los archivos PDF generados.
Directorio del host de BD D:\PDF
Creamos el directorio en la BD
CREATE OR REPLACE DIRECTORY PDF AS 'D:\PDF';
Ejemplo 1
Generación de un archivo PDF simple
begin as_pdf_mini.init; as_pdf_mini.write( 'Esto es una prueba para la creacion de un PDF desde una rutina PL/SQL.' ); as_pdf_mini.write( 'Por cada linea escrita por as_pdf_mini.write() se agrega en la linea siguiente. Sin embargo el texto se ajuasta automaticamente en la nueva linea .' ); as_pdf_mini.write( 'Tambien existe la posibilidad de poner el texto en cualquier lugar ubicando las coordenadas', -1, 700 ); as_pdf_mini.write( 'Asi es', 100, 650 ); as_pdf_mini.write( 'Tambien tienes la capacidad de alinear el texto a las izquierda, derecha y centrada', p_y => 600, p_alignment => 'right' ); --P_DIR directorio donde se almacenara el archivos,P_FILENAME nombre del archivo as_pdf_mini.save_pdf(p_dir=>'PDF',p_filename=>'EjemploPDF.pdf'); end; |
El archivo EjemploPDF.PDF se generará en la ruta D:\PDF
![]() |
Ejemplo del archivo generado |
Ejemplo 2
Creaciónn de lineas verticales y horizontales
begin as_pdf_mini.init; for i in 1 .. 10 loop as_pdf_mini.horizontal_line( 30, 700 - i * 15, 100, i ); end loop; for i in 1 .. 10 loop as_pdf_mini.vertical_line( 150 + i * 15, 700, 100, i ); end loop; for i in 0 .. 255 loop as_pdf_mini.horizontal_line( 330, 700 - i, 100, p_line_color => to_char( i, 'fm0x' ) || to_char( i, 'fm0x' ) || to_char( i, 'fm0x' ) ); end loop; --P_DIR es el directorio donde se almacenara los archivos,P_FILENAME es el nombre del archivo que se va a generar as_pdf_mini.save_pdf(p_dir=>'PDF',p_filename=>'EjemploPDF_2.pdf'); end; |
El archivo EjemploPDF_2.PDF se generará en la ruta D:\PDF
![]() |
Archivo generado |
Ejemplo 3
Manejo de los tipo de lestras y fornato de hoja
begin as_pdf_mini.init; --p_format formato de la hoja, p_orientation direccion de la hoja PORTRAIT o LANDSCAPE AS_PDF_MINI.SET_FORMAT(p_format=>'A4',p_orientation=>'PORTRAIT'); as_pdf_mini.write( 'La versión mini de AS_PDF se limita a los 14 PDF- fuentes estándar y la codificación WINDOWS- 1252.' ); as_pdf_mini.set_font( 'helvetica' ); as_pdf_mini.write( 'helvetica, normal: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, 700 ); as_pdf_mini.set_font( 'helvetica', 'I' ); as_pdf_mini.write( 'helvetica, italic: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'helvetica', 'b' ); as_pdf_mini.write( 'helvetica, bold: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'helvetica', 'BI' ); as_pdf_mini.write( 'helvetica, bold italic: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'times' ); as_pdf_mini.write( 'times, normal: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, 625 ); as_pdf_mini.set_font( 'times', 'I' ); as_pdf_mini.write( 'times, italic: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'times', 'b' ); as_pdf_mini.write( 'times, bold: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'times', 'BI' ); as_pdf_mini.write( 'times, bold italic: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'courier' ); as_pdf_mini.write( 'courier, normal: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, 550 ); as_pdf_mini.set_font( 'courier', 'I' ); as_pdf_mini.write( 'courier, italic: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'courier', 'b' ); as_pdf_mini.write( 'courier, bold: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'courier', 'BI' ); as_pdf_mini.write( 'courier, bold italic: ' || 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); -- as_pdf_mini.set_font( 'courier' ); as_pdf_mini.write( 'symbol:', -1, 475 ); as_pdf_mini.set_font( 'symbol' ); as_pdf_mini.write( 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); as_pdf_mini.set_font( 'courier' ); as_pdf_mini.write( 'zapfdingbats:', -1, -1 ); as_pdf_mini.set_font( 'zapfdingbats' ); as_pdf_mini.write( 'Guayaquil es la perla del pacifico. 1234567890', -1, -1 ); -- as_pdf_mini.set_font( 'times', 'N', 20 ); as_pdf_mini.write( 'times, normal with fontsize 20pt', -1, 400 ); as_pdf_mini.set_font( 'times', 'N', 6 ); as_pdf_mini.write( 'times, normal with fontsize 5pt', -1, -1 ); --P_DIR es el directorio donde se almacenara los archivos,P_FILENAME es el nombre del archivo que se va a generar as_pdf_mini.save_pdf(p_dir=>'PDF',p_filename=>'EjemploPDF_3.pdf'); end; |
El archivo EjemploPDF_3.PDF se generará en la ruta D:\PDF
Ejemplo 4
Inserción de una imagen en el documemento PDF, para ello ubicaremos una imagen BARCELONA.JPG dentro de la ruta del host D:\DMP para que sea leida e insertada en el documento.
begin as_pdf_mini.init; as_pdf_mini.set_format(p_format=>'A4',p_orientation => 'PORTRAIT'); as_pdf_mini.put_image (p_dir=> 'PDF',p_file_name=>'BARCELONA.jpg',p_x=>130, p_y => 500); as_pdf_mini.set_font( 'times', 'N', 24 ); as_pdf_mini.write( p_txt=>'BARCELONA CAMPEON', p_Y=> 500, p_alignment=>'center' ); --se presenta imagen en dimension especifica as_pdf_mini.put_image (p_dir=> 'PDF',p_file_name=>'BARCELONA.jpg',p_x=>10, p_y => 300, p_width=>100, p_height=>100); as_pdf_mini.save_pdf(p_dir=>'PDF',p_filename=>'EjemploPDF_4.pdf'); end; |
El archivo EjemploPDF_4.PDF se generará en la ruta D:\PDF