Personalizando o Cabeçalho de Relatórios Interativos no Oracle APEX com Logo e Texto

Marcelo BatalhaMarcelo Batalha
4 min read

Você já tentou personalizar o cabeçalho da exportação de um Relatório Interativo no Oracle APEX e se frustrou por não conseguir colocar um logo na versão PDF?

Pois é. Recentemente passei por essa situação e decidi compartilhar os detalhes aqui. A boa notícia é que sim, é possível incluir um logo e um texto no cabeçalho do relatório — mas há algumas pegadinhas no caminho. Vamos lá!


🚧 Limitações atuais

O Oracle APEX permite que você defina um cabeçalho (e um rodapé) para exportações de Relatórios Interativos através das propriedades Page Header Text e Page Footer Text. Essa configuração funciona bem quando o relatório é exportado em HTML. No entanto:

  • Ao exportar para PDF, somente o texto é exibido.

  • Imagens (como logos em base64) não aparecem no PDF.

Essa é uma limitação conhecida da funcionalidade atual. Inclusive, abri um tópico na “APEX IDEAS” solicitando que essa capacidade seja expandida. Vote nessa ideia clicando no link a seguir para que, quem sabe, esteja nos próximos releases: Votar para Imagens no PDF

⚠️ Mas atenção: embora a imagem não apareça no PDF, é possível contornar isso exportando primeiro em HTML e depois convertendo o arquivo manualmente para PDF. Claro, isso é um passo a mais que poderia ser evitado se o APEX suportasse nativamente imagens no cabeçalho do PDF.


📦 Estrutura usada

Para personalizar o cabeçalho com o logo e o nome da empresa, criei uma tabela simples chamada COMPANY com os seguintes campos:

create table company (
  id            number generated always as identity primary key,
  company_name  varchar2(255),
  logo          blob
);

Nessa tabela você pode armazenar o nome da sua empresa e o logo (como BLOB), que será convertido para base64 no momento da exportação.


🛠️ Passo a passo

Agora vamos aos passos para que o cabeçalho funcione corretamente:

1. Criar application items

Crie dois Application Items:

  • P0_COMPANY_NAME

  • P0_LOGO

Esses itens serão carregados apenas uma vez, quando a aplicação for iniciada.


2. Computation para o nome da empresa

Crie um computation do tipo SQL Query (return single value), com o seguinte código:

select company_name from company
  • Computation Item: P0_COMPANY_NAME

  • Computation Point: On New Instance

🔹 Não esqueça de selecionar o item de aplicação correto em “Computation Item”, senão o valor não será atribuído!


Crie outro computation com o seguinte código:

select 'data:image/png;base64,' || apex_web_service.blob2clobbase64(logo)
from company
  • Computation Item: P0_LOGO

  • Computation Point: On New Instance

🔹 Assim como no passo anterior, lembre-se de indicar o item de aplicação P0_LOGO no campo “Computation Item”.


4. Editar a propriedade do relatório interativo

Acesse a página do seu Relatório Interativo e vá até as propriedades da região. Em:

  • Printing > Page Header Text, adicione o seguinte código HTML:
<img src="&P0_LOGO." style="height: 20px;">
<span style="font-weight:bold; font-size:14px;"><center>&P0_COMPANY_NAME.</center></span>

Esse será o cabeçalho exibido quando o relatório for exportado em HTML.


⚠️ Importante sobre o tamanho do cabeçalho

Há uma limitação importante aqui: o campo p_page_header da API APEX_DATA_EXPORT.EXPORT é do tipo VARCHAR2, limitado a 4000 caracteres.

Ou seja, a soma do HTML + a imagem em base64 + o nome da empresa não pode ultrapassar esse limite. Caso contrário, você receberá um erro de exportação.

Também abri uma sugestão no “APEX IDEAS” pedindo que esse parâmetro seja alterado para CLOB, o que resolveria essa limitação para quem quer uma personalização mais completa. Vote nessa ideia clicando no link a seguir para que, quem sabe, esteja nos próximos releases: Votar para parâmetro CLOB


✨ Resultado

Veja como fica a exportação em HTML com logo e nome da empresa no cabeçalho:

E aqui a exportação em PDF, onde somente o texto aparece:


🔚 Conclusão

Embora o APEX ainda tenha limitações na exportação de Relatórios Interativos, principalmente no suporte a imagens em PDF, é possível fazer bastante coisa com HTML. Esse tipo de personalização pode agregar muito valor à sua aplicação — especialmente em sistemas corporativos.

Se você também acha que o Oracle APEX poderia oferecer suporte completo a imagens no cabeçalho de exportações PDF e aumentar o limite do campo p_page_header, acesse os tópicos no site de ideias e vote 👍

0
Subscribe to my newsletter

Read articles from Marcelo Batalha directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Marcelo Batalha
Marcelo Batalha

Oracle ACE and Oracle APEX Cloud Developer Certified Professional with over 20 years of experience in Oracle tools and IT governance. Holds a Master's degree in Computer Engineering and has received additional training from the University of California, Irvine, establishing a strong foundation in both theoretical knowledge and practical applications. Also serves as a Postgraduate Professor specialized in Full-Stack Development at University Senac in Brazil. Currently responsible for IT Governance at Brazilian software company Grupo Giap. Active contributor to the Oracle community, and speaker at international conferences such as Kscope24, KScope25, Oracle APEX Tour Latinoamérica and Latin America Oracle Users Groups (LAOUC) Community Tour.