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

Odoo Report 如何在每个产品对应页面的开头放置产品字段值

自定义采购订单单产品分页打印解决方案

场景1:使用Office套件(Word/Excel)手动制作

  • 核心逻辑是利用分页符强制分页,每个产品内容块前插入分页符即可
  • 操作步骤:
    1. 先制作单产品的信息模板:顶部预留位置放条码、产品名称、产品描述字段
    2. 第一个产品信息录入完成后,光标移动到该产品内容块的最后一行,点击「插入」选项卡选择「分页符」
    3. 新页面顶部直接录入第二个产品的条码、名称、描述等信息,重复上一步插入分页符操作即可
    4. 若使用Excel,可在「页面布局」选项卡中设置「打印标题」,固定每页顶部的信息栏样式,再用筛选功能按产品拆分每页内容

场景2:前端页面自定义打印(JS实现)

  • 核心逻辑是给每个产品块设置打印分页规则,强制每个块独占一页,内容自动对齐到页首
  • 核心CSS代码:
/* 给每个产品容器添加这个类 */
.product-page {
  page-break-after: always;
  page-break-inside: avoid;
  margin: 0;
  padding: 0;
}
/* 清除打印时的默认页边距偏移,保证内容从页首开始 */
@media print {
  @page { margin: 1cm; }
  body { margin: 0; padding: 0; }
}
  • 页面结构示例:
<div class="product-page">
  <img src="第一个产品条码地址" alt="产品条码">
  <h3>产品A名称</h3>
  <p>产品A描述</p>
  <!-- 其他产品信息 -->
</div>
<div class="product-page">
  <img src="第二个产品条码地址" alt="产品条码">
  <h3>产品B名称</h3>
  <p>产品B描述</p>
  <!-- 其他产品信息 -->
</div>
  • 调用打印时直接用window.print()即可自动实现每页开头对应一个产品信息

场景3:代码生成PDF文件(以Python为例)

  • 核心逻辑是遍历产品列表时,每渲染完一个产品的信息就新增一页,新页面默认从顶部开始渲染内容
  • 示例代码(使用reportlab库):
from reportlab.pdfgen import canvas
from reportlab.graphics.barcode import code128

# 产品列表数据
product_list = [
    {"id": "P001", "name": "产品A", "desc": "产品A的详细描述"},
    {"id": "P002", "name": "产品B", "desc": "产品B的详细描述"}
]

c = canvas.Canvas("采购订单.pdf")

for product in product_list:
    # 从页面顶部开始渲染信息,y坐标从高到低对应页面从上到下
    barcode = code128.Code128(product["id"], barHeight=30, barWidth=0.8)
    barcode.drawOn(c, 50, 750) # 条码放在页首位置
    c.drawString(50, 720, f"产品名称:{product['name']}")
    c.drawString(50, 700, f"产品描述:{product['desc']}")
    # 渲染完当前产品所有内容后新增一页,下一个产品直接从新页顶部开始渲染
    c.showPage()

c.save()

内容的提问来源于stack exchange,提问作者Dev Machine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 07:54:04