Python и серверная часть matplotlib для генерации PDF-документов - PullRequest
0 голосов
/ 02 октября 2010

Я хотел бы написать сценарий Python на стороне сервера, который генерирует документы .pdf.

на данный момент у меня установлен 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 вместо PNG изображение. (символ # или жирный шрифт для всех вещей, которые я пытался и комментировал)

Кто-нибудь знает?

спасибо.

Жан-Клодом

Ответы [ 2 ]

4 голосов
/ 02 октября 2010

Прежде всего, в своем коде вы отправляете на стандартный вывод как слова из оператора печати, так и сам рисунок.

Я только что попробовал ваш скрипт, меняя комментарии так:

# 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

2 голосов
/ 02 октября 2010

Я просто догадываюсь здесь, но правильный MIME-тип - это application / pdf, и в этой строке комментария вы не включаете необходимый дополнительный символ новой строки в операторе печати. ​​

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...