Java 如何使用DynamicAsperAPI在pdf报告的页脚中显示图像?
我正在使用DynamicAsperAPI开发pdf报告 根据要求,我必须在页眉和页脚显示一个标志。我可以使用DynamicReportBuilder.addImageBanner方法在标题处显示徽标。但我没有找到在页脚添加图像的方法 我在动态jasper论坛中看到了一些关于这个问题的帖子,其中提到的一项工作是使用pageFooter band创建一个jrxml模板 我试过了,但没有成功。我得到了以下例外:Java 如何使用DynamicAsperAPI在pdf报告的页脚中显示图像?,java,jasper-reports,dynamic-jasper,Java,Jasper Reports,Dynamic Jasper,我正在使用DynamicAsperAPI开发pdf报告 根据要求,我必须在页眉和页脚显示一个标志。我可以使用DynamicReportBuilder.addImageBanner方法在标题处显示徽标。但我没有找到在页脚添加图像的方法 我在动态jasper论坛中看到了一些关于这个问题的帖子,其中提到的一项工作是使用pageFooter band创建一个jrxml模板 我试过了,但没有成功。我得到了以下例外: org.xml.sax.SAXParseException:不允许处理指令目标匹配“[xX
org.xml.sax.SAXParseException:不允许处理指令目标匹配“[xX][mM][lL]”
下面是生成报告的代码
/。。。
DynamicReport DynamicReport=buildDynamicReport(reportTemplate,grpFields);
//构建jrxml
JasperPrint-JasperPrint=buildJRXML(dynamicReport,dataSource,reportFormat);
//将报告导出为特定的目标格式
exportReport(jasperPrint、targetReportFile、reportFormat);
// ...
专用DynamicReport buildDynamicReport(模板报告模板,
向量groupFields)引发ServiceException{
/**生成DynamicReport对象的代码*/
dynamicReportBuilder.setTemplateFile(“jrxml/report footer.jrxml”);
DynamicReport DynamicReport=dynamicReportBuilder.build();
返回动态报告;
}
任何帮助都将不胜感激。由于dynamicjasper的ClassClayOutManager类默认情况下仅将所有图像横幅应用于标题栏,因此似乎没有一种直接的方法来实现这一点 一种解决方法是使用自定义布局管理器实现—扩展ClassClayOutManager并重写applyBanners()方法
由于DynamicAsper的ClassClayOutManager类默认情况下仅将所有图像横幅应用于标题栏,因此似乎没有一种直接的方法来实现这一点 一种解决方法是使用自定义布局管理器实现—扩展ClassClayOutManager并重写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);