Как обновить заголовок по умолчанию в отчете PDF (qWeb)?

У меня есть отчет в формате PDF, используя qWeb в Odoo (v8). Мой отчет имеет следующую строку кода:

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

Эта строка, я полагаю, предназначена для вставки предопределенного заголовка в отчет PDF. В Настройках -> Компании на вкладке Конфигурация отчета в соответствующей компании есть что-то вроде этого:

<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>

Я изменил некоторые строки, чтобы напечатать заголовок так, как он мне нужен. Когда я нажимаю кнопку Preview Header/Footer, он показывает все так, как я его напечатал, но я не работаю при печати отчета: заголовок по-прежнему печатается так, как это было по умолчанию. В некоторых темах на форумах говорится, чтобы снять флажок "Перезагрузить из вложения"... в моем случае это всегда было снято.

Как видите, заголовок набирается в форме RML, а мой отчет - в qWeb... Это проблема? Если это так, как это исправить?

Итак, как отредактировать (... и заставить его работать...) заголовок отчета PDF по умолчанию???

Заранее спасибо.

2 ответа

Решение

Чтобы определить свой пользовательский заголовок в qweb сообщить, давая класс заголовка для вкладки div, как

<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>

Hear В Qweb есть два разных класса для установки пользовательского заголовка, и нижний колонтитул в теге div может напрямую установить пользовательский заголовок, заданный как класс заголовка в div, и класс нижнего колонтитула, установленный как нижний колонтитул в теге div. Важно, что мы не добавляем любой внешний или внутренний колонтитул в вашем файле представления Просто добавьте тег ниже.

<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 и footer автоматически устанавливает заголовок и нижний колонтитул для этого отчета в Qweb. Код, который я вам продемонстрировал, работает нормально с моей стороны.

Я надеюсь, что это поможет вам..:)

Другие вопросы по тегам