У меня есть приложение, которое генерирует несколько частей отчета, а затем объединяет их вместе для создания PDF-документа. Мы хотели бы сгенерировать соответствующие номера страниц для каждой части. Я надеялся передать параметр PAGE_OFFSET в каждую часть и вычислить новый номер страницы, используя PAGE_NUMBER + PAGE_OFFSET. Это возможно? До сих пор все, что я пробовал, генерировало ошибки приведения типов или неверные вычисления.
Расчет номера страницы iReports
Ответы (4)
Если я правильно понимаю, вы хотите передать это смещение страницы в iReport?
Создайте новый параметр для вашего смещения: $P{offset} класса параметров java.lang.Integer. Затем создайте новую переменную класса java.lang.Integer. Задайте для выражения переменной значение $V{PAGE_NUMBER}+$P{offset}, для вычисления — ничего, для типа сброса — Page, а для типа приращения — None.
попробуйте следующий шаг
1.) создать новую переменную mypagenumber;
типа целое число, тип сброса группа, страница типа инкремента, тип расчета количество; выражение переменной $V{mypagenumber}
, начальное значение новое целое (0).
2.) поместите в свой отчет строку типа текстового поля, страницу времени оценки, выражение текстового поля String.valueOf($V{mypagenumber})
, чтобы указать фактическую страницу в группе или группу времени оценки, и выберите свою группу, чтобы указать страницы в группе.
Если вы ищете "Страница 1 из 3". Посмотрите значение 'evaluationTime'. Вы должны написать примерно так:
<textField evaluationTime="Page">
<reportElement x="328" y="0" width="154" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="Arial" size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA["Page"+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="485" y="0" width="63" height="20"/>
<textElement verticalAlignment="Middle">
<font fontName="Arial" size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
Исправленная версия кода Кристины для меня (я использую iReport 3.7.2):
<pageFooter>
<band height="20">
<textField evaluationTime="Page">
<reportElement x="766" y="0" width="154" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="SansSerif" size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}.toString() + " of "]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="924" y="0" width="63" height="20"/>
<textElement verticalAlignment="Middle">
<font fontName="SansSerif" size="9"/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$V{PAGE_NUMBER}.toString()]]></textFieldExpression>
</textField>
</band>
</pageFooter>