碧玉报告清单缩进

时间:2020-03-08 10:18:49

标签: jasper-reports indentation export-to-pdf

我正在通过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一直是业界的标准伪文本,当时一位不知名的打印机拿起一个厨房,将其打乱成一本标本。

我需要像这样缩进:

  1. Lorem Ipsum只是印刷和排版的虚拟文本 行业。 Lorem Ipsum已成为业界标准的伪文本 从1500年代开始,当一个未知的打印机拿起一个厨房 然后把它打乱成一本样本。

如何将其向右对齐?有没有骇客? 谢谢!

1 个答案:

答案 0 :(得分:0)

如果您使用HTML生成此文本,看来您应该能够使用CSS。

如果是这样,那么CSS属性text-indent可能是一个很好的快速破解方法。如果您可以在要缩进的字段中添加类名,则只需执行以下操作:

.myClass {
    text-indent: 85px;
}

甚至,只需使用margin-left:

.myClass {
    margin-left: 85px;
}

如果您不能使用CSS,则作为最后的选择(尽管不建议使用),您可以在<blockquote>标记中插入要缩进的文本。如果即使这样看起来也不正确,则可以在文本的每一行之前插入4个空白字符&nbsp;。因此,如果您有传入的字符串,则可以使用如下所示的JavaScript:

let tab = "";
for(let i = 0; i < 4; i++) tab += "&nbsp;"
myString.split("\n").map(x=>tab + x).join("<br>");

如果由于某种原因不能使用JavaScript,那么如果可以控制该文本的来源,则可以使用任何语言重写上面的相同代码。