Restringir copia de .pdf

2 respostas
Wiliam_Witter

Bom dia, eu estou com um problema tenho que restringir um arquivo .pdf para não deichar o usuario copiar apenas visualizar, estou gerando meu relatório com jasperReport

public void printPdfUISub(HttpServletResponse httpResponse, String pathRelatorio, Map<String,Object> param, Map<String,Object> paramSub) throws Exception {

        Connection conn = getJDBCConnection();
        try {

            for(String element : paramSub.keySet()){
                param.put(element, (JasperReport) JRLoader.loadObject((String) (paramSub.get(element))));
            }

            JasperReport report = (JasperReport) JRLoader.loadObject( pathRelatorio );
            JasperPrint printRel = JasperFillManager.fillReport( report, param, conn );
            byte[] bytes = JasperExportManager.exportReportToPdf(printRel);

            httpResponse.setHeader("Content-Disposition","attachment; filename=\""+ report.getName() + ".pdf" +"\";");
            httpResponse.setContentLength(bytes.length);
            httpResponse.setContentType("application/pdf");

            ServletOutputStream ouputStream = httpResponse.getOutputStream();
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
            
            
           
        } catch (Exception e) {
            throw new RuntimeException("Erro ao gerar relatório.",e);
        }
        finally{
            conn.close();
        }
    }
pesquisei o uso desta funcionalidade mas não sei como poderia incluir no meu cod. se alguém tiver a disponibilidade de me ajudar eu agradeço.
PdfEncryptor.encrypt(pdfReader, ouputStream, PdfWriter.STRENGTH128BITS, null, null, PdfWriter.AllowPrinting);

2 Respostas

Wiliam_Witter

mais alguém pode me ajudar

Wiliam_Witter
//seta o caminho dos arquivos jasper
            String pathLote = ScopeSupport.getServletContext().getRealPath("priv/sgc/relatorios/AtaPregaoLotePageReport.jasper");
            String pathCabecalho = ScopeSupport.getServletContext().getRealPath("priv/sgc/relatorios/CabecalhoPageReport.jasper");
            String pathRodape = ScopeSupport.getServletContext().getRealPath("priv/sgc/relatorios/rodapePageReport.jasper");
            String imagemDir = ScopeSupport.getServletContext().getRealPath("/priv/comum/img");

            //HashMap parametros passa o parametro usado na query e o caminho da imagem
            HashMap<String,Object> parametros = new HashMap<String,Object>();
            parametros.put("idPregao", idPregao);
            parametros.put("idLote", idLote);
            parametros.put("IMAGEM_DIR", imagemDir + "/");
            parametros.put("USUARIO", "NomeUsuario" );
            parametros.put("texto", texto);
            parametros.put("numeroAta", numAta);
            
            if(numAta != null && numAta > 0)
                parametros.put("relatorio", "Ata "+numAta);

            HashMap<String,Object> parametrosSub = new HashMap<String,Object>();
            parametrosSub.put("CabecalhoPageReport", pathCabecalho);
            parametrosSub.put("rodapePageReport", pathRodape);
            parametrosSub.put("AtaPregaoPorLotePageReport", pathLote);

            for(String element : parametrosSub.keySet()){
                parametros.put(element, (JasperReport) JRLoader.loadObject((String) (parametrosSub.get(element))));
            }

            JasperReport report = (JasperReport) JRLoader.loadObject( pathLote );
            JasperPrint printRel = JasperFillManager.fillReport( report, parametros, getJDBCConnection() );
            byte[] bytes = JasperExportManager.exportReportToPdf(printRel);

            httpResponse.setHeader("Content-Disposition","attachment; filename=\""+ report.getName() + ".pdf" +"\";");
            httpResponse.setContentLength(bytes.length);
            httpResponse.setContentType("application/pdf");

            ServletOutputStream ouputStream = httpResponse.getOutputStream();
            ouputStream.write(bytes, 0, bytes.length);
            ouputStream.flush();
            ouputStream.close();
Criado 4 de janeiro de 2011
Ultima resposta 5 de jan. de 2011
Respostas 2
Participantes 1