복붙노트

[MONGODB] JasperReports에 도서관과 MongoDB를 가진 GeneratePDF

MONGODB

JasperReports에 도서관과 MongoDB를 가진 GeneratePDF

여기 내 GeneratePdf.java입니다     가져 오기 ...

  public class GeneratePdf {
        public static void main(String[] args) {
        try {
            JRDataSource ds = getDatasource();
            // - Chargement et compilation du rapport
line32      JasperDesign jasperDesign = JRXmlLoader.load("/home/gocoffee.jrxml");
            JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

            // - Paramètres à envoyer au rapport
            Map parameters = new HashMap();
            parameters.put("Titre", "Titre");

            // - Execution du rapport
            JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
parameters, ds);

            // - Création du rapport au format PDF
            JasperExportManager.exportReportToPdfFile(jasperPrint, "home/test2.pdf");
        } catch (JRException e) {
        }
    }

몽고 연결 및 데이터 가져 오기 () :

private static JRDataSource getDatasource() {
        // Retrieve session
        try{
            Mongo m = new Mongo("localhost", 27017);
            DB db = m.getDB("test");
            DBCollection t = db.getCollection("test");
            List<DBObject> list = t.getIndexInfo();
            JRDataSource ds = new JRBeanCollectionDataSource(list);
            return ds;
        } catch (UnknownHostException e) {
            System.out.println("Error mongo connection");
        } catch (Exception e) {
            System.out.println("Other Exception");
        }
        return null;
    }
}

나는이 오류가 발생하지만 난 그것을 이해 해달라고 :

run:
17-Feb-2012 17:07:26 org.apache.commons.digester.Digester endElement
SEVERE: End event threw exception
java.lang.reflect.InvocationTargetException
....
....
    at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)
    at GeneratePdf.main(GeneratePdf.java:32)

Caused by: net.sf.jasperreports.engine.JRRuntimeException: No query executer factory registered for the 'MongoDbQuery' language.
    at net.sf.jasperreports.engine.util.JRQueryExecuterUtils.getQueryExecuterFactory(JRQueryExecuterUtils.java:64)
    at net.sf.jasperreports.engine.design.JRDesignDataset.queryLanguageChanged(JRDesignDataset.java:1122)
    at net.sf.jasperreports.engine.design.JRDesignDataset.setQuery(JRDesignDataset.java:600)
    at net.sf.jasperreports.engine.design.JasperDesign.setQuery(JasperDesign.java:789)
    ... 28 more

해결법

  1. ==============================

    1.은 JRBeanCollectionDataSource를 사용하면 MongoDB의 커넥터를 사용하는 방법에 대한 갈 올바른 방법이 아니다. 재스퍼 MongoDB를 커넥터 소스와 함께 제공이 테스트를 살펴 보자 :

    은 JRBeanCollectionDataSource를 사용하면 MongoDB의 커넥터를 사용하는 방법에 대한 갈 올바른 방법이 아니다. 재스퍼 MongoDB를 커넥터 소스와 함께 제공이 테스트를 살펴 보자 :

    MongoDbDatasource / SRC / 테스트 / 자바 / COM / 재스퍼 / MongoDB를 / ReportTest.java

    바이너리 커넥터와 소스 모두 프로젝트 페이지에 있습니다.

    독립적 인이 대답을 유지하려면, 여기 MongoDB의 보고서를 채우는 방법을 보여주는 코드입니다. 내가 위에서 언급 파일에서 수정 된 추출물이다.

    String mongoURI = "mongodb://bdsandbox6:27017/test";
    MongoDbConnection connection = null;
    Map<String, Object> parameters = new HashMap<String, Object>();
    try {
      connection = new MongoDbConnection(mongoURI, null, null);
      parameters.put(MongoDbDataSource.CONNECTION, connection);
      File jasperFile;
      jasperFile = new File("MongoDbReport.jasper");
      JasperCompileManager.compileReportToFile("MongoDbReport.jrxml", "MongoDbReport.jasper");
      JasperFillManager.fillReportToFile("MongoDbReport.jasper", parameters);
      JasperExportManager.exportReportToPdfFile("MongoDbReport.jrprint");
    }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (connection != null) {
        connection.close();
      }
    }
    
  2. ==============================

    2.당신은 행 다음에 추가해야합니다 :

    당신은 행 다음에 추가해야합니다 :

    JRProperties.setProperty("net.sf.jasperreports.query.executer.factory.MongoDbQuery", "com.jaspersoft.mongodb.query.MongoDbQueryExecuterFactory");
    

    예를 들어, 데이터 소스 jar 파일의 경로를 확인 JS-MongoDB를 - 소스 - 0.5.0

  3. from https://stackoverflow.com/questions/9332373/generatepdf-with-jasperreports-library-and-mongodb by cc-by-sa and MIT license