Список отступов в отчете о яшме - PullRequest
1 голос
/ 08 марта 2020

Я получаю длинные текстовые абзацы через 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-х годов, когда неизвестный принтер взял камбуз шрифта и скремблировал его, чтобы сделать книгу типовых образцов.

И мне нужно сделать такой отступ:

  1. Lorem Ipsum - просто фиктивный текст в полиграфии и наборе текста. Лорем Ипсум был стандартным фиктивным текстом в отрасли с 1500-х годов, когда неизвестный принтер взял галеру типа и скремблировал ее, чтобы сделать книгу типовых образцов.

Как я могу выровнять это по правому ? Есть ли взломать? Спасибо!

1 Ответ

0 голосов
/ 07 апреля 2020

Если вы генерируете этот текст с помощью 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 по какой-либо причине, тогда, если у вас есть контроль над тем, где этот текст исходит, вы можете переписать тот же код выше на любом языке, который вы используете.

...