我正在尝试对生成的图进行
base64
编码matplotlib
并将它们写入 GAE 上的 html 页面。之后,数字化地块
xhtml2pdf
最后,使用库将 html 页面转换为 pdf 。
如果绘图是由jqplot
. 但是,一旦切换到matplotlib
,我就会遇到一个名为 的错误Incorrect padding
,我不知道如何解决。感谢您的任何建议。
步骤1
蟒蛇代码:
import matplotlib
import matplotlib.pyplot as plt
import StringIO
import urllib, base64
plt.figure(1)
plt.hist([2,3,4,5,6,7], bins=3)
fig = plt.gcf()
imgdata = StringIO.StringIO()
fig.savefig(imgdata, format='png')
imgdata.seek(0) # rewind the data
uri_1 = 'data:image/png;base64,'
uri_2 = urllib.quote(base64.b64encode(imgdata.buf))
uri_2 += "=" * ((4 - len(uri_2 ) % 4) % 4)
uri_3 = uri_1 + uri_2
uri_4 = '<img id="chart1" src = "%s"/>' % (uri_3)
第2步
Javascript
var n_plot = $('img[id^="chart"]').size();
i=1;
var imgData = [];
while(i <= n_plot){
//sometimes the plots are generated under jqplot
try{
imgData.push($('#chart'+i).jqplotToImageStr({}));
i=i+1
}
// This case is generated by matplotlib
catch(e){
imgData.push($('#chart'+i).attr('src'));
i=i+1
}
}
imgData_json = JSON.stringify(imgData)
第 3 步
Python
pdf = pisa.CreatePDF(imgData_json, file(filename, "wb"))