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