python和matplotlib服务器端生成.pdf文件

时间:2010-10-01 20:00:16

标签: python cgi matplotlib

我想编写一个生成.pdf文档的服务器端python脚本。

目前我已经安装了Python 2.7服务器端 和matplolib也安装了服务器端。

创建简单绘图并生成.png图片的简单脚本 的工作原理。

这是我使用的脚本:

# to access standard output :
import sys

# select a non-GUI backend :
import matplotlib

matplotlib.use('Agg')
#matplotlib.use("cairo.pdf")

#matplotlib.use('PDF')

# import plotting module :
import matplotlib.pyplot as plt

# generate the plot :
plt.plot([1,2,3,2,3,4])

# print the content type (what's the data type)

# the new line is embedded, using '\n' notation :
print "Content-Type: image/png\n"
# print "Content-Type: image/PDF\n"
# print "Content-type: application/pdf"

# output directly to webserver, as a png file:
plt.savefig(sys.stdout, format='png')
# plt.savefig(sys.stdout, format='PDF')
# plt.savefig( "test.pdf", format='pdf'  ) 

我想知道如何做同样的事情,但发送pdf文件而不是 一张照片。 (#或粗体字符适用于我尝试并放在评论中的所有内容)

有人知道吗?

感谢。

吉恩克劳德

2 个答案:

答案 0 :(得分:4)

首先,在你的代码中,你向stdout发送print语句和数字本身的单词。

我刚试过你的脚本,改变了这样的评论

# plt.savefig(sys.stdout, format='png')
# plt.savefig(sys.stdout, format='PDF')
plt.savefig( "test.pdf", format='pdf'  ) 

它对我来说很好。我正在使用python 2.6.smth和matplolib 0.99

答案 1 :(得分:2)

我只是在这里猜测,但是correct MIME type是application / pdf,并且在该注释行中,您没有在print语句中包含必要的额外换行符。