Блок копия PDF документа - PullRequest
1 голос
/ 06 января 2011

Я хотел бы блочную копию (ctrl + c ctrl + v) PDF-документа с использованием Java. У меня есть код, который создает документ PDF с JasperReport ...

//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();

Кто может мне помочь с этим?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2014

Вы должны попробовать это, когда используете отчет о яшме 5.6.x

  SimplePdfExporterConfiguration configuration = new SimplePdfExporterConfiguration();
  configuration.setEncrypted(true);
  configuration.set128BitKey(true);
  configuration.setUserPassword("jasper");
  configuration.setOwnerPassword("reports");
  configuration.setPermissions(PdfWriter.ALLOW_PRINTING); //PdfWriter.ALLOW_COPY is no set
  exporter.setConfiguration(configuration);
  //extrac of http://jasperreports.sourceforge.net/sample.reference/pdfencrypt/index.html

В устаревшей версии вы можете использовать JRExporterParameter

  pdfExporter.setParameter(JRPdfExporterParameter.PERMISSIONS, PdfWriter.ALLOW_PRINTING);
  //when you want copy files use 
  //pdfExporter.setParameter(JRPdfExporterParameter.PERMISSIONS, PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_COPY);

  pdfExporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED, true);
        pdfExporter.setParameter(JRPdfExporterParameter.USER_PASSWORD, ".sigaAr4gos@");

Примечание: JRPdfExporterParameter является устаревшим

0 голосов
/ 06 января 2011

Возможно, я ошибаюсь, но я твердо верю, что это невозможно. Вы создаете PDF-документ и просматриваете его с помощью PDF Reader. Возможность копировать части документа - это функциональность читателя, поэтому вы не можете контролировать это на этапе создания документа. PDF - это не HTML, где вы можете обрабатывать события самостоятельно и, следовательно, блокировать некоторые из них.

Я буду рад узнать, что я не прав ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...