我正在使用带有 Velocity 的 XDocReport 来生成 DOCX 文件。我目前正在处理图像,暂时,我已经能够应付它们。
但现在,我试图弄清楚如何实现以下内容:
我有一组端口。每个端口可能有 1 到 N 个目录。每个目录都有一个IImageProvider的HashMap(可以改成List)。
不知道能不能实现。这是示例类:
//The list of ports seems like:
List<Port> ports = ....
public class Port{
private String descriptionPort;
private String title;
private String detail;
private IImageProvider image1;
private IImageProvider image2;
private ArrayList<Catalogue> listCatalogue;
.......
}
public class Catalogue{
private String description;
private String detail;
private String duration;
/* Formerly I had this one (it worked) instead of logos:
* private IImageProvider logo;
*/
//new: multiple images per catalogue
private HashMap<String, IImageProvider> logos;
private Number logosCount;
..........
}
因此,在创建 DOCX 报告时:
InputStream in = fileTemp.getBinaryStream();
IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, TemplateEngineKind.Velocity);
FieldsMetadata fieldsMetadata = report.createFieldsMetadata();
fieldsMetadata.load("ports", Port.class);
fieldsMetadata.addFieldAsImage("photoPort1", "p.Image1");
fieldsMetadata.addFieldAsImage("photoPort2", "p.Image2");
/*Formerly it worked this one when having a unique Image per Catalogue:
*fieldsMetadata.addFieldAsImage("photoCat", "cat.Logo.");
*/
report.setFieldsMetadata(fieldsMetadata);
IContext context = report.createContext();
context.put("ports", ports);
report.process(context, outputStream); //ignore outputStream
因此,我想知道如何从一组目录的哈希中添加图像。XDocReport 支持我的提议吗?
提前致谢。每一次帮助对我来说都意义重大,我将不胜感激:)。