Oracle APEX 5.0将PDF动态嵌入页面

时间:2018-03-26 08:28:14

标签: javascript oracle pdf embed oracle-apex-5

你好APEX初学者,

我无法将pdf url动态嵌入到我的应用程序中。图像正常显示,但它不适用于pdf。

我有一个apex_process来调用用于下载BLOB文件的过程(* code1)。通过URL调用此apex_process。每当我在img标签的src属性中设置所述url时,我都会使用img标签来显示图像。    但是,这似乎不适用于对象标记。设置对象标签的数据属性的URL不会做任何事情。

有谁知道如何动态显示存储在数据库中的pdf。 任何帮助表示赞赏

APEX 5.0.4 Oracle 11g

* CODE1

sys.htp.init;
sys.htp.p('Content-length: ' || sys.dbms_lob.getlength(p_FileBlob));
sys.htp.p('Content-Disposition: attachment; filename="' || p_FileNm|| '"' );
sys.owa_util.http_header_close;
sys.wpg_docload.download_file(p_FileBlob);

更新

我可能不清楚我的目标。我想实际在我的页面中嵌入一个pdf,就像直接在页面上有一个adobe-reader-esque视图一样。没有下载pdf的链接。

2 个答案:

答案 0 :(得分:1)

我创建了一个页面(第32页)来处理所有下载。它有一个隐藏的ID项(P32_ID)和几个标题页进程之前。每个进程处理不同的请求。

对于pdf,可以如下:

来自主叫页面: 在fp =&安培; APP_ID:32:&安培; SESSION:GETPDF:NO :: P32_ID:YOUR_PDF_ID

发送到页面的是请求:GETPDF和要下载的PDF的ID。

第32页有一个ON LOAD - 在标题页处理之​​前,条件为REQUEST = Expression 1,GETPDF。

此过程的PLSQL代码为:

declare
   l_length       pls_integer;
   l_blob         blob;
   l_content_type varchar2(100);
   l_filename     varchar2(30);
begin

   select blobdata
   into l_blob
   from your_blob_table 
   where ID = v('P32_ID');


   l_content_type := 'application/pdf';

   l_length := nvl(dbms_lob.getlength(l_blob), 0);

   if l_length = 0
   then
      htp.p('No data');
      return;
   end if;

   l_filename := 'GETPDF.pdf';


   -- create response header
   owa_util.mime_header(l_content_type, false);
   -- add furhter header attributes
   htp.p('Content-length: ' || l_length);
   htp.p('Content-Disposition: attachment; filename="' || l_filename || '"');
   -- close the headers
   owa_util.http_header_close;
   -- download the BLOB
   wpg_docload.download_file(l_blob);

exception
   when others then
      htp.p(sqlerrm);
end;

答案 1 :(得分:-1)

Content-Disposition:内联;

这是关键