Ответ 1
Используйте Фильтр элементов.
Цитата из руководства JR Ultimate:
Эта встроенная реализация фильтра исключает из элементов экспорта, которые соответствуют данному ключу элемента.
Клавиши элементов устанавливаются во время разработки отчета и распространяются в сгенерированные отчеты.
Каждый элемент в заполненном отчете имеет тот же ключ, что и элемент из шаблона отчета, который сгенерировал его.
Чтобы инициировать фильтр ключа элемента, разработчику отчета необходимо определить одно или несколько свойств отчета, начинающихся с <exporter_property_prefix > .exclude.key. Каждое такое свойство соответствует ключу одного элемента, который должен быть исключен фильтром. Ключ элемента задается значением свойства, или если для свойства не задано значение, суффикс свойства.
В следующем примере показано, как указывать ключи элементов, которые должны быть исключены из определенных экспортных выходов:
<jasperReport ...>
<!-- exclude elements with keys Image1 and Text4 from HTML export-->
<property name="net.sf.jasperreports.export.html.exclude.key.Image1"/>
<property name="net.sf.jasperreports.export.html.exclude.key.Text4"/>
<!-- exclude elements with keys Image5 from PDF export -->
<property name="net.sf.jasperreports.export.pdf.exclude.key.the.image" value="Image5"/>
...
</jasperReport>
В вашем случае вы должны добавить ключ для текстового поля с гиперссылкой (например, textFieldWithHL
), а затем добавить одно свойство для каждого формата (pdf, docx, xls, csv, xml, txt, odt), которые вы хотите исключить от печати этой гиперссылки:
<property name="net.sf.jasperreports.export.pdf.exclude.key.textFieldWithHL"/>
<property name="net.sf.jasperreports.export.docx.exclude.key.textFieldWithHL"/>
<property name="net.sf.jasperreports.export.xls.exclude.key.textFieldWithHL"/>
<property name="net.sf.jasperreports.export.csv.exclude.key.textFieldWithHL"/>
<property name="net.sf.jasperreports.export.xml.exclude.key.textFieldWithHL"/>
Выражения из вашего сообщения:
net.sf.jasperreports.export.{format}.exclude.origin.{suffix}.{arbitrary_name}
net.sf.jasperreports.export.{format}.exclude.origin.keep.first.{suffix}.{arbitrary_name}
позволяют исключить все bands
(также group bands
). Эти фильтры работают с объектами JROrigin.
Например, рассмотрите отчет с логотипом, который должен быть включен как SVG для вывода PDF или PNG для вывода HTML. Файл JRXML содержит:
<image scaleImage="RetainShape" onErrorType="Blank">
<reportElement key="IMAGE_LOGO_PNG" x="1" y="0" width="100" height="60" uuid="a896cade-f6fc-4d8f-b762-29b950309257"/>
<imageExpression><![CDATA[Transcoder.asPNG($V{V_LOGO_FILE} + ".svg")]]></imageExpression>
</image>
<image scaleImage="RetainShape" onErrorType="Blank">
<reportElement key="IMAGE_LOGO_SVG" x="1" y="0" width="100" height="60" uuid="a896cade-f6fc-4d8f-b762-29b950309257"/>
<imageExpression><![CDATA[Transcoder.asSVG($V{V_LOGO_FILE} + ".svg")]]></imageExpression>
</image>
Чтобы исключить SVG из HTML и PNG из PDF, добавьте следующие свойства сразу после корневого элемента <jasperReport...>
в файле JRXML:
<property name="net.sf.jasperreports.export.html.exclude.key.IMAGE_LOGO_SVG"/>
<property name="net.sf.jasperreports.export.pdf.exclude.key.IMAGE_LOGO_PNG"/>