XDocReport 无法在生成的文档中显示两个图像
XDocReport can't display two image in generated document
我在模板中插入了两张图片:"logo" 和 "background"
但只有背景图片出现在模板中。
我创建 ImageProdiver
private IImageProvider createImageProvider(IXDocReport ixDocReport, String fieldName, Blob image) {
FieldsMetadata metadata = ixDocReport.createFieldsMetadata();
metadata.addFieldAsImage( fieldName);
ixDocReport.setFieldsMetadata(metadata);
InputStream inputStream = null;
try {
inputStream = image.getBinaryStream();
IImageProvider logo = new ByteArrayImageProvider(inputStream);
logo.setUseImageSize(true);
logo.setResize(true);
inputStream.close();
return logo;
} catch (SQLException | IOException e) {
throw new GeneralException("Error reading logo");
} finally {
if(inputStream != null) {
IOUtils.closeQuietly(inputStream);
}
}
}
创建两个Image provider
IImageProvider logo = createImageProdider(report, "logo", blobimage));
IImageProvider background = createImageProdider(report, "logo", blobimagebacground));
并插入构建器中的上下文
context = this.report.createContext();
context.put("logo", logo);
context.put("background", background);
生成文档后,只存在背景图片。
不明白为什么会出现这个问题,为什么只显示一张图片
如何解决这个问题?
这是因为您将 FieldsMetadata 设置为报告两次。
您需要创建一个 FieldsMetadata metadata = ixDocReport.createFieldsMetadata() 并向其中添加两个图像。
敌人示例:
FieldsMetadata metadata = new FieldsMetadata();
metadata.addFieldAsImage("chart1");
metadata.addFieldAsImage("chart2");
report.setFieldsMetadata(metadata);
IImageProvider logo = new FileImageProvider(new File("path/to/image1"), true);
context.put("chart1", logo);
IImageProvider logo2 = new FileImageProvider(new File("path/to/image2"), true);
context.put("chart2", logo2);
我在模板中插入了两张图片:"logo" 和 "background" 但只有背景图片出现在模板中。
我创建 ImageProdiver
private IImageProvider createImageProvider(IXDocReport ixDocReport, String fieldName, Blob image) {
FieldsMetadata metadata = ixDocReport.createFieldsMetadata();
metadata.addFieldAsImage( fieldName);
ixDocReport.setFieldsMetadata(metadata);
InputStream inputStream = null;
try {
inputStream = image.getBinaryStream();
IImageProvider logo = new ByteArrayImageProvider(inputStream);
logo.setUseImageSize(true);
logo.setResize(true);
inputStream.close();
return logo;
} catch (SQLException | IOException e) {
throw new GeneralException("Error reading logo");
} finally {
if(inputStream != null) {
IOUtils.closeQuietly(inputStream);
}
}
}
创建两个Image provider
IImageProvider logo = createImageProdider(report, "logo", blobimage));
IImageProvider background = createImageProdider(report, "logo", blobimagebacground));
并插入构建器中的上下文
context = this.report.createContext();
context.put("logo", logo);
context.put("background", background);
生成文档后,只存在背景图片。
不明白为什么会出现这个问题,为什么只显示一张图片
如何解决这个问题?
这是因为您将 FieldsMetadata 设置为报告两次。 您需要创建一个 FieldsMetadata metadata = ixDocReport.createFieldsMetadata() 并向其中添加两个图像。 敌人示例:
FieldsMetadata metadata = new FieldsMetadata();
metadata.addFieldAsImage("chart1");
metadata.addFieldAsImage("chart2");
report.setFieldsMetadata(metadata);
IImageProvider logo = new FileImageProvider(new File("path/to/image1"), true);
context.put("chart1", logo);
IImageProvider logo2 = new FileImageProvider(new File("path/to/image2"), true);
context.put("chart2", logo2);