You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 13升级views2pdf模块后PDF打印按钮不显示问题排查

Odoo 13视图PDF打印按钮不显示问题排查

背景

从Odoo 12的views2pdf模块升级到13版本,已修改manifest、assets和视图XML文件,模块安装无报错,但FORM、TREE、KANBAN、PIVOT、GRAPH、Calendar视图的PDF打印按钮始终不出现。现有相关文件如下:

Assets文件

<?xml version="1.0" encoding="utf-8"?>

<odoo>
<data>
    <template id="assets_backend" name="popup_reminder assets" inherit_id="web.assets_backend">
        <xpath expr="." position="inside">

            <!-- css -->

            <link rel="stylesheet" href="/views2pdf/static/src/css/views2pdf.css"/>

            <!-- js -->

            <script type="text/javascript" src="/views2pdf/static/src/js/jspdf.min.js"></script>
            <script type="text/javascript" src="/views2pdf/static/src/js/saveSvgAsPng.js"></script>
            <script type="text/javascript" src="/views2pdf/static/src/js/views2pdf.js"></script>
        </xpath>
    </template>
</data>
</odoo>

视图文件

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template>


<!-- extend FormView widget -->

<t t-extend="FormView.buttons">
    <t t-jquery="div.o_form_buttons_view" t-operation="append">
        <button type="button" id="create_pdf" class="btn btn-sm btn-success">
            Print
            <span class="fa fa-print"></span>
        </button>
    </t>
</t>

<!-- extend ListView widget -->

<t t-extend="ListView.buttons">
    <t t-jquery="div.o_list_buttons" t-operation="append">
        <button type="button" id="create_pdf" class="btn btn-sm btn-success">
            Print
            <span class="fa fa-print"></span>
        </button>
    </t>
</t>

<!-- extend KanbanView widget -->

<t t-extend="KanbanView.buttons">
    <t t-jquery="div" t-operation="append">
        <button type="button" id="create_pdf" class="btn btn-sm btn-success">
            Print
            <span class="fa fa-print"></span>
        </button>
    </t>
</t>

<!-- extend PivotView widget -->

<t t-extend="PivotView.buttons">
    <t t-jquery="button[title='Download xls']" t-operation="after">
        <button type="button" id="create_pdf" class="btn btn-sm btn-success">
            Print
            <span class="fa fa-print"></span>
        </button>
    </t>
</t>

<!-- extend GraphView widget -->

<t t-extend="GraphView.buttons">
    <t t-jquery="button[data-mode='pie']" t-operation="after">
        <button type="button"  id="create_pdf" class="btn btn-sm btn-success">
            Print
            <span class="fa fa-print"></span>
        </button>
    </t>
</t>

<!-- extend CalendarView widget -->

 <t t-extend="CalendarView.buttons">
    <t t-jquery="div.o_calendar_buttons" t-operation="append">
        <button type="button" id="create_pdf" class="btn btn-sm btn-success">
            Print
            <span class="fa fa-print"></span>
        </button>
    </t>
</t>


 </template>

 </odoo>

遗漏的修改点

1. 视图按钮模板命名空间变更

Odoo 13重构了前端组件命名规则,原有的FormView.buttons这类模板路径已失效,必须改为带web命名空间的新路径:

  • Form视图:web.FormView.Buttons
  • List(Tree)视图:web.ListView.Buttons
  • Kanban视图:web.KanbanView.Buttons
  • Pivot视图:web.PivotView.Buttons
  • Graph视图:web.GraphView.Buttons
  • Calendar视图:web.CalendarView.Buttons

原模板直接写FormView.buttons会找不到目标模板,导致按钮无法注入。

2. 部分视图jQuery选择器失效

  • Kanban视图:原选择器t-jquery="div"范围太宽泛,会匹配多个无关元素,需改为精准的按钮容器选择器div.o_kanban_buttons
  • Pivot视图:Odoo 13中"Download xls"按钮的title文本可能已调整,建议改用更稳定的类选择器.o_pivot_export_xls
  • Graph视图:button[data-mode='pie']在Odoo 13的视图结构中可能不存在,建议改为向按钮容器.o_graph_buttons内追加按钮

3. 资产模板命名与路径检查

  • 原assets模板的name属性为popup_reminder assets,属于复制错误,应改为views2pdf assets避免命名混淆
  • 确认静态文件路径/views2pdf/static/src/...与模块实际目录结构完全一致,路径错误会导致JS/CSS无法加载

4. JS文件适配Odoo 13前端架构

Odoo 13采用OWL组件框架,和Odoo 12的前端逻辑差异较大:

  • 原views2pdf.js中通过$('#create_pdf').click()的jQuery绑定方式,在组件化架构下无法正确获取元素,需改为通过Odoo组件扩展方式绑定事件
  • 需适配视图组件的生命周期,确保按钮渲染完成后再绑定PDF生成逻辑
  • 检查jspdf.min.js和saveSvgAsPng.js的版本是否兼容Odoo 13的前端环境,旧版本可能存在API冲突

5. 视图模板结构优化

原视图文件中的<template>标签未指定唯一ID,虽不影响安装,但建议添加id="views2pdf_buttons",方便后续维护与排查

修改示例(Form视图部分)

<t t-extend="web.FormView.Buttons">
    <t t-jquery="div.o_form_buttons_view" t-operation="append">
        <button type="button" id="create_pdf_form" class="btn btn-sm btn-success">
            打印PDF
            <span class="fa fa-print"></span>
        </button>
    </t>
</t>

内容的提问来源于stack exchange,提问作者SH EB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:01:06