【问题标题】:How to remove margin from first page using Jasper reports?如何使用 Jasper 报告从首页删除边距?
【发布时间】:2018-10-02 09:34:21
【问题描述】:

我正在使用 JasperReport(jrxml) 创建 PDF 报告。我是 JasperReport 的新手,所以我不知道如何从第一页删除边距。

我的要求是在 PDF 报告中,第一页是封面页,我在其中显示公司徽标和公司详细信息,在封面页之后我显示所有必需的数据。

请查看我的 jrxml 代码,我没有显示所有代码,只是显示我在哪里使用边距代码

<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="rpt_survey_analysis" pageWidth="842" pageHeight="595" orientation="Landscape" columnWidth="802" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="df013db5-f76e-44d3-b0df-bcbc46d93160">
</jasperReport>

在这段代码中,我设置了 topMargin、bottomMargin、leftMargin、rightMargin,但是这个边距会影响到所有页面。但我想影响除封面之外的这个边距。那么如何做到这一点呢?

【问题讨论】:

    标签: jasper-reports margins


    【解决方案1】:

    您需要在报表上设置 0 边距,您可以为不同的波段设置不同的边距

    来自Understanding Bands

    条带与页面宽度一样宽(不包括左右边距)。

    一旦您的保证金为零,一些解决方案可能是:

    1. 将您的元素定位在其他波段中以创建“假”边距示例x="20"

    2. 使用 frame 组件,其中 x 位置位于边距,并将您的其他组件添加到其中。例子

      <frame>
          <reportElement x="20" y="0" width="550" height="40" uuid="0d4ab012-9161-4f37-b8e0-c6ddcdd3d550"/>
          <staticText>
              <reportElement x="0" y="0" width="550" height="30" uuid="3dc51fb0-0bc3-46f6-9259-fb8d9fd1f884"/>
              <text><![CDATA[Text at position 0 in a frame]]></text>
          </staticText>
      </frame>
      
    3. 使用带边距的子报表

    ma​​in.jrxml,无边距

    <?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="NoMargins" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="595" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" isTitleNewPage="true" uuid="4e2c1a7a-cbfd-4d60-9fe7-61aea15cc321">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="One Empty Record"/>
        <queryString>
            <![CDATA[]]>
        </queryString>
        <title>
            <band height="79" splitType="Stretch">
                <rectangle>
                    <reportElement x="0" y="0" width="595" height="51" backcolor="#0015FF" uuid="e6616fe4-fed9-44aa-a8a6-2c296c6ab508">
                        <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                    </reportElement>
                </rectangle>
            </band>
        </title>
        <summary>
            <band height="53" splitType="Stretch">
                <subreport>
                    <reportElement x="0" y="0" width="595" height="50" uuid="b654e952-f1e1-4b90-a4ca-2cf3abe9f6f4"/>
                    <connectionExpression><![CDATA[$P{REPORT_CONNECTION}]]></connectionExpression>
                    <subreportExpression><![CDATA["with margins.jasper"]]></subreportExpression>
                </subreport>
            </band>
        </summary>
    </jasperReport>
    

    子报告,有边距

    <?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="with margins" pageWidth="595" pageHeight="842" whenNoDataType="AllSectionsNoDetail" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" whenResourceMissingType="Error" uuid="cccf2b18-4f7c-464c-bd9c-13dbb62af3b0">
        <queryString>
            <![CDATA[]]>
        </queryString>
        <title>
            <band height="35" splitType="Stretch">
                <staticText>
                    <reportElement x="0" y="0" width="555" height="30" uuid="66542837-c420-4e7c-a760-dd55ccff2d17">
                        <property name="com.jaspersoft.studio.unit.width" value="pixel"/>
                    </reportElement>
                    <text><![CDATA[My report with margin]]></text>
                </staticText>
            </band>
        </title>
    </jasperReport>
    

    输出

    我可能更喜欢在一个简单的报告中使用解决方案 1 或 2,在更复杂的报告中,首先在单独的报告中可能是一个优势

    【讨论】:

    • 没有子报告可以吗?
    • @AkashChavda 检查解决方案 1:如果您只是设置 x="20" 您正在创建边距,因此没有子报告。如果您希望在同一个报告中不可能有 x="0",那么不同的波段在同一个报告中不能有不同的边距
    • 您还可以将框架组件插入到报表中以创建边距,因此添加一个框架添加 x="20" 然后将您的文本字段添加到位置 x="0" 的框架中
    • @AkashChavda 我添加了示例来展示它是如何使用框架完成的
    • 是的,它对 leftMargin 的解决方案,但是其他的呢,这个技巧对 pageFooter 不起作用。如果我们放置 if 条件并检查当前页面是否为 1 then margion = 0 else margin = 20,那么没有任何适当的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多