我正在尝试获取JasperReports生成的示例报告,但它抛出了一些我无法理解的异常.
我有一个豆子:
class DataBean {
public String country;
public String name;
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
产生上述bean列表的类:
class DataBeanList {
public ArrayList<DataBean> getDataBeanList() {
ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();
dataBeanList.add(produce("Manisha", "India"));
dataBeanList.add(produce("Dennis Ritchie", "USA"));
dataBeanList.add(produce("V.Anand", "India"));
dataBeanList.add(produce("Shrinath", "California"));
return dataBeanList;
}
private DataBean produce(String name, String country) {
DataBean dataBean …Run Code Online (Sandbox Code Playgroud) 我已经按照这个链接向我的jasper报告项目中添加了字体,但是在尝试构建报告时我得到了这个异常,这个异常意味着什么?我找不到任何解决方案.请注意我正在尝试添加 Ubuntu-LI字体
17:26:35-218 - - raysis.rohani.rg.report.builder.ReportBuilder.show(120) - error in showing the jasper report (called from ReportBuilder)
net.sf.jasperreports.engine.JRRuntimeException: java.awt.FontFormatException: bad table, tag=1196445523
at net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:104)
at net.sf.jasperreports.engine.fonts.SimpleFontFace.<init>(SimpleFontFace.java:128)
at net.sf.jasperreports.engine.fonts.SimpleFontFace.getInstance(SimpleFontFace.java:67)
at net.sf.jasperreports.engine.fonts.SimpleFontFamily.setNormal(SimpleFontFamily.java:99)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamily(SimpleFontExtensionHelper.java:261)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.parseFontFamilies(SimpleFontExtensionHelper.java:232)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:193)
at net.sf.jasperreports.engine.fonts.SimpleFontExtensionHelper.loadFontFamilies(SimpleFontExtensionHelper.java:162)
at net.sf.jasperreports.engine.fonts.FontExtensionsRegistry.getExtensions(FontExtensionsRegistry.java:56)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:110)
at net.sf.jasperreports.engine.DefaultJasperReportsContext.getExtensions(DefaultJasperReportsContext.java:246)
at net.sf.jasperreports.engine.fonts.FontUtil.getFontInfo(FontUtil.java:185)
at net.sf.jasperreports.engine.fonts.FontUtil.getAwtFontFromBundles(FontUtil.java:245)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFont(StyleResolver.java:96)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFont(StyleResolver.java:71)
at net.sf.dynamicreports.design.transformation.StyleResolver.getFontHeight(StyleResolver.java:52)
at net.sf.dynamicreports.design.transformation.TemplateTransform.getTextFieldHeight(TemplateTransform.java:967)
at net.sf.dynamicreports.design.transformation.ComponentTransform.textField(ComponentTransform.java:332)
at net.sf.dynamicreports.design.transformation.ComponentTransform.component(ComponentTransform.java:152)
at net.sf.dynamicreports.design.transformation.ComponentTransform.list(ComponentTransform.java:285)
at net.sf.dynamicreports.design.transformation.BandTransform.band(BandTransform.java:184)
at net.sf.dynamicreports.design.transformation.BandTransform.transform(BandTransform.java:74)
at net.sf.dynamicreports.design.base.DRDesignReport.transform(DRDesignReport.java:135)
at net.sf.dynamicreports.design.base.DRDesignReport.<init>(DRDesignReport.java:107)
at net.sf.dynamicreports.design.base.DRDesignReport.<init>(DRDesignReport.java:99)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperReportDesign(JasperReportBuilder.java:261)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.getJasperParameters(JasperReportBuilder.java:288)
at net.sf.dynamicreports.jasper.builder.JasperReportBuilder.toJasperPrint(JasperReportBuilder.java:299) …Run Code Online (Sandbox Code Playgroud) 文字有一些?字符.在生成pdf时,PDF生成成功但印地语字符不是即将出现的问题.我们正在使用动态报告.使用的字体是Arial Unicode MS,PDF编码是"Identity-H".
下面是使用的代码snipett
FontBuilder defaultFont = stl.font()
.setFontName("Arial Unicode MS")
.setPdfEncoding("Identity-H");
JasperPdfExporterBuilder pdfExporter =export.pdfExporter(filePath)
.setEncrypted(report.isPasswordProtected())
.setUserPassword(report.getPassword()).setCharacterEncoding("UTF-8");
concatenatedReport().concatenate(jrBuilder, reportBuilder).continuousPageNumbering().toPdf(pdfExporter);
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮我这个,请告诉我.
我正在Asp.net core 2.0中开发一个Web API项目。我需要一种库或创建Word文档的方法。我搜索了尝试过的NPOI和DocX。两者都不如预期。谁能推荐我一个工具?
我正在使用JasperReportBuilder并将报告导出为PDF.报告的全部内容由MultiPageListBuilder,HorizontalListBuilder和VerticalListBuilder生成,我不想传递数据源,因为数据来自各种数据源.我想利用页面页脚和页眉来添加到每页的静态页眉和页脚以及页码.如果我尝试使用addDetail(componentBuilder)方法添加 MultiPageListBuilder在*详情&乐队(因为这MultiPageListBuilder包含多个页面数据),空白报表生成.如果我在Title或Summary band中添加MultiPageListBuilder,则报告生成完美,但Page Header和Page Footer band消失.
示例代码段如下
JasperReportBuilder rpt = net.sf.dynamicreports.report.builder.DynamicReports.report();
MultiPageListBuilder multiPageList = cmp.multiPageList();
HorizontalListBuilder hrbld = cmp.horizontalList();
try {
rpt.addTitle(cmp.text("REPORT TITLE"));
rpt.addTitle(cmp.text("--------------"));
rpt.addPageHeader(cmp.pageXofY());
for (int i = 0; i < 200; i++) {
hrbld = cmp.horizontalList();
hrbld.add(cmp.text("ABC " + i)).newRow();
multiPageList.add(hrbld);
}
rpt.addDetail(multiPageList);
rpt.summaryOnANewPage();
rpt.addSummary(cmp.text("REPORT SUMMARY"));
JasperPdfExporterBuilder pdfExporter = Exporters.pdfExporter("report.pdf");
rpt.toPdf(pdfExporter);
File file = new …Run Code Online (Sandbox Code Playgroud) 我正在使用JasperReports和DynamicReports与这段java代码创建一个pdf格式的报告,其中包含utf-8字符,生成的问题pdf文件根本不包含utf-8字符,如果它们已被替换为" ".使用OutputStream创建utf-8文件时,我应该注意什么?
public void toPdf(String path){
OutputStream outHtml;
try {
outHtml = new FileOutputStream(path);
jasperBuilder.toPdf(outHtml);
} catch (Exception e1) {
logger.error("failed to create PDF", e1);
}
}
Run Code Online (Sandbox Code Playgroud)
这可能是值得注意的是,创建XLS和HTML文件不会面临这样的问题.
请注意,jasperBuilder.toPdf(outHtml);我已经跟踪了很多代码行,并且没有在这些行中我的utf-8字符被删除.所以我猜魔鬼在outHtml = new FileOutputStream(path);