我正在通过JSON接收长文段落来填充我的报告。这些文本是html格式的,子我的textfield如下所示:
<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>
<textElement textAlignment="Justified" markup="html">
<font fontName="Arial" size="7"/>
</textElement>
<textFieldExpression><![CDATA[$F{text}]]></textFieldExpression>
</textField>问题在于列表和缩进。我找到了一些解决方案,比如使用负值作为第一行缩进的这,但我的问题是,我不知道在哪里会有html标签列表。
这是获取列表时的输出,如下所示:
1.- Lorem Ipsum只是印刷和排版行业的虚拟文本。自从1500年代以来,Lorem就一直是业界标准的虚拟文本,当时一台不知名的打印机拿出一台打字机,把它拼成一本样书。
我需要这样的缩进:
我怎么才能把这个和右边对齐?有黑客吗?谢谢!
发布于 2020-04-07 10:13:15
如果您正在使用HTML生成此文本,那么似乎您应该能够使用CSS。
如果是这样的话,那么CSS属性文本缩进可能是一个很好的快速攻击。如果您能够将类名添加到您想要缩进的字段中,那么只需执行以下操作:
.myClass {
text-indent: 85px;
}甚至,只需使用边距-左:
.myClass {
margin-left: 85px;
}如果您不能使用CSS,那么作为最后的手段(尽管不推荐),您可以在<blockquote>标记中包围您的预定缩进文本。如果这看起来不对,那么您可以在文本的每一行前面插入4个空空格字符 。因此,如果您有一个传入字符串,您可以使用如下所示的一些JavaScript:
let tab = "";
for(let i = 0; i < 4; i++) tab += " "
myString.split("\n").map(x=>tab + x).join("<br>");如果您由于任何原因无法使用JavaScript,那么如果您对文本的来源有任何控制,那么您可以用您使用的任何语言重写上面的代码。
https://stackoverflow.com/questions/60586483
复制相似问题