如何使用DynamicJasper API在页脚中显示pdf报告图像?

我正在开发使用API DynamicJasper的一个 PDF 报告。如何使用DynamicJasper API在页脚中显示pdf报告图像?

按规定我显示在页脚在头部中的一个标识等。我可以通过使用DynamicReportBuilder.addImageBanner方法在标题上显示徽标。但我没有找到在页脚添加图片的方法。

我看到了关于这个问题的动态碧玉论坛的一些线程,一个工作围绕提到有创造JRXML模板与pageFooter带。

我试过了,但没有解决。我有以下异常:

org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed

以下是生成报告的代码。

  1. 创建dynamiceReport对象
  2. 创建jasperPrint对象
  3. 调用基于所述格式类型,其创建的报告的方法。在这里,我要通过jasperPrint对象,它具有JRXML表示,目标文件位置和报告格式类型。

// ... 

DynamicReport dynamicReport = buildDynamicReport(reportTemplate, grpFields);

// build jrxml <br/>

JasperPrint jasperPrint = buildJRXML(dynamicReport, dataSource, reportFormat);

// export the report into specific target format <br/>

exportReport(jasperPrint, targetReportFile, reportFormat);

// ...

private DynamicReport buildDynamicReport(Template reportTemplate,

Vector<String[]> groupFields) throws ServiceException {

/** code to generate DynamicReport object. */

dynamicReportBuilder.setTemplateFile("jrxml/report-footer.jrxml");

DynamicReport dynamicReport = dynamicReportBuilder.build();

return dynamicReport;

}

任何帮助将升值。

回答:

由于DynamicJasper的的ClassicLayoutManager类在默认情况下所有适用图像横幅只有头乐队,似乎没有成为实现这一目标的一个直接的方式。

一种解决方法是使用自定义布局管理器实现 - 延长ClassicLayoutManager并重写applyBanners()方法。

public class CustomLayoutManager extends ClassicLayoutManager { 

protected void applyBanners() {

super.applyBanners(); //let the ClassicLayoutManager apply header banners

// explicitly add banner to footer band..

JRDesignBand pageFooter = (JRDesignBand)getDesign().getPageFooter();

// if there is no footer band we create one

if(pageFooter == null) {

pageFooter = new JRDesignBand();

getDesign().setPageFooter(pageFooter);

}

Vector<ImageBanner> vImageBanner = new Vector<ImageBanner>();

vImageBanner.add(new ImageBanner("yourlogoimage.ext", 120, 50, ImageBanner.ALIGN_LEFT));

applyImageBannersToBand(pageFooter, vImageBanner, null);

}

}

,然后使用自定义类,同时生成报告..

JasperPrint jasperPrint = DynamicJasperHelper.generateJasperPrint(dynamicReport, new CustomLayoutManager(), parameters); 

以上是 如何使用DynamicJasper API在页脚中显示pdf报告图像? 的全部内容, 来源链接: utcz.com/qa/263965.html

回到顶部