2016-12-19 14 views
-1

JasperReportsで生成されたpdfファイルをダウンロードすると、その名前はdocument.pdfになります。 JasperPrint.setName();で名前を設定しようとしましたが、動作しません。JasperReports pdfファイルで生成される名前を変更する方法はありますか?

タスクを解決するにはどうすればよいですか?

public class JaspereQueCaMarche { 
    public static enum Export { 
     PDF, HTML 
    }; 

    private String cheminSource; 
    private JasperReport jasperReport; 
    private String nomRapport; 

    private List<ParametreJasper> parametres = new ArrayList<ParametreJasper>(); 

    private static List<JaspereQueCaMarche> rapports = new ArrayList<JaspereQueCaMarche>(); 

    protected JaspereQueCaMarche() { 
    } 

    public String getCheminSource() { 
     return cheminSource; 
    } 

    public String getNomRapport() { 
     return nomRapport; 
    } 

    public List<ParametreJasper> getParametres() { 
     return parametres; 
    } 

    public ParametreJasper getParametre(String nom) { 
     for (ParametreJasper pa : this.parametres) { 
      if (pa.getNom().equals(nom)) { 
       return pa; 
      } 
     } 
     return null; 
    } 

    public static List<JaspereQueCaMarche> getRapports() { 
     return rapports; 
    } 

    public static void setRapports(List<JaspereQueCaMarche> rapports) { 
     JaspereQueCaMarche.rapports = rapports; 
    } 

    public static JaspereQueCaMarche getFromHashCode(int hash) { 
     for (JaspereQueCaMarche jp : JaspereQueCaMarche.getRapports()) { 
      if (jp.hashCode() == hash) { 
       return jp; 
      } 
     } 
     return null; 
    } 

    public static void chargerListe(String repertoire) { 
     for (final File fic : new File(repertoire).listFiles()) { 
      if (!fic.isDirectory() && fic.getName().endsWith(".jrxml")) { 
       long dateModifSource = fic.lastModified(); 

       String nomJasper = fic.getAbsolutePath(); 
       nomJasper = nomJasper.substring(0, nomJasper.length() - 5) + "jasper"; 

       File jasper = new File(nomJasper); 
       long dateModifObjet = jasper.exists() ? jasper.lastModified() : 0; 

       JaspereQueCaMarche jp = new JaspereQueCaMarche(); 
       jp.cheminSource = fic.getAbsolutePath(); 
       jp.nomRapport = fic.getName(); 

       JasperReport jr = (dateModifObjet < dateModifSource) ? jp.compilerRapport() : jp.chargerRapport(jasper); 

       if (jr != null) { 
        jp.jasperReport = jr; 

        jp.extraireParametres(); 
        JaspereQueCaMarche.rapports.add(jp); 
       } 
      } 
     } 
    } 

    public static JaspereQueCaMarche getEtat(String nom) { 
     String jrxml = nom + ".jrxml"; 

     for (JaspereQueCaMarche jqcm : JaspereQueCaMarche.rapports) { 
      if (jqcm.nomRapport.equals(jrxml)) { 
       return jqcm; 
      } 
     } 
     return null; 
    } 

