【发布时间】:2020-03-06 19:14:28
【问题描述】:
我需要在 Jasper 报告中显示大量来自 JSON 数组的文本。 这是我的 json 数组:
{
"data": {
"contractualConditions": [
{
"text": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam feugiat neque nec felis fringilla, sed eleifend odio dictum. Suspendisse arcu ligula, gravida condimentum fringilla ac, tincidunt nec orci. Suspendisse et ullamcorper magna. Aliquam suscipit posuere dolor at sagittis. In sed nisl sit amet lorem elementum tempor a in justo. Nam facilisis tellus ut semper lacinia. Cras eu nibh nisl. Maecenas egestas posuere dignissim.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam feugiat neque nec felis fringilla, sed eleifend odio dictum. Suspendisse arcu ligula, gravida condimentum fringilla ac, tincidunt nec orci. Suspendisse et ullamcorper magna. Aliquam suscipit posuere dolor at sagittis. In sed nisl sit amet lorem elementum tempor a in justo. Nam facilisis tellus ut semper lacinia. Cras eu nibh nisl. Maecenas egestas posuere dignissim.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam feugiat neque nec felis fringilla, sed eleifend odio dictum. Suspendisse arcu ligula, gravida condimentum fringilla ac, tincidunt nec orci. Suspendisse et ullamcorper magna. Aliquam suscipit posuere dolor at sagittis. In sed nisl sit amet lorem elementum tempor a in justo. Nam facilisis tellus ut semper lacinia. Cras eu nibh nisl. Maecenas egestas posuere dignissim.</p>"
},
{
"text": "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam feugiat neque nec felis fringilla, sed eleifend odio dictum. Suspendisse arcu ligula, gravida condimentum fringilla ac, tincidunt nec orci. Suspendisse et ullamcorper magna. Aliquam suscipit posuere dolor at sagittis. In sed nisl sit amet lorem elementum tempor a in justo. Nam facilisis tellus ut semper lacinia. Cras eu nibh nisl. Maecenas egestas posuere dignissim.</p>"
},
{
"text": "<p>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi nibh diam, tincidunt nec condimentum quis, pulvinar nec sem. Curabitur nec vehicula purus. Pellentesque ac metus in sem aliquet pretium vitae non tellus. Aenean quis mi euismod orci euismod facilisis. Aliquam quis velit nisi. Ut hendrerit malesuada ligula id venenatis. Sed sagittis dolor mauris, nec elementum dui ornare nec. Fusce vel elementum dui. Donec tempor scelerisque sagittis. Nulla facilisi. Nam ac sagittis justo. Maecenas felis sapien, mollis quis feugiat at, mollis at justo. Proin leo dui, consequat eu pretium quis, eleifend sed sapien. Integer tellus eros, interdum ut molestie id, elementum et justo.</p>"
}
]
}}
这是我的 Jasper 文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.11.0.final using JasperReports Library version 6.11.0-0c4056ccaa4d25a5a8c45672d2f764ea3498bebb -->
<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="ClauseSubReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="c75e022d-0c3e-47e1-b8fb-bbe084875130">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="sectionFive.xml"/>
<queryString language="json">
<![CDATA[data.contractualConditions]]>
</queryString>
<field name="text" class="java.lang.String">
<property name="net.sf.jasperreports.jsonql.field.expression" value="text"/>
</field>
<detail>
<band height="10">
<property name="com.jaspersoft.studio.layout"/>
<frame borderSplitType="DrawBorders">
<reportElement stretchType="ElementGroupHeight" x="0" y="0" width="555" height="10" uuid="0048bcd5-74f4-44e8-8aae-cb4fb6b9a5ec"/>
<box>
<pen lineColor="#98FC26"/>
<topPen lineWidth="1.0" lineStyle="Solid" lineColor="#98FC26"/>
<leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#98FC26"/>
<bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#98FC26"/>
<rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#98FC26"/>
</box>
<textField textAdjust="StretchHeight">
<reportElement x="60" y="1" width="490" height="9" forecolor="#1F497D" uuid="6448707a-6f36-4bef-96a1-6bc7634e72c3">
<property name="com.jaspersoft.studio.spreadsheet.connectionID" value="34deaa54-ac6e-42dd-8c82-c125d6810c22"/>
</reportElement>
<box>
<topPen lineWidth="1.0" lineStyle="Solid" lineColor="#1F497D"/>
<leftPen lineWidth="1.0" lineStyle="Solid" lineColor="#1F497D"/>
<bottomPen lineWidth="1.0" lineStyle="Solid" lineColor="#1F497D"/>
<rightPen lineWidth="1.0" lineStyle="Solid" lineColor="#1F497D"/>
</box>
<textElement textAlignment="Justified" markup="html">
<font size="7"/>
</textElement>
<textFieldExpression><![CDATA[$F{text}]]></textFieldExpression>
</textField>
</frame>
</band>
</detail>
</jasperReport>
结果……
因此,正如您所见,每个文本字段的底部都有一个“随机”边距。我正在疯狂地试图删除这个边距,但我不知道该怎么做。如果我在 JasperStudio 上预览,看起来不错,但问题是当我导出为 PDF 时。
当然,绿/蓝线只是为了调试文本边距。
还有另一种奇怪的行为,当文本到达页面末尾时,会在某个点换行,而不是像您在此图像上看到的那样到达行尾(顶部是第 1 页,底部是第 2 页):
谢谢!
【问题讨论】:
-
您是否尝试在输入数据中不使用 html 标记和不使用
的情况下检查报告?
-
是的,结果相同... :(
-
我试用了您的模板,它在我的 JSS 6.12.0 上运行良好。在我的情况下,生成的 pdf 使用 Arial 字体(我不认为这是字体问题,但谁知道)
-
你太棒了!我将字体设置为 Arial,现在 PDF 看起来很棒!我删除了文本中的 Arial 字体,因为我遇到了 Linux 和字体问题(JVM 无法使用字体 Arial)。非常感谢!
标签: jasper-reports export-to-pdf