一、将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
二、通過接口将report列印,并提供下載下傳
'/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、傳位址;
'/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':[]})