    private void extraireParametres() { 
     org.jdom2.Document document = null; 
     Element racine; 

     SAXBuilder sxb = new SAXBuilder(); 
     try { 
      document = sxb.build(new File(this.getCheminSource())); 
     } catch (Exception e) { 
      Log.getLogGeneral().msgtest("erreur xml", e); 
     } 

     racine = document.getRootElement(); 

     @SuppressWarnings("rawtypes") 
     List listeParametres = racine.getChildren(); 
     @SuppressWarnings("rawtypes") 
     Iterator it = listeParametres.iterator(); 

     while (it.hasNext()) { 
      Element courant = (Element) it.next(); 
      if (courant.getName().equals("parameter")) { 
       String nom = courant.getAttributeValue("name"); 
       String classe = courant.getAttributeValue("class"); 
       String valeurParDefaut = ""; 
       String description = ""; 

       List<?> details = courant.getChildren(); 
       Iterator<?> itDetails = details.iterator(); 
       while (itDetails.hasNext()) { 
        Element detail = (Element) itDetails.next(); 
        if (detail.getName().equals("defaultValueExpression")) { 
         valeurParDefaut = detail.getText(); 
        } else if detail.getName().equals("parameterDescription")) { 
         description = detail.getText(); 
        } 
       } 
       ParametreJasper pj = new ParametreJasper(nom, description, classe, valeurParDefaut); 
       this.parametres.add(pj); 
      } 
     } 
    } 

    public JasperPrint genererRapport(String transporteurConnecte) { 
     return genererRapport(transporteurConnecte, new HashMap<String, Object>()); 
    } 

    public JasperPrint genererRapport(String transporteurConnecte, HashMap<String, Object> parametres) { 
     Connection conn = null; 
     JasperPrint jasperPrint = null; 

     try { 
      conn = new ConnexionJDBC(transporteurConnecte).getInstance(); 
     } catch (SQLException | ClassNotFoundException e) { 
      Log.getMapLog().get(transporteurConnecte).msgtest("impossible d'obtenir une connexion", e); 
     } 

     try { 
      if (this.jasperReport != null) { 
       jasperPrint = JasperFillManager.fillReport(jasperReport, parametres, conn); 
      } 
     } catch (JRException e) { 
      Log.getMapLog().get(transporteurConnecte).msgtest("erreur fillReport", e); 
     } 

     return jasperPrint; 
    } 

    public void exporterRapport(JasperPrint jasperPrint, OutputStream outputStream, String transporteurConnecte) { 
     exporterRapport(jasperPrint, Export.PDF, outputStream, transporteurConnecte); 
    } 

    public void exporterRapport(JasperPrint jasperPrint, Export format, OutputStream outputStream, String transporteurConnecte) { 
     try { 
      if (format == Export.PDF) { 
       JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); 
      } 
     } catch (JRException e) { 
      Log.getMapLog().get(transporteurConnecte).msgtest(" erreur exportReportToPdfStream", e); 
     } 
    } 

    public void sauvegarderRapport(JasperPrint jasperPrint, Export format, String emplacement, String transporteurConnecte) { 
     try { 
      if (format == Export.PDF) { 
       JasperExportManager.exportReportToPdfFile(jasperPrint, "test.pdf"); 
      } else if (format == Export.HTML) { 
       JasperExportManager.exportReportToHtmlFile(jasperPrint, emplacement); 
      } 
     } catch (JRException e) { 
      Log.getMapLog().get(transporteurConnecte).msgtest("erreur exportReport", e); 
     } 
    } 

    protected JasperReport compilerRapport() { 
     JasperReport jr = null; 
     try { 
      String cheminRapportCompile = JasperCompileManager.compileReportToFile(this.cheminSource); 
      jr = chargerRapport(new File(cheminRapportCompile)); 
     } catch (JRException e) { 
      Log.getLogGeneral().msgprod("Impossible de compiler le rapport " + this.cheminSource, e); 
     } 
     return jr; 
    } 

    protected JasperReport chargerRapport(File fJasper) { 
     JasperReport jr = null; 
     try { 
      jr = (JasperReport) JRLoader.loadObject(fJasper); 
     } catch (JRException e) { 
      Log.getLogGeneral().msgprod("Impossible de charger le rapport " + fJasper.getAbsolutePath(), e); 
     } 
     return jr; 
    } 
} 
+0

[PDF輸出国のため設定された出力ファイル名]の可能な重複(http://stackoverflow.com/questions/25280377/set-output-file-name-for-pdf-exporter)&[JasperReportsのPdfServletへレポートをPDFで保存する - ブラウザにファイル名を設定してユーザーに確認するにはどうすればよいですか?](http://stackoverflow.com/q/12095833/876298)&[JasperReportの実際の名前を変更するにはどうすればいいですか? //stackoverflow.com/q/6738253/876298) –

+0

'JasperPrint.setName(); does not work' - コードを投稿するべきです。 –

+0

こんにちは。ありがとう – Grichka

答えて

1

JasperExportManagerからexportReportToPdfFileを使用することができる質問はあなたがサーブレット/ JSFを使用している場合はこのようにそれを行うことができ、十分に明確ではありません。

 HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); 
    httpServletResponse.addHeader("Content-disposition", "attachment; filename=report"+dateR+"_"+dateR1+".pdf"); 
    ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream(); 
    JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream); 
+0

はい、作品です!ありがとうございました !!! – Grichka

2

あなたは(あなたのJasperPrint対象となるreport

JasperExportManager.exportReportToPdfFile(report, fileName); 
+1

動作しません。私は最初のメッセージに自分のコードを掲載しました。 – Grichka

関連する問題