例如:数据库图片字段PICTURE_ATTACH类型为blob,在邦定字段时,
设置ireport中字段(Fields)PICTURE_ATTACH属性:
该字段类型 Field Class设置为 java.io.InputStream
然后添加一个图片来显示该图片字段,选择图片,设置属性:
属性image expression设置为 $F{PICTURE_ATTACH}
属性Expression class 设置为java.io.InputStream
Jasperreport 导出pdf 粗体,宋体,黑体字体设置
1.为了显示中文,需要在ireport中设置文本属性:
font中选中宋体,
pdf font 选中strong-light,
pdf-encode 选中 UniGB-UCS2-H (Chinese Simplified)
Pdf Embedded true
2.在导出pdf时,需要宋体或黑体中文加粗或斜体时需要设置如下
Map fontMap = new HashMap();
// 宋体,加粗,非斜体的参数设置,宋体不需要引入字体文件,如果需要斜体的话,把false值变为true即可
fontMap.put(new FontKey("宋体", true, false), new PdfFont("STSong-Light",
"UniGB-UCS2-H", true, true, false));
//黑体的话,在ireport的Font中选中黑体,加粗,还要引入字体文件simhei.ttf,该文件可从C:\WINDOWS\Fonts中获得
FontKey key = new FontKey("黑体", true, false); //黑体,true表示加粗,false表示非斜体,如果需要变为斜体,只需变为true即可
PdfFont font = new PdfFont("c:\\simhei.ttf" "Identity-H", true, true, false); //该false值表示非斜体,如果需要变为斜体,只需变为true即可
fontMap.put(key, font);
exporter.setParameter(JRExporterParameter.FONT_MAP, fontMap);
jasperrepor导出大数据量数据时,减小占用大量内存实现方法如下:
//report virtualizer"可以用来序列化临时数据到硬盘上来优化内存的使用.
//第一个参数2表示放入内存中的页数,如果超过2页,第3页以后的数据,都会放到硬盘的文件夹/reports/tmp下,
//第二个参数表示临时文件存放的目录
JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, sc.getRealPath("/reports/tmp"));
//设置该参数
parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
jasperPrint = JasperFillManager.fillReport(jasperReport,parameters, dataSource);
当字段显示的数据太多,自动换行的话,需要设置属性Stretch with overflow 为钩选,如果需要同行的其他显示字段和该换行字段一样高的话,设置其它同行显示字段的属性Stretch Type为 Relative to band height;如果该换行的显示字段内容出现换行跨页的情况,需要给其它的同行显示字段的属性Print when detail overflows设置为钩选状态,这样才能保证高度同行显示内容高度一样。(注意:如果改换行跨页显示的内容字体设置为宋体的话,在导出rtf格式时,换行数据可能会被遮挡,需要设置为默认字体,我想可能是字体不同导致计算高度有误)