我正在通过JSON接收长文本段落以填充我的报告。这些文本是html格式,儿子,我的文本字段看起来像这样:
<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>
问题在于列表和缩进。我找到了一些解决方案,例如this,它对第一行缩进使用负值,但是我的问题是我不知道在哪里有html标签列表。
这是获取列表时的输出,例如:
1.- Lorem Ipsum只是印刷和排版行业的伪文本。自1500年代以来,Lorem Ipsum一直是业界的标准伪文本,当时一位不知名的打印机拿起一个厨房,将其打乱成一本标本。
我需要像这样缩进:
如何将其向右对齐?有没有骇客? 谢谢!
答案 0 :(得分:0)
如果您使用HTML生成此文本,看来您应该能够使用CSS。
如果是这样,那么CSS属性text-indent可能是一个很好的快速破解方法。如果您可以在要缩进的字段中添加类名,则只需执行以下操作:
.myClass {
text-indent: 85px;
}
甚至,只需使用margin-left:
.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,那么如果可以控制该文本的来源,则可以使用任何语言重写上面的相同代码。