How to update default header in PDF report (qWeb)?

2019-02-20 03:33发布

I have a PDF report, using qWeb in Odoo (v8). My report has this line of code:

<t t-call="report.external_layout">

This line I suppose is for inserting the predefined header in the PDF report. In Settings -> Companies, tab Report Configuration in respective company, there is something like this:

<header>
    <pageTemplate>
        <frame id="first" x1="1.3cm" y1="3.0cm" height="21.7cm" width="19.0cm"/>
         <stylesheet>
            <!-- Set here the default font to use for all <para> tags -->
            <paraStyle name='Normal' fontName="DejaVuSans"/>
            <paraStyle name="main_footer" fontSize="8.0" alignment="CENTER"/>
            <paraStyle name="main_header" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
         </stylesheet>
        <pageGraphics>
            <!-- Set here the default font to use for all <drawString> tags -->
            <setFont name="DejaVuSans" size="8"/>
            <!-- You Logo - Change X,Y,Width and Height -->
            <image x="1.3cm" y="27.7cm" height="40.0" >[[ company.logo or removeParentNode('image') ]]</image>
            <fill color="black"/>
            <stroke color="black"/>
            <!-- page header -->
            <lines>1.3cm 27.7cm 20cm 27.7cm</lines>
            <drawRightString x="20cm" y="27.8cm">[[ company.rml_header1 ]]</drawRightString>
            <drawString x="1.3cm" y="27.3cm">[[ company.partner_id.name ]]</drawString>
            <place x="1.3cm" y="25.3cm" height="1.8cm" width="15.0cm">
                <para style="main_header">[[ display_address(company.partner_id) or  '' ]]</para>
            </place>
            <drawString x="1.3cm" y="25.0cm">Phone:</drawString>
            <drawRightString x="7cm" y="25.0cm">[[ company.partner_id.phone or '' ]]</drawRightString>
            <drawString x="1.3cm" y="24.6cm">Mail:</drawString>
            <drawRightString x="7cm" y="24.6cm">[[ company.partner_id.email or '' ]]</drawRightString>
            <lines>1.3cm 24.5cm 7cm 24.5cm</lines>
            <!-- left margin -->
            <rotate degrees="90"/>
            <fill color="grey"/>
            <drawString x="2.65cm" y="-0.4cm">generated by Odoo.com</drawString>
            <fill color="black"/>
            <rotate degrees="-90"/>
            <!--page bottom-->
            <lines>1.2cm 2.65cm 19.9cm 2.65cm</lines>
            <place x="1.3cm" y="0cm" height="2.55cm" width="19.0cm">
                <para style="main_footer">[[ company.rml_footer ]]</para>
                <para style="main_footer">Contact : [[ user.name ]] - Page: <pageNumber/></para>
            </place>
        </pageGraphics>
    </pageTemplate>
</header>

I changed some lines in order to print the header just like I need it. When I press button Preview Header/Footer, it shows everything just like I typed it, but I doesn't work when I print the report: header is still printed like it was by default. Some threads in forums say to uncheck the Reload from Attachment checkbox... in my case, it always has been unchecked.

As you can see, header is typed in RML form, and my report is in qWeb... Is this a problem? If it is it, how to fix it?

So, how to edit (... and make it to work ...) the PDF report default header???

Thanks in advance.

2条回答
Evening l夕情丶
2楼-- · 2019-02-20 04:12

Hear In Qweb there are Two different classes for set the custom header and Footer in div tag can directly set the custom header set as the header class in div and footer class set as the footer in div tag.important think is that we do not add any external or internal header and footer in your view file Just add the below tag.

<div class="header">
    <div class="row" style="border-bottom: 1px solid black;">
        <div class="col-xs-3">
            <img t-if="company.logo" t-att-src="'data:image/png;base64,%s' % company.logo" style="max-height: 45px;"/>
            <div t-field="company.partner_id" 
                        t-field-options='{"widget": "contact", "fields": ["address", "name"], "no_marker": true}' />
            </div>
        <div class="col-xs-5 pull-right" style="margin-top:5px;">
            <t t-if="company.vat">
                <b>GST ID :</b>
                <span t-field="company.vat" /><br/>
             </t>
              <t t-if="company.phone">
                  <b>PHONE :</b>
                  <span t-field="company.phone" /><br/>
               </t>  
                <t t-if="company.fax">
                     <b>FAX :</b>
                     <span t-field="company.fax" /><br/>
                 </t>
                 <t t-if="company.email">
                 <b>EMAIL :</b>
                                <span t-field="company.email" /><br/>
                            </t>
                            <t t-if="company.website">
                                <b>WEBSITE :</b>
                                <span t-field="company.website" />
                            </t>
                </div>
            </div>
        </div>

    <div class="footer">
        <div class="text-center" style="border-top: 1px solid black;">
            <ul class="list-inline">
                <li>Page:</li>
                <li><span class="page"/></li>
                <li>/</li>
                <li><span class="topage"/></li>
            </ul>
        </div>
    </div>

header and footer class automatically set the custome header and footer for that report in Qweb. The code which I showed off you which is working fine from my side.

I hope this should helpful for you ..:)

查看更多
Viruses.
3楼-- · 2019-02-20 04:21

To define your custom header in qweb report by giving a header class to div tab like

<template id="your_custom_layout_header">
    <div class="header">
        <div class="row">
            <div class="col-xs-3">
            <img t-if="company.logo" t-att-src="'data:image/png;base64,%s' % company.logo" style="max-height: 45px;"/>
            <!-- All your custom code here -->
            </div>
        </div>
    </div>

    <div class="footer">
        <div class="row">
            <!-- All your custom code here -->
        </div>
    </div>

</template>
查看更多
登录 后发表回答