Python&Printer / Андрей Пучко / penta.by
-
Upload
python-meetup -
Category
Software
-
view
501 -
download
5
Transcript of Python&Printer / Андрей Пучко / penta.by
Python & Printer
Вывод на печать из программ на Python
Андрей Пучкоwww.penta.by
http:/www.penta.by/downloads/pythonprint.pdf
Печать?
XLS DOCODT
ODS
DOCX
TXT
HTML RTF
TXT HTMLRTFTeXDOCXXLSXODTODS
TXT (XML) Шаблон
Конвертер
Документ
Portable Document Formatмежплатформенный формат электронных документов, разработанный фирмой Adobe Systems (1993) с использованием ряда возможностей языка PostScript.
ReportLab downloaded by at least 50,000 developers per month
from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetricsfrom reportlab.pdfbase import ttfonts
MyFontObject = ttfonts.TTFont('Arial', ‘arial.ttf’)pdfmetrics.registerFont(MyFontObject)
MyCanvas = canvas.Canvas(“hello.pdf”)MyCanvas .setFont(“Arial”, 40)MyCanvas .drawString(200,400,“Привет Мир”)MyCanvas .save()
from reportlab.lib.enums import TA_JUSTIFYfrom reportlab.lib.pagesizes import letter, landscape from reportlab.lib.enums import TA_JUSTIFYfrom reportlab.lib.pagesizes import letterfrom reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Imagefrom reportlab.lib.styles import getSampleStyleSheet, ParagraphStylefrom reportlab.lib.units import inch doc = SimpleDocTemplate("form_letter.pdf",pagesize=landscape(letter), rightMargin=72,leftMargin=72, topMargin=72,bottomMargin=18) styles = getSampleStyleSheet()styles.add(ParagraphStyle(name='Justify', alignment=TA_JUSTIFY)) Story=[]logo = "image.png" # We really want to scale the image to fit in a box and keep proportions.im = Image(logo, 3*inch, 3*inch)Story.append(im) ptext = '''<seq>. </seq>Some Text<br/><seq>. </seq>Some more test Text'''Story.append(Paragraph(ptext, styles["Bullet"])) ptext='<bullet>•</bullet>Some Text'Story.append(Paragraph(ptext, styles["Bullet"])) doc.build(Story)
PlatypusPage Layout and Typography Using Scripts
RMLReport Markup Language
is an XML-style language for describing the layout of documents.
$$$$$$$$$
ReportLab PLUS
PyQtPySide
printer = QPrinter(QPrinter.HighResolution) printer.setOutputFileName('test.pdf') printer.setPaperSize(QPrinter.A4) printer.setOrientation(QPrinter.Landscape) painter = QPainter(printer) rect = QRect(100, 100, printer.width() - 200, 200) painter.fillRect(rect, Qt.red) painter.drawText(rect, Qt.AlignCenter, "Draw on QPainter!") painter.end()
printer = QPrinter()printer.setOutputFormat(QPrinter.PdfFormat)printer.setOutputFileName(filename)painter=QPainter()painter.begin(printer)document.QTextDocument()document.setHtml(“Hello, world”)document.drawContents(painter,QRectF(1,1,0,10))painter.end()
QTextDocument
plaintext Plain text
HTML HyperText Markup Language
ODF OpenDocument Format
QTextDocumentWriter
Since the capabilities of the supported output formats vary considerably, the writer simply outputs the appropriate subset of objects for each format. This typically includes the formatted text and images contained in a document.
OpenDocument
pod (python open document)
odoo
odfpy 0.9.6
RTFRich Text Formatмежплатформенный формат хранения размеченных текстовых документов, предложенный группами программистов, основавшими компании Microsoft и Adobe(1982)
{\rtf1 Привет! \par {\i Это} некий отформатированный {\b текст}.\par End}
Привет!Это некий отформатированный текст.End
PyRTF 0.45
:(
Excel (XLS)
xlrd xlwt
import xlwtfrom datetime import datetime
font0 = xlwt.Font()font0.name = 'Times New Roman'font0.colour_index = 2font0.bold = True
style0 = xlwt.XFStyle()style0.font = font0
style1 = xlwt.XFStyle()style1.num_format_str = 'D-MMM-YY'
wb = xlwt.Workbook()ws = wb.add_sheet('A Test Sheet')
ws.write(0, 0, 'Test', style0)ws.write(1, 0, datetime.now(), style1)ws.write(2, 0, 1)ws.write(2, 1, 1)ws.write(2, 2, xlwt.Formula("A3+B3"))
wb.save('example.xls')
ODS
HTMLXML PDF
pisaEasy integration into Python frameworks like CherryPy, KID Templating, TurboGears, Django, Zope, Plone, Google AppEngine
● jXLS● OpenReport● OpenReports● Pentaho● POI
● BIRT● DataVision● Jacob● JasperReports● Jedox● JFreeReport
WTF?
1993
Отчеты для Python
WYSIWYG редактор и мультиформатный генератор PentaReport
Андрей Пучко[email protected]
www.penta.by
Редактор
Секции отчета и их роли
секция без привязки к источнику данныхPageHeader - колонтитул верхний PageFooter - колонтитул нижнийDetail - секция, привязанная к источнику данныхTableHeader - заголовок таблицыTableTotal - итог таблицыGroupHeader - заголовок группировкиGroupTotal - итог группировки
Ширина колонок
● 1.5 - фиксированный размер● 40% - от оставшегося свободного пространства● пусто - свободное пространство распределяется
поровну между такими колонками
Высота строк
● фиксированное значение● по содержимому строки● по содержимому строки, но не
менее● не более
Объединение ячеек
Панель атрибутов
Наследование атрибутов:отчет-секция-ячейка
Например - изменение шрифта отчета применяется ко всем ячейкам (кроме измененных)
Строка редактирования ячейки
Редактирование содержимого ячейки в построителе выражений
Использование разметки HTML и вызов функций Python
Программый модуль отчета
Источники данных
Панель команд для интерактивной отладки
Встроенный просмотрщик
Ограничения для XLS
Автоматическое разбиение на листы, если колонки в секциях имеют разные размеры
Формат хранения макета - XML
Запуск отчета
Программное формирование отчета
Видео процесса создания отчета
http://penta.by/?p=139