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

Displaying BLOB Images in PDF Reports - Oracle APEX

我一直在尝试使用 Oracle BI Publisher 作为我的打印服务器在我的 PDF 报告中输出 BLOB。我有 非常小的图像没有问题,但是当图像尺寸增加时,我没有输出。我正在使用该方法 在本博客 post 中提出: https://blogs.oracle.com/xmlpublisher/entry/inserting_blobs_into_your_repo

我注意到 Scott Wesley 也遇到了同样的问题。 这是我用来保存图像的 table :

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

我正在使用 Tim Hall 的函数将 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>

我在 table 中插入了一个 5KB 的图像并且它工作正常,但是当我尝试使用 500Kb 的图像时,有 没有结果。 我想知道是否有人提出了解决方案,或者这个问题是否得到解决。我在 APEX 5.1 上 一个 11g 数据库并使用 BI Publisher 11g。 感谢提前提供的任何帮助。

关于在 PDF 报告中显示 BLOB 图片,限制为 32KB

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

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