如何创建动态高度的纸质格式记录?

时间:2018-01-25 11:57:43

标签: python xml report odoo-8 odoo

我为stock.picking型号做了一个新报告,该报告始终用RJ-4040 Brother打印机打印。所以我不得不创建一个宽度为102毫米的新纸张格式并将其分配给报告:

<record id="paperformat_stock_picking_rj4040brother" model="report.paperformat">
    <field name="name">RJ-4040 Brother</field>
    <field name="default" eval="True"/>
    <field name="format">custom</field>
    <field name="page_height">297</field>
    <field name="page_width">102</field>
    <field name="orientation">Portrait</field>
    <field name="margin_top">40</field>
    <field name="margin_bottom">23</field>
    <field name="margin_left">3</field>
    <field name="margin_right">3</field>
    <field name="header_line" eval="False"/>
    <field name="header_spacing">35</field>
    <field name="dpi">80</field>
</record>

它工作正常,但问题是我必须为纸张格式设置一个高度,并且该打印机的纸张是纸卷,其高度未定义。这与销售点票的情况相同,所以我去看了POS票据的纸张格式,其高度 150mm ,我认为长按收据效果不佳。该报告并没有调用经典的标题布局,但它有自己的标题,我认为在每个页面的顶部重复(如果票证长度超过150毫米)。所以我想一张长票,例如20行,将会像这样在纸卷上打印: 7行 - 标题 - 7行 - 标题 - 6行(假设只有7行适合150mm),应该像这样打印:标题 - 20行

我尝试了<field name="page_height">-1</field>(给出错误)或<field name="page_height">0</field>等基本内容(忽略高度和宽度设置)。

然后我读了这篇文章:How to Dynamic change paper format margins (Left, Right, Top, Bottom)?

所以我继承了get_pdf方法,现在我将paperformat记录集和HTML代码放在一个变量中,但我不知道我是否在浪费时间来测量之后修改纸张格式高度的第二个高度。

有谁知道哪个是实现我目的的最佳途径?任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:1)

当我不需要其他页面标题时,我遇到了这样的问题 页面,我不想要首页和第一行之间的边距 在第二页。我所做的是避免使用提供的外部布局 通过Odoo创建一个没有页眉或页脚的新纸张格式:

    <!-- 0 mm header and 0mm bottom and less height -->
    <field name="page_height">150</field>
    <field name="margin_top">0</field>
    <field name="margin_bottom">0</field>

我在<page>的标记之后编写了我的报告,定义了我自己的标题,以便在整个PDF中为每条记录呈现一次。

   <page>
       <div class="new_header" style="margin-top: 1%;"> <!-- Margin-top here replaces the margin_top of the paper format -->
             <!-- my header code here -->
             <!-- don't user <header> element or class="header" because odoo will render it in the header section by default -->
       <div>

我希望你明白这个想法,它需要xpath的一些技巧才能删除外部布局,或者你可以使用这种技术定义一个新的报告。

请注意,删除页眉和底部空格的唯一方法是页边距