как динамически добавлять изображения во вложенный цикл (в template.docx) с помощью xdocreport и скорости

пожалуйста, я хочу динамически добавлять изображения во вложенный цикл, я использую docx в качестве шаблона. я использую xdocreport 1.0.2 и скорость.

вот мой код:

List<Obect> structureList=new arrayList<Object>();



HashMap<String, Object> structureMap = new HashMap<String, Object>();

    for(Structure sutructure:structureList){

      List<Obect> orientationList=new arrayList<Object>();

      //orientation can be vertical or horizontal;

        for(Orientation orientation: OrientationList){

         HashMap<String, Object> orientationMap = new HashMap<String, Object>();

         List<Obect> projectionList=new arrayList<Object>();

               for(integer projection: projectionList){

             HashMap<String, Object> projectionMap = new HashMap<String, Object>();

                     projectionMap.put("projectionImage",  getImageproviderByOrientationAndProjection(orientation, projection);

                       projectionList.add(projectionMap);

              }

     orientationMap.put("projections", projectionList); 

     orientationList.add(orientationMap);

      }
    structureMap.put("orientation", orientationList);

     structureList.add(structureMap);

   }

контекст("структуры", список_структур)


//мои метаданные настроены так:

metadata.addFieldAsImage("projectionImage", "projection.projectionImage");


в моем шаблоне (.docx) я делаю это:

 "#"foreach($structure in $structures){

      "#"foreach($orientation in $structure.orientations){

           "#"for($projection in $orientation.projections){

         //print image by projection

           }
       }
   }

person pauljean    schedule 04.03.2014    source источник
comment
Я предлагаю вам создать задачу на странице code.google.com/p/xdocreport/issues/. list с вашим docx+images+simple main, который работает.   -  person Angelo    schedule 05.03.2014
comment
большое спасибо за ваше предложение, я сделаю это.   -  person pauljean    schedule 05.03.2014


Ответы (1)


Используйте POJO, как описано в примерах (DeveloperWithImage.java).

/* Load the photos as list in the metadata */
FieldsMetadata metadata = report.createFieldsMetadata();
metadata.load( "photos", Photo.class, true );
report.setFieldsMetadata(metadata);

List<Photo> photos = ...
context.put( "photos", photos );

Фото.java:

public class Photo {
private IImageProvider photo;

@FieldMetadata( images = { @ImageMetadata( name = "photo" ) }, description="Photo"  )
public IImageProvider getPhoto() {
    return photo;
}

public void setPhoto(IImageProvider photo) {
    this.photo = photo;
}}
person Maqbool Ahmed    schedule 25.07.2020