Я пытаюсь передать изображение в ireports в качестве логотипа параметра, но когда появляется отчет, он отображает строковое определение изображения вместо логотипа.Передача изображения как параметра jasperreports
В Iireports я создал логотип параметра и сделал его выражение как объект и перетащил изображение на него из палитры. Изображение i сделало свое выражение на изображении
private void generateRptForm(String sql, String reportloader) {
PreparedStatement pstmt = null;
ResultSet rs = null;
ByteArrayOutputStream baos = null;
Connection connect = null;
try {
baos = new ByteArrayOutputStream();
Class.forName("com.mysql.jdbc.Driver").newInstance();
connect = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + "school", user, password);
pstmt = connect.prepareStatement("SELECT image FROM picture WHERE id = 1");
rs = pstmt.executeQuery();
InputStream imageStream = null;
BufferedImage image = null;
while (rs.next()) {
imageStream = rs.getBinaryStream(1);
image = ImageIO.read(imageStream);
}
System.out.println("image..." + image);
connect.close();
connect.close();
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/" + "school", user, password);
stmt = conn.createStatement();
JasperDesign jd = JRXmlLoader.load(reportloader);
String sqltrans = sql;
JRDesignQuery newQuery = new JRDesignQuery();
newQuery.setText(sqltrans);
jd.setQuery(newQuery);
// Get data from registration table
String[] split = null;
String schname = this.getTitle();
split = schname.split("\\[");
schname = split[1];
split = schname.split("\\]");
String[] regdetails = dbutils.checker.regdetails(split[0]);
Map<String, Object> param = new HashMap<String, Object>();
param.put("schoolname", regdetails[0]);
param.put("address", regdetails[3]);
param.put("zipcode", regdetails[4]);
param.put("telephone", regdetails[5]);
param.put("location", regdetails[1]);
param.put("country", regdetails[2]);
param.put("email", regdetails[6]);
param.put("logo", image);
JasperReport jr = JasperCompileManager.compileReport(jd);
JasperPrint jp = JasperFillManager.fillReport(jr, param, conn);
JasperViewer.viewReport(jp, false);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
System.out.println(e);
}
}
несоответствующего Примечание: Вам не нужно открывать два соединения к БД, использование первого для второго запроса также отлично и лучше. –
И соответствующий вопрос: как вы используете изображение в файле 'jrxml'? Можете ли вы разместить соответствующую часть? –
Спасибо за руководство. – user3114376