RML Test of Page Number

*爱你&永不变心* 提交于 2019-12-12 04:17:13

问题


Moin Moin, I'm working on Openerp 7 and there pdf's get created with rml. Problem is: I need Page Numbers, but just starting of the second Page. I tried some rml if clause statements, but Page 1 gets printed all the time and the things that get printet are pretty wierd.

 <header>
    <pageTemplate id="second">

        <frame id="second" x1="2.2cm" y1="2.5cm" width="16.9cm" height="22.3cm"/>

        <pageGraphics>
            <image file="images/isatech_water_header_medium.jpg" x="0.0cm" y="24.4cm" width="19.0cm" height="6.0cm"/>
            <image file="images/isatech_water_footer.jpg" x="0.0cm" y="-0.5cm" width="16.9cm" height="2.6cm"/>
        </pageGraphics>

    </pageTemplate>

    <pageTemplate id="first">  

        <frame id="first" x1="2.2cm" y1="2.5cm" width="16.9cm" height="22.3cm"/>

        <pageGraphics>
            <image file="images/isatech_water_header.jpg" x="0.0cm" y="24.4cm" width="19.0cm" height="6.0cm"/>
            <image file="images/isatech_water_footer.jpg" x="0.0cm" y="-0.5cm" width="16.9cm" height="2.6cm"/>
            [[  <pageNumber/> != '1' and <drawCentredString x="10cm" y="0.3cm"><pageNumber/></drawCentredString> ]]
        </pageGraphics>

    </pageTemplate> 


</header>

What gets printed on the pdf is:

]] 1(2,3,...)

The pageTemplate second is for printing different header after page 1. I hope to get that straigt after the page numbers.

I really have no idea why the code behaves like he does. Different solutions are also welcome.

mfg Chris


回答1:


I found a different way to do it. It is not a good Idea to check the pageNumber in RML. If I got it right, then the pageNumber is processed as one of the last steps. (Same goes for PageCount where it makes sense as you can't know the pageCount until the end of building your document) Even if you call a python function with a pageNumber it gets handled as a String. I can just imagine it is the same reason. I helped myself with a <setNextTemplate name="pageTemplate id"/>

  1. Uncheck Add RML header in Settings > Actions > Reports > "Your Report"
  2. Change your RML File and define the different pageTemplates

    <template title="Sales Order" author="OpenERP S.A.(sales@openerp.com)" allowSplitting="20" showBoundary="0">
    <pageTemplate id="first">
        <frame id="first" x1="2.2cm" y1="2.5cm" width="16.9cm" height="22.3cm"/>
        <pageGraphics>
            <image file="images/header_page_1.jpg" x="0.8cm" y="24.7cm" width="16,9cm" height="4cm"/>
            <image file="images/footer_page_1.jpg" x="0.4cm" y="-0.4cm" width="16.9cm" height="2.3cm"/>
        </pageGraphics>
    </pageTemplate>
    <pageTemplate id="second">
        <frame id="first" x1="2.2cm" y1="2.5cm" width="16.9cm" height="22.3cm"/>
        <pageGraphics>
            <image file="images/header_page_2.jpg" x="0.8cm" y="24.7cm" width="16,9cm" height="4cm"/>
            <image file="images/header_page_2.jpg" x="0.4cm" y="-0.4cm" width="16.9cm" height="2.3cm"/>
        </pageGraphics>
    </pageTemplate>
    

  3. Somewhere on page x add <setNextTemplate name="pageTemplate id"/> or <setNextTemplate name="pageTemplate id"/> <nextFrame/> to change the pageTemplate of page x+1

<setNextTemplate name="pageTemplate id"/> simply defines the pageTemplate of the next page and <nextFrame/> additionaly end the current page.

Edit(Multi-Company-Header): I kind of forgot that we have multi Company Headers. Still I use this method. I just copy the .rml for every Company and hardcode the different company logos. Then in the reports setting page for every company(database) I specific the right .rml file. I's very redundant, but I didn't found a better solution.

VG Chris



来源:https://stackoverflow.com/questions/34657145/rml-test-of-page-number

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!