一、將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':[]})