odoo reports 报表打印pdf初探

html转pdf 使用的三方工具:

wkhtmltopdf

源码分析:

        pdf_content = self._run_wkhtmltopdf(
            bodies,
            header=header,
            footer=footer,
            landscape=context.get('landscape'),
            specific_paperformat_args=specific_paperformat_args,
            set_viewport_size=context.get('set_viewport_size'),
        )

可以看出要调用三方工具需要准备的数据有,body,header, footer,这下知道为什么header 和footer 能够在多个页面重复显示了吧.

update 2021年12月11日5

这里得header,bodies,footer 都被处理成了一个完整的html 页面,header 和footer的高度也都是已经设置死了,bodies 的摆放位置会根据header 设置的高度,从一个固定的位置开始,还有一点要说明的是,header 的高度如果比内容的高度小,则实际显示的失火还是会显示出来的,并且会覆盖bodies 的内容.最近遇到一些头痛的需求,要把一些格式不固定的内容放到header中,比如地址信息,这就好造成某些客户的表头很长,某些公司的表头很短,长的会盖掉boides的内容,短的又会留出很大块空白.


懂得,原来世界如此简单!

原文地址:https://www.cnblogs.com/qianxunman/p/15666571.html