New page shows unwanted indentation in Jasper Reports - jasper-reports

I am using Jasper reports to generate a pdf document. The first line of each paragraph is indented. When a paragraph overflows into the next page the first line in the new page is indented, even if it shouldn't be because it is just a continuation from the other page. Here is an example of a paragraph:
<textField isStretchWithOverflow="true">
<reportElement positionType="Float" x="0" y="60" width="367" height="1">
</reportElement>
<textElement textAlignment="Justified">
<font fontName="Arial" size="12"/>
<paragraph lineSpacing="1_1_2" firstLineIndent="40"/>
</textElement>
<textFieldExpression><![CDATA["This is an extremely long paragraph, so long that it overflows into the next page and gets wrongly indented.\n"]]></textFieldExpression>
</textField>
I know this is not a stack overflow but still it is an overflow problem. Any ideas?
PS: I am desperate, I will consider even the craziest ideas. Sorry, I have no idea why the xml did not keep the readable indented format. It seems that the indent pops up only where you don't want it.

Related

Bullets not print in pdf which generated by jasper report but preview correctly in jasper soft studio [duplicate]

This question already has answers here:
Jasper Reports PDF doesn't export cyrillic values
(1 answer)
How can I display "$£Ω€απ⅔" in Jasperserver PDF using iReport?
(2 answers)
Closed 3 years ago.
I am designing a jasper report using jasper (6.1.0) soft studio and jasper report is exported to pdf . Every static text on the report correctly display on pdf .
But bullets(Black squires in the code below ) are not in pdf.
I tried to change the encoding and I tried with font extension as well.
<staticText>
<reportElement positionType="Float" mode="Opaque" x="1" y="221" width="553" height="39" isRemoveLineWhenBlank="true" uuid="4b31d8f1-d37b-4976-87ac-8d8b90d73ee8"/>
<textElement textAlignment="Justified" verticalAlignment="Top" markup="none">
<font fontName="Allianz Sans" isBold="true"/>
</textElement>
<text>
<![CDATA[
◼ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
◼ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
◼ cccccccccccccccccccccccccccccc
]]>
</text>
</staticText>
I expected to print pdf (with bullets (black squires))
◼ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
◼ bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
◼ cccccccccccccccccccccccccccccc
But result as follow (without bullets (black squires))
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccccccc
Need a help to find out a reason for this or any solution.

Exclude column header (but keep first) from a Table component on CSV export in Jasper Reports

I know how to exclude column header from a JR report on CSV report.
I need to know how to exclude column header (but keep first) from a Table component on CSV report.
If this is not possible, any suggestion other than ignore pagination is highly appreciated.
By using this property you can keep your first header in your csv export.
net.sf.jasperreports.export.csv.exclude.origin.keep.first.band.3=columnHeader
net.sf.jasperreports.export.csv.exclude.origin.keep.first.report.3=*
You can use any another name if you already using 3 in your jrxml.
One possible solution is to add a key to each of the column Header report Element. (In this case, key="col_header" in the reportElement tag.)
<jr:columnHeader style="table_CH" height="50" rowSpan="1">
<staticText>
<reportElement uuid="0c6dfd58-9df2-4e00-b79e-43a457c7b42e" key="col_header" x="0" y="0" width="90" height="50"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font size="12"/>
</textElement>
<text><![CDATA[ColumnName]]></text>
</staticText>
</jr:columnHeader>
Next, exclude the key when exporting to CSV. (Add this property to the report properties list).
<property name="net.sf.jasperreports.export.csv.exclude.key.col_header"/>
Voila, the column headers are removed in CSV export.
The downside of this approach:
It removes all the column Headers. (net.sf.jasperreports.export.csv.exclude.key.keep.first.col_header does not work).
Adding Key to each column Header is quite laborious.
If it's possible, just move all column headers to the title band and remove the column headers band itself, and it will only print once in your exported CSV.

Applying colour to the no records found message

