一、将pdf旋转的通用方法

    def rotate_pdf(self, pdf, angle):
"""
rotateClockwise(90)
这里的pdf传:bytes类型
这里的angel:角度 90 180 270 360度
getNumPages将每一页都旋转
"""
writer = PdfFileWriter()
reader = PdfFileReader(io.BytesIO(pdf), strict=False)
for page in range(0, reader.getNumPages()):
page = reader.getPage(page)
page.rotateClockwise(angle)
writer.addPage(page)
with io.BytesIO() as _buffer:
writer.write(_buffer)
return _buffer.getvalue()

二、通过接口将report打印,并提供下载

    @http.route('/fmcg/download/pdf', type='http', auth="public", csrf=False, cors='*')
def melon_download_pdf(self, **kw):
"""下载图片接口:直接返回的是一个文件对象,可直接下载"""
data = []
id = kw['id']
#获取打印单的 bytes文件
report = request.env.ref('sale.action_transaction_report').with_user(SUPERUSER_ID)._render_qweb_pdf(int(kw['id']))
        report_datas = self.rotate_pdf(report[0],90)
        data = io.BytesIO(report_datas)
return http.send_file(data, filename='transaction_order.pdf', as_attachment=True)

三、接口里面传附件方式:1、传文件对象;

2、传地址;

    @http.route('/upload/image/api', type='http', methods=['POST'], auth="public", csrf=False, cors='*')
def upload_store_image(self, **kw):
"""上传图片接口:sale.order
这里是文件对象
"""
_logger.info("---------上传图片接口--kw--------------------------:%s", kw)
if not kw['file']:
return json.dumps({'result': 'fail', 'message': 'no image'})
base64_data = base64.b64encode(kw['file'].read())
attachment = request.env['ir.attachment'].sudo().create({
'name': kw['file'].filename,
'datas': base64_data,
'res_model': 'sale.order',
})
image = '%s/web/image/%s-%s' % (url_path, str(attachment.id), attachment.checksum) if attachment else ''
return json.dumps({'code': 200, 'message': 'success', 'data':[]})

odoo15接口调用qweb打印,将pdf旋转并下载到本地的更多相关文章

  1. Spring AOP在函数接口调用性能分析及其日志处理方面的应用

    面向切面编程可以实现在不修改原来代码的情况下,增加我们所需的业务处理逻辑,比如:添加日志.本文AOP实例是基于Aspect Around注解实现的,我们需要在调用API函数的时候,统计函数调用的具体信 ...

  2. Spring框架下的 “接口调用、MVC请求” 调用参数、返回值、耗时信息输出

    主要拦截前端或后天的请求,打印请求方法参数.返回值.耗时.异常的日志.方便开发调试,能很快定位到问题出现在哪个方法中. 前端请求拦截,mvc的拦截器 import java.util.Date; im ...

  3. Vue之状态管理(vuex)与接口调用

    Vue之状态管理(vuex)与接口调用 一,介绍与需求 1.1,介绍 1,状态管理(vuex) Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态 ...

  4. httpclient,java跨系统调用,第三接口调用实例

    java跨系统调用,第三方接口调用,有三种方式 1:rmi/rpc 传序列化对象 2:webservice 传xml 3:restful 传json 接下来给大家演示怎么用httpclient调用re ...

  5. js前台调用lodop打印

    lodop简单介绍 lodop的打印功能已经非常强大,也在带web端的图形界面,可以供用户使用.使用js在前台调用lodop打印,一般分为两种方法: 1:特殊的指令打印,这种打印方式,是采用的与js无 ...

  6. SpringBoot27 JDK动态代理详解、获取指定的类类型、动态注册Bean、接口调用框架

    1 JDK动态代理详解 静态代理.JDK动态代理.Cglib动态代理的简单实现方式和区别请参见我的另外一篇博文. 1.1 JDK代理的基本步骤 >通过实现InvocationHandler接口来 ...

  7. SpringCloud项目,接口调用返回http 500 - Internal Server Error的错误

    今天上班的时候,自己正在参与的Spring Cloud项目出现了问题,原本上周五还正常的项目突然所有接口调用都是返回http 500的错误. 项目的状态是在Eureka上可以看到对应微服务是在线状态, ...

  8. 图片美化增强AI接口调用手册

    在调合合AI平台提供的图片美化增强API接口,API平台链接:https://ai.ccint.com/doc/api/crop_enhance_image, 因为有遇到一些问题,写篇博客记录一下 A ...

  9. .Net微信网页开发之JSSDK使用步骤和配置信息timestamp(时间戳),nonceStr(随机串),signature(签名),access_token(接口调用凭据)的生成获取讲解

    前言: 因为接下来会有几篇关于微信JS-SDK功能使用的文章,主要会对微信分享,获取设备信息,获取地理位置,微信扫一扫这几个功能进行讲解.而这几个功能都是围绕着微信JS-SDK实现的,首先使用微信JS ...

  10. C# 调用打印机打印文件

    C# 调用打印机打印文件,通常情况下,例如Word.Excel.PDF等可以使用一些对应的组件进行打印,另一个通用的方式是直接启用一个打印的进程进行打印.示例代码如下: using System.Di ...

