在PDF报告中显示BLOB图像 - Oracle APEX

问题描述:

我一直试图在使用Oracle BI Publisher作为我的打印服务器的PDF报告中输出BLOB。我有 真的很小的图像没有问题,但是当图像尺寸增加时,我没有输出。我用这个博客帖子 提出的方法: https://blogs.oracle.com/xmlpublisher/entry/inserting_blobs_into_your_repo在PDF报告中显示BLOB图像 - Oracle APEX

我注意到斯科特韦斯利也面临着同样的问题。 这是我使用,以保持我的图片存储在表:

CREATE TABLE MY_IMAGES (
    ID NUMBER NOT NULL, 
    IMAGE BLOB, 
    FILE_NAME VARCHAR2(50), 
    MIME_TYPE VARCHAR2(30) 
); 
/

我用添霍尔的功能编码BLOB列为Base64:

CREATE OR REPLACE FUNCTION base64encode(p_blob IN BLOB) 
RETURN CLOB 
----------------------------------------------------------------------------------- 
- File Name : http://oracle-base.com/dba/miscellaneous/base64encode.sql 
- Author : Tim Hall 
- Description : Encodes a BLOB into a Base64 CLOB. 
- Last Modified: 09/11/2011 
----------------------------------------------------------------------------------- 
IS 
l_clob CLOB; 
l_step PLS_INTEGER := 12000; - make sure you set a multiple of 3 not higher than 24573 
BEGIN 
FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(p_blob) - 1)/l_step) LOOP 
l_clob := l_clob || UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode 
(DBMS_LOB.substr(p_blob, 
l_step, i * l_step + 1))); 
END LOOP; 
RETURN l_clob; 
END; 

这是我的SELECT语句作为我的报表查询:

SELECT FILE_NAME, BASE64ENCODE(IMAGE) 
FROM MY_IMAGES 

在我的RTF报表布局我使用此代码来呈现编码的BLOB:

<fo:instream-foreign-object content-type="image/jpg"> 
<xsl:value-of select="IMAGE"/> 
</fo:instream-foreign-object> 

我在表中插入一个5KB形象和它的工作完美,但是当我用一个500KB的图像试过,有 没有结果。 我想知道是否有人提出了解决方案,或者如果这个问题解决了。我在APEX 5.1上,在 的11g数据库上使用BI Publisher 11g。 我很欣赏任何帮助提前。

+0

有你OAC创建演示如果是的,我会考虑它。 –

+0

如果我没有弄错OAC在其实例设置中没有打印服务器设置。几天前我在OAC上进行了测试,很多基本功能无法正常工作。无论如何,我找到了我将在下面发布的解决方案。 –

关于PDF报告显示BLOB的图像,限制为32KB

这里是一个很好的解决方法:

Marc Sewtz: Dynamic Images in PDF - What 32k Limit?