我使用的是Jaspersoft Studio 5.6。
它在“设计”视图中的Jaspersoft Studio中正确显示。在预览视图中,它也正确显示(使用java或pdf) 当我从Java应用程序执行报告时,三个文本以相同的大小显示。
我注意到Bold和Italic工作正常,但是如果我改变字体(DejaVu,Arial,Times new roman等)也会被忽略。在我的应用程序生成的报告中,我总是得到相同的字体。
什么失败了?我忘记了任何配置选项吗?
该示例混合静态字段和文本字段以进行测试。
编辑:
好像我找到了一个"解决方案" (有副作用)。
我正在生成这样的报告:
JasperRunManager.runReportToPdfStream(stream, outStream, params, datasource);
现在,以这种方式生成文本的大小在生成的pdf中是正确的:
JasperReport jasperReport = JasperCompileManager.compileReport("my/report.jrxml");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, datasource);
JasperExportManager.exportReportToPdfStream(jasperPrint, outStream);
但字体类型不正确。
我认为,副作用是JasperRunManager.runReportToPdfStream在JasperFillManager.fillReport
执行时不会将报告加载到内存中。
为什么JasperRunManager.runReportToPdfStream
会忽略字体大小?
为什么另一种方式忽略字体类型? JSS和我的java应用程序都在同一台Windows机器上(因此两者都必须使用这些字体)。
是否有任何建议避免将整个报告加载到内存中?
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="subinforme_pag_1" pageWidth="802" pageHeight="552" orientation="Landscape" columnWidth="802" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="c6f5d08f-f28b-4c77-8523-5cf4746cdcf2">
<queryString language="SQL">
<![CDATA[]]>
</queryString>
<detail>
<band height="551" splitType="Stretch">
<textField>
<reportElement x="0" y="80" width="180" height="40" uuid="50721cba-c082-47de-9abf-effcf1b784dd">
<property name="local_mesure_unitheight" value="pixel"/>
</reportElement>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="SansSerif" size="4"/>
</textElement>
<textFieldExpression><![CDATA["Text Field (size 4)"]]></textFieldExpression>
</textField>
<textField>
<reportElement x="0" y="0" width="180" height="40" uuid="05c5129f-f29e-47a1-ad82-4547b51e3d56"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="SansSerif" size="16"/>
</textElement>
<textFieldExpression><![CDATA["Text Field (Size 16)"]]></textFieldExpression>
</textField>
<staticText>
<reportElement x="0" y="40" width="180" height="40" uuid="5c69d29b-b168-408d-89aa-c6d527f0cae1">
<property name="local_mesure_unitwidth" value="pixel"/>
<printWhenExpression><![CDATA[$V{REPORT_COUNT} == 1]]></printWhenExpression>
</reportElement>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font fontName="SansSerif" size="8" isBold="false"/>
</textElement>
<text><![CDATA[Static Text (Size 8)]]></text>
</staticText>
</band>
</detail>
</jasperReport>
答案 0 :(得分:7)
问题是在使用5.6.0版编译时。
通过使用版本5.5.1
进行编译即可解决此问题我希望他们能解决这个问题!
答案 1 :(得分:4)
我也遇到过这个问题。您需要做的是在java Web应用程序中升级de jasperreport jar。例如,如果您使用iReport 5.6.0设计报表,请将jasperreport.jar升级到6.2.1