表格大写字母打印怎么办?

时间:2016-06-11 09:55:35

标签: formatting jasper-reports

我想用碧玉字母打印一个字母。例如。我有一个银行格式,我希望这个名字出现在框中。如何做到这一点?

D/BluetoothLeScanner: onClientRegistered() - status=0 clientIf=5
  • 选项1 - 使用Name: [F][I][R][S][T][ ][N][A][M][E] 按单元格打印 - 这是不可持续的

  • 选项2 - 在字符之间添加空格,但这会根据字体大小进行更改

  • 选项3 - 在文本末尾添加填充空格。将文本拉伸到可用的全宽,并且字符均匀分布 - 如何做到这一点?

1 个答案:

答案 0 :(得分:1)

使用monospaced font这是正常的。

如果您希望使用其他字体实现它或间距非常大,您可以使用子报告(每次需要固定空间时调用)

实施例

主要报告(我使用参数进行测试)

使用包含每个字母的数据源调用子报表,我使用$P{testText}.split(""),因为char[]中不允许JRBeanArrayDataSource

注意:split will give empty first String in java7 but not in java8

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="MainFixedSpace" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="d2bcb5ab-c751-4f39-8753-561b8a6ac629">
    <parameter name="testText" class="java.lang.String">
        <defaultValueExpression><![CDATA["Hello world"]]></defaultValueExpression>
    </parameter>
    <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false">
        <defaultValueExpression><![CDATA["C:\\jdd\\projects\\StackTrace\\jasper\\"]]></defaultValueExpression>
    </parameter>
    <title>
        <band height="25" splitType="Stretch">
            <subreport>
                <reportElement x="0" y="0" width="555" height="25" uuid="76f53ca9-da1f-46c8-bb3b-aca0dc43d2d3"/>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanArrayDataSource($P{testText}.split(""))]]></dataSourceExpression>
                <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "MainFixedSpace_subreport.jasper"]]></subreportExpression>
            </subreport>
        </band>
    </title>
</jasperReport>

<强>子报表

在我的案例中设置固定空间列数在每行20列(您需要根据您的情况进行调整)并设置printOrder="Horizontal" _THIS字段将允许您访问该字母。< / p>

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="MainFixedSpace_subreport" columnCount="20" printOrder="Horizontal" pageWidth="555" pageHeight="802" columnWidth="27" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="77ba37de-32e1-4ec6-8496-58d716d0340d">
    <field name="_THIS" class="java.lang.String"/>
    <detail>
        <band height="25" splitType="Stretch">
            <textField>
                <reportElement x="0" y="0" width="27" height="25" uuid="ffb27000-41ba-419f-8836-b24dbb0dbb25"/>
                <textElement textAlignment="Center" verticalAlignment="Middle"/>
                <textFieldExpression><![CDATA[$F{_THIS}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
</jasperReport>

<强>输出

Result