I am working with jasper-reports-4.5.0 and spring 3.0.5RELEASE. I am generating the reports in PDF, HTML, and CSV formats. While generating the reports, if there are no matching records in the database I am displaying the message "No Records Found". How can I make the message appear red?
To set the text to red you just need to set the Forecolor of the text. An example No Data Section with red text would be
<noData>
<band height="20">
<staticText>
<reportElement x="0" y="0" width="555" height="20" forecolor="#FF0000"/>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<text><![CDATA[There was no data found.]]></text>
</staticText>
</band>
</noData>
The only caveat to this is that when exporting to csv, obviously the text will not be red since that is just a plain text file. It should work for PDF and HTML though.

How to make add break after paragraph in jasper reports

i want to ask. How to add break after paragraph in one text field.
for example,
A report is a textual work (usually of writing, speech, television, or film) made with the specific intention of relaying information.
To be like this:-
"A report is a textual work line 1
(usually of writing, speech, television, or film) line 2
made with the specific intention of line 3
relaying information" line 4
You can use \n (newline) symbols or you can use the markup syntax.
The sample:
<title>
<band height="167" splitType="Stretch">
<textField isStretchWithOverflow="true">
<reportElement x="414" y="38" width="100" height="20"/>
<textElement markup="styled"/>
<textFieldExpression><![CDATA["A report is a textual work <br/>(usually of writing, speech, television, or film) <br/>made with the specific intention of <br/> relaying information"]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="true">
<reportElement x="26" y="38" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA["A report is a textual work\n(usually of writing, speech, television, or film)\nmade with the specific intention of \nrelaying information"]]></textFieldExpression>
</textField>
</band>
</title>
More information about using styled text is here.

different number format in iReport and Jasper Server

i created report in iReport, where is text field with format:
new DecimalFormat("#,##0.00").format($F{NUMBER}) + " €"
In iReport result is 1 234,56 €, which is OK. I am in Slovakia and this is ordinary format here.
In Jasper Server is result 1,234.56 € which is not OK.
Other question: There is still Sk (Slovak Crown) set for Slovakia. Is it possible to set it for EUR ?
Could you help me, what to set where ?
Thanks
If you hard-code the format to use comma for the thousands separator, it's not possible that iReport would ignore this. It sounds like you have not done what you think.
But it seems likely that you need to set the JasperReports Server to use a different locale. You could edit this file:
WEB-INF/applicationContext-security.xml
You'll find the locale section. Add what you need for Slovakia. Then you can choose this locale on the login page.
Or it might be helpful to set the locale in Tomcat's startup script (or whatever app server you are using). These Java parameters might solve your problem (of course you won't want en_US... but those are the parameters):
java -Duser.language=en -Duser.region=US
I have an older version of jasperserver deployed in one of my clients and upgrading it would be a bit of a pain. I'm experiencing the same thing with iReport 4.1.1. My locale is pt_BR and I didn't really want to change my server locale.
I've noticed that iReport is smart (or dumb) enough to not add the class attribute to the textFieldExpression class (I am guessing it guesses from the variable/field type). Jasperserver (at least the version I'm using anyway), on the other hand, does not apply the pattern to numbers if you don't specify the class for that expression.
In other words: iReport generates this markup and renders it as expected:
<textField pattern="###,###,##0.00" isBlankWhenNull="true">
<reportElement mode="Transparent" x="1293" y="0" width="92" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$V{my_var}]]></textFieldExpression>
</textField>
You can assume that my_var is a BigDecimal. This field does not get rendered correctly in the server, as it simply ignores the pattern (maybe because it assumes all fields are Strings?) unless you specify the expression class for the textFieldExpression:
<textField pattern="###,###,##0.00" isBlankWhenNull="true">
<reportElement mode="Transparent" x="1293" y="0" width="92" height="20"/>
<textElement textAlignment="Right" verticalAlignment="Middle">
<font isBold="true"/>
</textElement>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$V{my_var}]]></textFieldExpression>
</textField>
Note the class="java.math.BigDecimal" in the second last line. It sucks that I had to manually edit the jrxml file, but at least Jasperserver renders my report properly.