使用Ureport导出报表的时候报错:
com.itextpdf.text.DocumentException: java.lang.IllegalArgumentException: Font size too smal
at com.itextpdf.text.pdf.PdfDocument.add(PdfDocument.java:821)
at com.itextpdf.text.Document.add(Document.java:277)
at com.bstek.ureport.export.pdf.PdfProducer.produce(PdfProducer.java:196)
at com.bstek.ureport.export.ExportManagerImpl.exportPdf(ExportManagerImpl.java:102)
在网上搜了很多方法,基本没用,经过本人的细致分析,其实是模板的问题。
有问题的模板:
没问题的模板:
大家可以看到font-size字段在有问题的模板中,cell-style这个节点是没有这个属性的。
但是为什么会是0呢?
于是翻了一下源码,我们可以看到,这里CellStyle中的fontSize是用基本数据类型int定义的,默认值会是0
package com.bstek.ureport.definition;
import java.awt.Font;
import java.io.Serializable;
import org.apache.commons.lang.StringUtils;
import org.codehaus.jackson.annotate.JsonIgnore;
import com.bstek.ureport.export.pdf.font.FontBuilder;
/**
* @author Jacky.gao
* @since 2017年1月18日
*/
public class CellStyle implements Serializable{
private static final long serialVersionUID = 8327688051735343849L;
private String bgcolor;
private String forecolor;
private int fontSize;
private String fontFamily;
private String format;
private float lineHeight;
private Alignment align;
private Alignment valign;
private Boolean bold;
private Boolean italic;
private Boolean underline;
private Boolean wrapCompute;
private Border leftBorder;
private Border rightBorder;
private Border topBorder;
private Border bottomBorder;
问题解决:
在生成模板的时候,一定要自己核对一下cell-style中的font-size属性是否存在,不存在的话,要自己加一下,或者在设计面板中调整。