随机推荐

  1. 洛谷P11250 [GESP202409 八级] 手套配对 题解

    题目传送门. 非常简单的组合数学题. 首先从 \(n\) 对手套中恰好选出 \(k\) 对手套的方案数为 \(C_n^k\),然后由于我们要取出 \(m\) 只手套,那么取了 \(k\) 对手套后还要 ...

  2. python实现监控站点目录,记录每天更新内容,并写入操作日志,以便查找病毒恶意修改

    问题描述:站点需要追溯代码的修改时间,以便尽早发现病毒恶意修改迹象,及时处理 运行环境:linux服务器,宝塔面板 示例代码:一.读取txt的文件路径,依次遍历所有目录下面的文件,并记录文件信息 pa ...

  3. Kubernetes鉴权资源 —— SubjectAccessReview详解

    1.概述 在 Kubernetes 集群中,授权(Authorization) 是保障安全的核心机制之一.无论是用户.ServiceAccount 还是自动化工具,对资源的操作都需要经过严格的权限控制 ...

  4. [第三章]ABAQUS CM插件中文手册

    ABAQUS Composite Modeler User Manual(zh-CN) Dassault Systèmes, 2018 注: 源文档的交叉引用链接,本文无效 有些语句英文表达更易理解, ...

  5. 红日复现为什么失败之struct-046流量分析加msf特征总结

    struts2漏洞 一.指纹识别 s2的url路径组成(详见struts.xml配置文件):name工程名+namespace命名空间+atcion名称+extends拓展名 部署在根目录下,工程名可 ...

  6. [tldr]github仓库添加release

    作为一个开源项目开发者,并且把自己的代码仓库托管到了github上面,所以,可以在github上提供自己的程序的release 这通常是通过二进制可执行文件的方式提供 新建草稿 点击create a ...

  7. 在 Go 中恰到好处的内存对齐

    问题 type Part1 struct { a bool b int32 c int8 d int64 e byte } 在开始之前,希望你计算一下 Part1 共占用的大小是多少呢? func m ...

  8. etcd 快速入门

    一.认识etcd 1.1 etcd 概念 从哪里说起呢?官网第一个页面,有那么一句话: "A distributed, reliable key-value store for the mo ...

  9. Typora中插入分页符

    博客地址:https://www.cnblogs.com/zylyehuo/ <div style="page-break-after:always"></div ...

  10. Delphi 动态生成进度条窗体

    在implementation加入下面 uses Gauges; var Gauge1: TGauge; 加入Timer1控件,设为false procedure TForm1.Button1Clic ...