2017-02-16 50 views
0

我向模板插入兩個圖像:「徽標」和「背景」 但模板中只顯示背景圖像。XDocReport無法在生成的文檔中顯示兩個圖像

創建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); 
     } 
    } 
} 

創建兩個圖像提供商

IImageProvider logo = createImageProdider(report, "logo", blobimage)); 
IImageProvider background = createImageProdider(report, "logo", blobimagebacground)); 

,並插入到context中,建設者

context = this.report.createContext(); 
context.put("logo", logo); 
context.put("background", background); 

生成文件後,只存在背景圖像。

我不明白爲什麼會出現這個問題,爲什麼只顯示一張圖片。

如何解決這個問題?

回答

2

這是因爲您將FieldsMetadata設置爲報告兩次。 您需要創建一個FieldsMetadata元數據= 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); 
+0

感謝您的回答! – martinixs