我正在尝试使用DynamicJasper生成报告,但是我收到以下错误:
net.sf.jasperreports.engine.util.JRFontNotFoundException:
Font 'Arial' is not available to the JVM.
Run Code Online (Sandbox Code Playgroud)
安装了msttcorefonts,但我猜JVM没有使用它的任何字体.
我正在使用Ubuntu 10.04.
我怎样才能解决这个问题?
我必须根据动态提供的各种参数生成报告.在某些上下文中,参数可以为空.例如,从表中的人与ID,姓名,年龄,性别和maritalStatus的领域,我会产生对报告的30岁已婚男性的人.在其他一些时候,可能需要在不考虑年龄的情况下结婚.如果我对这两种情况使用相同的jasper,则第二种情况下的年龄约束将为null.有没有办法管理这种情况?
此外,是否可以动态指定报告中应生成哪些字段?
我的jasper报告中出现了字体问题,其中一个较为冗长的文本字段(细节带中的最后一个)在PDF和PDF预览中被截断,而在内部预览中则没有.
例如
内部预览:
Here is a fake description. It fits
perfectly, fitting just in the lines.
Run Code Online (Sandbox Code Playgroud)
PDF预览
Here is a fake description. It
fits perfectly, fitting just in the
Run Code Online (Sandbox Code Playgroud)
贾斯珀(貌似)使用一些算法来确定该字段应该有多高,我的文本几乎不合适,然后当生成PDF时,文本包裹并消失在下一行.
我没有使用自定义字体(只是默认/隐式"SansSerif"),并且没有使用除粗体/斜体之外的任何自定义样式.在iReport的PDF预览版和我在Windows和MacOS上生成的代码中都可以证明这种行为(Linux可能仍有问题,但我的示例文本没有在Ubuntu上展示行为).
我玩Stretch Type,Position Type和Stretch with Overflow,以及将此文本字段移动到自己的乐队但没有修复此错误(其中一些导致其他错误).
我很幸运将字体更改为其他内置字体,但这只是告诉我我的示例不适用于该特定字体,而不是我已修复该错误.
任何提示将非常感谢.
更新1
我尝试从Jasper Reports 5.2.0升级到6.2.0,将Jasper Fonts 4.0.0升级到6.0.0 ......没有变化.
更新2
尝试编辑我的src/main/resources/jasperreports_extension.properties
并添加
net.sf.jasperreports.export.pdf.force.linebreak.policy=true
Run Code Online (Sandbox Code Playgroud)
... 没变.
(值得注意的是,虽然在我的用例中我无法使用isStretchWithOverflow="true"
,但这可能就是它无效的原因.)
更新3
我尝试通过编辑src/main/resources/jasperreports_extension.xml
和添加来嵌入字体:
net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory
net.sf.jasperreports.extension.simple.font.families.arialFontFamily=fonts/customFontFamilies.xml
Run Code Online (Sandbox Code Playgroud)
customFontFamilies.xml:
<?xml version="1.0" encoding="UTF-8"?>
<fontFamilies>
<fontFamily name="ArialEM">
<normal><![CDATA[fonts/Arial/Arial.ttf]]></normal>
<bold><![CDATA[fonts/Arial/Arial Bold.ttf]]></bold>
<italic><![CDATA[fonts/Arial/Arial Italic.ttf]]></italic>
<boldItalic><![CDATA[fonts/Arial/Arial Bold Italic.ttf]]>/boldItalic>
<pdfEncoding><![CDATA[Cp1252]]></pdfEncoding>
<pdfEmbedded><![CDATA[true]]></pdfEmbedded>
</fontFamily>
</fontFamilies> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用DynamicJasper生成一个Jasper报告,它只是一个图表,上面没有表格.似乎没有隐藏列或抑制表的方法.我只选择生成图表有哪些选择?我会接受一个不使用DynamicJasper的解决方案,只使用JasperReports java API.
public void go() throws ColumnBuilderException, ClassNotFoundException, JRException {
super();
final AbstractColumn areas = ColumnBuilder.getNew()
.setColumnProperty("area", String.class.getName())
.setTitle("Area")
.setWidth(30)
.build();
final AbstractColumn exercises = ColumnBuilder.getNew()
.setColumnProperty("exercises", Integer.class.getName())
.setTitle("Exercises")
.setWidth(30)
.build();
final DynamicReportBuilder reportBuilder = new DynamicReportBuilder();
reportBuilder.addColumn(areas);
reportBuilder.addColumn(exercises);
reportBuilder.setUseFullPageWidth(true);
final GroupBuilder groupBuilder = new GroupBuilder();
groupBuilder.setCriteriaColumn((PropertyColumn) areas);
groupBuilder.setGroupLayout(GroupLayout.EMPTY);
final DJGroup group = groupBuilder.build();
reportBuilder.addGroup(group);
reportBuilder.addChart(this.chart((PropertyColumn) areas, exercises));
final DynamicReport dynamicReport = reportBuilder.build();
final JasperPrint jasperPrint =
DynamicJasperHelper.generateJasperPrint(
dynamicReport,
new ClassicLayoutManager(),
new JRBeanCollectionDataSource(this.getData()));
/* PDF */
final JRPdfExporter exporter …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用tabledatamodel生成一个jasper报告,如
JRDataSource dataSource = new JRTableModelDataSource(model);
JasperPrint jp = DynamicJasperHelper.generateJasperPrint(dr, new ClassicLayoutManager(), dataSource);
JasperViewer.viewReport(jp);
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,我得到以下错误,如果有人可以帮助我提出这个问题.
线程"main"中的异常java.lang.NoSuchMethodError:ar.com.fdvs.dj.domain.DynamicJasperDesign.setPrintOrder(B)V at ar.com.fdvs.dj.core.DJJRDesignHelper.getNewDesign(DJJRDesignHelper.java:69)在ar.com.fdvs.dj.cs.Dj上,ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:535)的ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperDesign(DynamicJasperHelper.java:207) .core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:518)位于ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperPrint(DynamicJasperHelper.java:283)ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperPrint(DynamicJasperHelper)的.java:236)
我是碧玉的新手,我知道这是一个基本问题.我花了很多时间来解决这个问题,但到目前为止还没有得到解决方案.
我正在使用一个模块,我必须使用jasper生成报告.我实现了pdf生成代码.我们使用dynamic-jasper api生成此报告.我使用"import ar.com.fdvs.dj.domain.Style"类为报告创建样式.我为这些样式设置了背景值,如下所示
style.setBackgroundColor(Color.RED);
但这并没有反映出来,我仍然将背景视为白色.
如果我错过了什么,请告诉我
亲切的问候Ajil
我在代码的帮助下创建报告:
FastReportBuilder fr = new FastReportBuilder();
Run Code Online (Sandbox Code Playgroud)
我想在每个页面的页脚中添加页码。
page 1/3
page 2/3
Run Code Online (Sandbox Code Playgroud) 由DynamicJasper生成的我的PDF现在看起来完全符合预期,我只面临一个问题:在生成的PDF中根本不显示亚洲字符.任何其他角色都可以.我可以在调试器中验证字符串是否正确放置在JRDataSource中,而Jasper确实在报告中为它们生成了行,但文本本身完全缺失.
将DynamicJasper与亚洲文本元素一起使用时,是否还需要考虑其他一些编码设置?
感谢您的任何建议和最好的问候