Oracle Forms / Reports gerando arquivo (relatório) PDF
Fala pessoal!
Essa semana houve uma demanda para gerar um arquivo PDF de um relatório criado no Oracle Reports.
Montei um exemplo simples que através de um botão o Forms roda um relatório já existente e gera o arquivo PDF em um determinado diretório pré definido.
Isso irá possibilitar varias coisas, por exemplo é possível gerar o PDF e gravar em um diretório FTP para varias pessoas acessarem este arquivo (relatório) também é possível salvar em determinado diretório para posteriormente ser enviado por e-mail.
A intenção deste post é mostrar como gerar o arquivo PDF automaticamente é um exemplo básico que com certeza pode ser melhorado conforme a demanda de cada um.
Vamos la então!
Foi uma criada uma tela simples no Oracle Forms com apenas um botão.
Neste exemplo eu coloquei a chamada da procedure na trigger WHEN-BUTTON-PRESSED. Ou seja, ao clicar no botão ele irá executar a trigger que gera o PDF. (Veremos a trigger mais abaixo).
A chamada da procedure pode ser realizada em qualquer ação do Forms, neste caso utilizaremos o botão.

Procedure criada para gerar o PDF
PROCEDURE REPORT_GERA_PDF IS
PL_ID PARAMLIST;
BEGIN
PL_ID := GET_PARAMETER_LIST( ‘TMPDATA’);
IF NOT ID_NULL(PL_ID) THEN
DESTROY_PARAMETER_LIST(PL_ID);
END IF;
PL_ID := CREATE_PARAMETER_LIST( ‘TMPDATA’);
SYNCHRONIZE;
PL_ID := GET_PARAMETER_LIST( ‘TMPDATA’);
IF NOT ID_NULL(PL_ID) THEN
DESTROY_PARAMETER_LIST(PL_ID);
END IF;
PL_ID := CREATE_PARAMETER_LIST( ‘TMPDATA’);
–> Parametros para gerar o PDF
ADD_PARAMETER(PL_ID, ‘PARAMFORM’,TEXT_PARAMETER,‘No’ );
ADD_PARAMETER(PL_ID, ‘DESTYPE’,TEXT_PARAMETER,‘File’ );
ADD_PARAMETER(PL_ID, ‘DESFORMAT’,TEXT_PARAMETER,‘pdf’ );
–> Parametros utilizados no relatório
ADD_PARAMETER(pl_id, ‘EMPRESA’,TEXT_PARAMETER,1000 );
ADD_PARAMETER(pl_id, ‘ANO’,TEXT_PARAMETER, 2016 );
ADD_PARAMETER(pl_id, ‘DATA_ATUAL’, TEXT_PARAMETER, TO_DATE(’29/03/2016′, ‘dd/mm/rrrr’ ));
–> Diretório e nome do arquivo que será gerado.
ADD_PARAMETER(PL_ID, ‘DESNAME’,TEXT_PARAMETER,‘C:\GERAR_PDF\nome.pdf’ );
–> Chamando o relatório
RUN_PRODUCT(REPORTS, ‘C:\relatorios\relatorio.REP’,SYNCHRONOUS,BATCH , FILESYSTEM, pl_id,NULL );
END;
Essa procedure irá gerar o PDF e salvar no diretório definido no parâmetro ‘DESNAME’.
É isso pessoal o exemplo simples, mas a intenção é dar uma ideia inicial de como gerar relatório PDF no Forms/Reports.
Você conhece se tem alguma maneira de gerar este PDF diretamente no banco em uma tabela ao invés de gerar em uma pasta.
Olá Marcos!
Neste exemplo a necessidade era gerar o PDF no diretório para ser disponibilizado em um ambiente web.
Acredito que gerar diretamente no banco através do Forms não seja possível. Mas como contorno é possível gerar o PDF no diretório e após isso inserir na base de dados.
Abraços!
Alex Barbosa
Isso é o que eu imaginava mesmo, mais queria saber se existia algum método de como fazer isso direto em uma variável blob para inserir no banco de dados pois tenho uma situação onde geraria 32 mil arquivos em pdf ficaria inviável, vou fazer desta forma mesmo.
no IREPORTS eu consigo fazer isso, mas teria que desenvolver o relatório nele.
Abraços
Agradeço a ajuda Obrigado.
Valeu!
Boa sorte!
Olá Alex.
Precisava fazer essa conversão do relatório para PDF via PL/SQL, é possível?
Bom dia Rose!
Te respondi pelo Linkedin.
Obrigado.
Alex Felipe Barbosa
Olá Alex,
é possível fazer essa conversão do relatório para PDF via PL/SQL?
Bom dia Rose!
Te respondi pelo Linkedin.
Obrigado.
Alex Felipe Barbosa