Nuevamente les traigo otro artículo como respuesta a una consulta donde explicaré cómo se puede mostrar documentos PDF en nuestra aplicación APEX que se encuentran guardados en nuestro sistema de archivos.
Primero de todo vamos a crear una carpeta dentro del c: que se llame pdfs y dentro de ella vamos a colocar un pdf de ejemplo llamado test.pdf

Desde nuestro Taller de SQL en Oracle APEX o desde el SQLplus, creamos un directorio virtual en nuestra base de datos:
create or replace directory MY_FILES as 'c:pdfs';
Luego creamos el siguiente procedimiento llamado SHO_PDF:
CREATE OR REPLACE PROCEDURE sho_pdf
AS
   l_blob    BLOB;
   l_bfile   BFILE;
BEGIN
   DBMS_LOB.createtemporary (l_blob, TRUE, DBMS_LOB.SESSION);
   --create or replace directory MY_FILES as 'c:pdfs'; --'/users/pdf/files'
   l_bfile := BFILENAME ('MY_FILES', 'test.pdf');
   DBMS_LOB.fileopen (l_bfile);
   DBMS_LOB.loadfromfile (l_blob, l_bfile, DBMS_LOB.getlength (l_bfile));
   DBMS_LOB.fileclose (l_bfile);

   OWA_UTIL.mime_header ('application/pdf',
                         bclose_header      => FALSE);
   ------------------------------------------------------------------------
   -- set content length
   ------------------------------------------------------------------------
   HTP.p ('Content-length: ' || DBMS_LOB.getlength (l_blob));
   OWA_UTIL.http_header_close;
   ------------------------------------------------------------------------
   -- download the file and display in browser
   ------------------------------------------------------------------------
   WPG_DOCLOAD.download_file (l_blob);
   ------------------------------------------------------------------------
   -- release resources
   ------------------------------------------------------------------------
   DBMS_LOB.freetemporary (l_blob);

EXCEPTION
   WHEN NO_DATA_FOUND
   THEN
      NULL;
END;
/
 Para que el procedimiento se ejecute On Deman vamos a crear un «Application Process» para ello vamos a Componentes Compartidos»
En el punto de proceso colocamos: On Demand…. y en el texto del proceso = sho_pdf;
Creamos en nuestra aplicacion en Apex una Region HTML o PL/SQL con el siguiente código:
htp.p(‘PDF Embebido abajo<br><br>’);
htp.p(‘<object data=»f?p=&APP_ID.:10:&APP_SESSION.:APPLICATION_PROCESS=DO_SHO_PDF» type=»application/pdf» width=»500″ height=»500″>  alt : <a href=»f?p=&APP_ID.:10:&APP_SESSION.:APPLICATION_PROCESS=DO_SHO_PDF»>test.pdf</a></object>’);
–htp.p(‘<br>pdf IFRAME below<br>’);
–htp.p(‘<iframe src=»f?p=&APP_ID.:10:&APP_SESSION.:APPLICATION_PROCESS=DO_SHO_PDF» width=»500″ height=»500″ frameborder=»1″><p>Your browser does not support iframes.</p></iframe>’);
–htp.p(‘<br>2 pdfs above’);
En mi caso estoy usando la pagina 10, ustedes pondrán la que corresponda.
Ejecutamos la página y como podemos ver dentro de la región HTMLse visualiza el archivo PDF localizado en nuestro file system.
Nota relacionada con el siguiente topic del foro de OTN Ver Aqui

Mostrar PDF guardados en nuestro File System en Oracle APEX filtrado por Nombre de Archivo
Ver Aquí