segunda-feira, 1 de junho de 2020

JasperReports Configurar PDF com Autor,Titulo, Assunto,Criador, Senha (Meta Data)

Seguindo com a serie de testes com jasperReports gerando o relatorios, notei que ao abrir o arquivo no navegador ele não tinha um título interessante, então fui procurar em como mudar o mesmo na pagina web, minha pesquisa me levou a descobrir uma série de configurações para a configuração do PDF alem de um simples titulo, assumindo que voce ja tem o arquivo jasperPrint disponivel temos o seguinte codigo.


JasperPrint jasperPrint = JasperFillManager.fillReport(jasperStream, parametros,dataSource);            
String nomeArquivo =  "FICHA "+condutor.getNome().toUpperCase();
JRPdfExporter exportadorDePDF = new JRPdfExporter();
SimplePdfExporterConfiguration  configuracaoSimplesDoExportadorDePDF = new SimplePdfExporterConfiguration();
configuracaoSimplesDoExportadorDePDF.setMetadataAuthor("Denis Benjamim");
configuracaoSimplesDoExportadorDePDF.setMetadataTitle(nomeArquivo);
configuracaoSimplesDoExportadorDePDF.setMetadataSubject("Ficha Cadastral Condutor "+condutor.getNome());
configuracaoSimplesDoExportadorDePDF.setMetadataCreator("Transparency Logistica e Transportes ltda");
configuracaoSimplesDoExportadorDePDF.setMetadataKeywords("Ficha,Ficha Cadastral,Condutor,RG,CPF,CNH,habilitacao");;
configuracaoSimplesDoExportadorDePDF.set128BitKey(true);
configuracaoSimplesDoExportadorDePDF.setEncrypted(true);
configuracaoSimplesDoExportadorDePDF.setUserPassword("password");

ByteArrayOutputStream baos = new ByteArrayOutputStream();
exportadorDePDF.setExporterInput(new SimpleExporterInput(jasperPrint));
exportadorDePDF.setExporterOutput(new SimpleOutputStreamExporterOutput(baos));
exportadorDePDF.setConfiguration(configuracaoSimplesDoExportadorDePDF);
exportadorDePDF.exportReport();         

return ResponseEntity.ok()                   
                .header(HttpHeaders.CONTENT_DISPOSITION,"inline; filename="+nomeArquivo+".pdf")
                .body(baos.toByteArray());

Resumindo estou configurando no pdf, o nome do autor, titulo, assunto, criador, palavras chaves, tipo de criptografía, informando que sera criptografado e terá senha, nada além dessas pequenas coisas.

setMetadataAuthor -> Pessoa que solicitou o pdf.
setMetadataTitle-> Titulo do pdf sera exibido na janela
setMetadataSubject ->Assunto do pdf.
setMetadataCreator-> Nome do software ou Empresa responsavel pela criação do PDF.
setMetadataKeywords-> Palavras chaves utilizadas para pesquisa do pdf.
set128BitKey-> Criptografía dos dados no pdf.
setEncrypted->Ativa criptografia.
setUserPassword-> Senha para acessar o pdf.

A classe responsável pela configuração é a SimplePdfExporterConfiguration, nela configuramos as informações conforme visto no codigo.

JRPdfExporter classe responsavel por exportar o pdf.
ByteArrayOutputStream sera usado para junto do JRPdfExporter para gerar o pdf.

setExporterInput -> Fluxo de entrada com jasperPrint.
setExporterOutput -> Fluxo de saida.
setConfiguration -> Arquivo de configuração que sera usado na geraçao do pdf.
exportReport - > Persiste a configuracao personalizada para ser enviada ao navegador.

No pdf temos a seguinte saida em suas propriedades.