|
Оглавление
|
Формат PDF, разработанный компанией Adobe, используется для отображения печатных документов с полным попиксельным форматированием, встроенными шрифтами и двумерной векторной графикой. Вы можете рассматривать PDF документ в качестве электронного эквивалента напечатанного документа. В реальности, PDF документ довольно часто используется для передачи информации, которую затем требуется напечатать. Вы можете легко создавать PDF документы с помощью Python и Django благодаря отличной открытой библиотеке ReportLab. Преимущество динамического создания PDF документов заключается в том, что вы можете изменять его различными способами, например, разная информация для разных пользователей. Например, мы используем Django и ReportLab на сайте KUSports.com для генерации NCAA программ соревнований. Однако перед тем как сгенерировать PDF документ вам потребуется установить ReportLab. Это несложно: просто скачайте и установите библиотеку с http://www.reportlab.org/downloads.html. Руководство пользователя (доступное только в виде PDF) на http://www.reportlab.org/rsrc/userguide.pdf содержит дополнительные инструкции по установке.
ЗамечаниеПри использовании современного дистрибутива Linux, вы можете проверить наличие этой библиотеки в репозиториях операционной системы. Большинство репозиториев содержит данную библиотеку. Например, если вы используете (обалденный) дистрибутив Ubuntu, установка библиотеки крайне проста: apt-get install python-reportlab
Проверьте установку с помощью импортирования библиотеки в интерактивном интерпретаторе Python: >>> import reportlab
Если эта команда не вызывает никаких ошибок, значит установка библиотеки прошла успешно. Аналогично случаю с CSV, динамическое создание PDF объектов с помощью Django является несложным, по причине того, что API библиотеки ReportLab работает как файлоподобный объект. Ниже представлен пример «Hello World»: from reportlab.pdfgen import canvas
from django.http import HttpResponse
def hello_pdf(request):
# Создаём объект HttpResponse с соответствующим PDF заголовком.
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=hello.pdf'
# Создаём объект PDF, используя объект HttpResponse как файл.
p = canvas.Canvas(response)
# Выводим в PDF необходимую информацию. Вот так создаются PDF.
# Обратитесь к документации на ReportLab для подробностей.
p.drawString(100, 100, "Hello world.")
# Явно закрываем объект PDF.
p.showPage()
p.save()
return response
А теперь несколько замечаний:
Если вы создаёте сложный PDF документ (или любой большой объём данных), рассмотрите возможность использования библиотеки cStringIO в качестве временного хранилища для вашего PDF файла. Библиотека cStringIO предоставляет файлоподобный интерфейс, который написан на языке C для достижения максимальной эффективности. Перепишем предыдущий «Hello World» пример, используя библиотеку cStringIO: from cStringIO import StringIO
from reportlab.pdfgen import canvas
from django.http import HttpResponse
def hello_pdf(request):
# Создаём объект HttpResponse с соответствующим PDF заголовком.
response = HttpResponse(mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=hello.pdf'
temp = StringIO()
# Создаём объект PDF, используя объект StringIO как файл.
p = canvas.Canvas(temp)
# Выводим в PDF необходимую информацию. Здесь генерируется содержимое PDF.
# Обратитесь к документации на ReportLab для подробностей.
p.drawString(100, 100, "Hello world.")
# Явно закрываем объект PDF.
p.showPage()
p.save()
# Получаем данные из буфера StringIO и пишем отклик.
response.write(temp.getvalue())
return response
|
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
1049
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |