你好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的链接。
答案 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:内联;
这是关键