Java 使用JasperReports库和MongoDB生成EPDF
这是我的GeneratePdf.java 导入Java 使用JasperReports库和MongoDB生成EPDF,java,mongodb,jasper-reports,mongo-java,Java,Mongodb,Jasper Reports,Mongo Java,这是我的GeneratePdf.java 导入 public class GeneratePdf { public static void main(String[] args) { try { JRDataSource ds = getDatasource(); // - Chargement et compilation du rapport line32 JasperDesign jasperDe
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) {
}
}
Mongo连接并获取数据():
使用JRBeanCollectionDataSource不是使用MongoDB连接器的正确方法。看看Jaspersoft MongoDB连接器附带的测试源: MongoDbDatasource/src/test/java/com/jaspersoft/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();
}
}
String mongoURI=”mongodb://bdsandbox6:27017/test";
MongoDbConnection连接=null;
映射参数=新的HashMap();
试一试{
连接=新的MongoDbConnection(mongoURI,null,null);
parameters.put(MongoDbDataSource.CONNECTION,CONNECTION);
档案档案;
jasperFile=新文件(“MongoDbReport.jasper”);
jaspecompilemanager.compileReportToFile(“MongoDbReport.jrxml”、“MongoDbReport.jasper”);
JasperFillManager.fillReportToFile(“MongoDbReport.jasper”,参数);
JasperExportManager.exportReportToPdfFile(“MongoDbReport.jrprint”);
}
}捕获(例外e){
e、 printStackTrace();
}最后{
if(连接!=null){
connection.close();
}
}
您需要添加以下行:
JRProperties.setProperty("net.sf.jasperreports.query.executer.factory.MongoDbQuery", "com.jaspersoft.mongodb.query.MongoDbQueryExecuterFactory");
验证datasource jar文件中的路径,例如js-mongodb-datasource-0.5.0我读了你的博客,它非常有趣。如果你能帮助我,我有一个新问题。谢谢新的错误!我添加了log4j.xml(log4j.properties),再次出现了相同的错误:
2012年2月24日14:20:53错误[org.apache.commons.digester.digester]结束事件在net.sf.jasperreports.engine.xml.JRXmlLoader.load的sun.reflect.NativeMethodAccessorImpl.invoke0处抛出异常java.lang.reflect.InvocationTargetException(JRXmlLoader.java:156)…在Generate.main(Generate.java:29)处原因:net.sf.jasperreports.engine.JRRuntimeException:没有为“MongoDbQuery”语言注册的查询执行器工厂……
Hi-mdahlman,您的上述站点似乎无法正常工作。您能查找一下吗?请尝试提供示例代码/Project@mdahlman-你能给我引路吗?
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();
}
}
JRProperties.setProperty("net.sf.jasperreports.query.executer.factory.MongoDbQuery", "com.jaspersoft.mongodb.query.MongoDbQueryExecuterFactory");