如何从SoftLayer引用的二进制数据中获取“PDF”文件?

时间:2017-01-30 09:39:57

标签: python api ibm-cloud-infrastructure

我通过SoftLayer API的“getPdf”方法获得了二进制数据。

参考。 BillingSoftLayer_Billing_Order_Quote :: getPdf | SoftLayer开发网络 - http://sldn.softlayer.com/reference/services/SoftLayer_Billing_Order_Quote/getPdf

然后我想从二进制数据创建PDF文件。 你知道怎么办吗?

2 个答案:

答案 0 :(得分:0)

该方法返回以base 64编码的二进制数据,您需要做的是解码二进制数据。

请参阅有关enconde和解码二进制数据的文章。

https://code.tutsplus.com/tutorials/base64-encoding-and-decoding-using-python--cms-25588

Python客户端返回一个xmlrpc.client.Binary对象,因此您需要使用Python客户端和Python 3来处理该对象的示例

#!/usr/bin/env python

import SoftLayer
import xmlrpc.client
import base64
import os

USERNAME = 'set me'
API_KEY = 'set me'

quoteId = 1560845

client = SoftLayer.Client(username=USERNAME, api_key=API_KEY)

accountClient = client['SoftLayer_Billing_Order_Quote']
binaryData = accountClient.getPdf(id=quoteId)
decodeBinary = binaryData.data
file = open('test.pdf','wb')
file.write(decodeBinary)

此致

答案 1 :(得分:-1)

这是我的问题的答案。

# import
import SoftLayer
import sys
parm=sys.argv
quoteId=parm[1]

# account info
client = SoftLayer.create_client_from_env()

# getPdf as a binary data
getPdf = client['Billing_Order_Quote'].getPdf(id=quoteId)

# Save as a PDF
quoteFileName = "Quote_ID_%s.pdf" % quoteId
w = open(quoteFileName, "wb")
w.write(getPdf.data)
w.close()