基于Libreoffice的报表引擎(ODT -> ODT、ODT -> PDF、ODT -> DOC、ODT -> DOCX、ODS -> ODS等)
项目描述
py3o 报告引擎是基于Libreoffice的 Odoo 报告引擎:
该报告是使用 Libreoffice(ODT 或 ODS)创建的,
报告以 OpenDocument 格式(.odt 或 .ods 文件)存储在服务器上
报告以 OpenDocument 格式或 Libreoffice 支持的任何输出格式(PDF、HTML、DOC、DOCX、Docbook、XLS 等)发送给用户
基于 Libreoffice 的报告引擎的主要优点是:
无需成为开发人员即可创建或修改报告:使用 Libreoffice 创建和修改报告。所以这个报告引擎有一个完整的所见即所得的报告开发工具!
对于 A4/Letter 格式的 PDF 报告,使用 Libreoffice 等旨在创建 A4/Letter 文档的工具比使用 HTML/CSS 开发更容易,而且一些打印特性(背景、边距框)是基于 HTML/CSS 的解决方案不太支持。
如果您希望您的用户能够在 Odoo 生成文档后对其进行修改,只需使用 ODT 输出(或 DOC 或 DOCX)配置文档,用户将能够在生成后使用 Libreoffice(或 Word)修改文档通过 Odoo。
轻松开发 ODS 格式的电子表格报告(可输出 XLS)。
此模块report_py3o是 Py3o 报告引擎的基础模块。如果单独使用,它将为每个 ODT 到 PDF(或 ODT 到 DOCX,..)文档转换生成一个 libreoffice 进程。如果您有很多报告要从 ODT 转换为另一种格式,这会很慢并且可能会成为问题。在这种情况下,您应该考虑附加模块report_py3o_fusion_server,该模块旨在与 libreoffice 守护程序一起使用。使用report_py3o_fusion_server, 技术环境设置更复杂,因为您必须安装附加软件组件并运行 2 个守护程序,但您有更好的性能,您可以在 Odoo 中配置 libreoffice PDF 导出选项(允许生成 PDF 表单、PDF/A 文档、受密码保护的 PDF、带水印的 PDF 等)。
此报告引擎是Aeroo的替代品:这两个报告引擎具有相似的功能,但它们的实现完全不同。但是,您不能将 aeroo 模板用作替代品,您必须更改一些细节。
目录
<nav class="contents local" id="contents" role="doc-toc"> </nav>安装
安装所需的 python 库:
pip install py3o.template
pip install py3o.formats
要允许将 ODT 或 ODS 报告转换为其他格式(PDF、DOC、DOCX 等),请安装 libreoffice:
apt-get --no-install-recommends install libreoffice
配置
例如,要将本地发票报告替换为自定义 py3o 报告,请在自定义模块中添加以下 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account.account_invoices" model="ir.actions.report">
<field name="report_type">py3o</field>
<field name="py3o_filetype">odt</field>
<field name="module">my_custom_module_base</field>
<field name="py3o_template_fallback">report/account_invoice.odt</field>
</record>
</odoo>
其中my_custom_module_base是自定义 Odoo 模块的名称。在此示例中,发票 ODT 文件位于my_custom_module_base/report/account_invoice.odt中。
也可以引用位于 Odoo 服务器的受信任路径中的模板。在这种情况下,您必须让模块条目为空,并将模板的路径指定为py3o_template_fallback。
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account.account_invoices" model="ir.actions.report">
<field name="report_type">py3o</field>
<field name="py3o_filetype">odt</field>
<field name="py3o_template_fallback">/odoo/templates/py3o/report/account_invoice.odt</field>
</record>
</odoo>
此外,您还必须修改 Odoo 服务器配置文件,为您的 py3o 模板声明允许的根目录。py3o 报告只能加载位于此目录中的模板。
[options]
...
[report_py3o]
root_tmpl_path=/odoo/templates/py3o
如果您想要 PDF 格式而不是 ODT 格式的发票,XML 文件应如下所示:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account.account_invoices" model="ir.actions.report">
<field name="report_type">py3o</field>
<field name="py3o_filetype">pdf</field>
<field name="module">my_custom_module_base</field>
<field name="py3o_template_fallback">report/account_invoice.odt</field>
</record>
</odoo>
如果要添加新的 py3o PDF 报告(而不是替换本机报告),XML 文件应如下所示:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="partner_summary_report" model="ir.actions.report">
<field name="name">Partner Summary</field>
<field name="model">res.partner</field>
<field name="report_name">res.partner.summary</field>
<field name="report_type">py3o</field>
<field name="py3o_filetype">pdf</field>
<field name="module">my_custom_module_base</field>
<field name="py3o_template_fallback">report/partner_summary.odt</field>
<!-- Add entry in "Print" drop-down list -->
<field name="binding_type">report</field>
<field name="binding_model_id" ref="base.model_res_partner"/>
</record>
</odoo>
配置参数
- py3o.conversion_command
用于运行转换的命令,默认为libreoffice。如果你改变它,你在这里设置的任何东西都必须接受参数--headless --convert-to $ext $file并将生成的文件放入$file的目录,扩展名为$ext。该命令将在$file的目录中启动。
用法
模板语言被广泛记录,记录在 libreoffice 中作为对象公开,您也可以在其上调用函数。
可用的功能和对象
- 用户
浏览当前用户记录
- 郎
用户公司的语言为字符串(ISO 代码)
- b64解码
base64.b64decode
- 格式多行值(字符串)
生成<br/>和 的 ODF 等价物 用于多行字段(ODF 内部是 XML,否则将跳过这些字段)
- html_sanitize(字符串)
清理 HTML 字符串
- 时间
Python的时间模块
- 显示地址(合作伙伴)
返回合作伙伴地址的格式化字符串
- o_format_lang(值,lang_code=False,digits=None,分组=True,货币=False,dp=False,currency_obj=False,no_break_space=True)
根据上下文语言和时区返回格式化的数字或货币值
- o_format_date(值,lang_code=False,date_format=False)
根据上下文语言和时区返回格式化的日期或时间值
示例报告模板
Github 项目odoo-py3o-report-templates上提供了主要 Odoo 原生报告(发票、销售订单、采购订单、拣货等)的示例 py3o 报告模板。
已知问题/路线图
生成条形码?
在演示文件中添加更详细的示例以展示功能
添加迁移指南 aeroo -> py3o
错误追踪器
在GitHub 问题上跟踪错误。如果遇到问题,请检查您的问题是否已被报告。如果您首先发现它,请通过提供详细且受欢迎的 反馈来帮助我们粉碎它。
不要就技术问题的支持或帮助直接联系贡献者。
学分
贡献者
弗洛伦特助理(XCG咨询)
洛朗·米尼翁 <洛朗。米尼翁@acsone 。_ 欧盟>,
亚历克西斯·德·拉特雷 < 亚历克西斯. 德拉特@akretion 。_ com >,
古文培根<古文. 培根@camptocamp 。_ com >
霍尔格布伦< hbrunn @ therp 。nl >
维护者
该模块由 OCA 维护。
OCA 或 Odoo 社区协会是一个非营利组织,其使命是支持 Odoo 功能的协作开发并促进其广泛使用。
该模块是GitHub 上OCA/reporting-engine项目的一部分。
欢迎您贡献。要了解如何,请访问https://odoo-community.org/page/Contribute。
项目详情
odoo13_addon_report_py3o -13.0.1.0.5-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | cd1819821501275e22b908823327d15ba9f895b4ae65554585654963975c17f6 |
|
| MD5 | c0ec2ae53994e2a8aa73b31e2a164e30 |
|
| 布莱克2-256 | f320d36d515a244487e0ea40766de8d925cb0d89f7689fb29ce5d985005105e3 |