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.
gera_pdf
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.

8 thoughts on “Oracle Forms / Reports gerando arquivo (relatório) PDF

  1. marcos

    Você conhece se tem alguma maneira de gerar este PDF diretamente no banco em uma tabela ao invés de gerar em uma pasta.

    Reply
    1. alexbarbosa Post author

      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

      Reply
      1. Marcos Meneguetti

        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.

        Reply

Deixe uma resposta

O seu endereço de e-mail não será publicado.