Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

1

Share

Download to read offline

Python&Printer / Андрей Пучко / penta.by

Download to read offline

Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Python&Printer / Андрей Пучко / penta.by

  1. 1. Python & Printer Вывод на печать из программ на Python Андрей Пучко www.penta.by penta@penta.by http:/www.penta.by/downloads/pythonprint.pdf
  2. 2. Печать?
  3. 3. PDF XLS DOCODT ODS DOCX TXT HTML RTF
  4. 4. TXT HTML RTF TeX DOCX XLSX ODT ODS TXT (XML) Шаблон Конвертер Документ
  5. 5. Portable Document Format межплатформенный формат электронных документов, разработанный фирмой Adobe Systems (1993) с использованием ряда возможностей языка PostScript. PDF
  6. 6. ReportLab downloaded by at least 50,000 developers per month
  7. 7. from reportlab.pdfgen import canvas from reportlab.pdfbase import pdfmetrics from 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()
  8. 8. from reportlab.lib.enums import TA_JUSTIFY from reportlab.lib.pagesizes import letter, landscape from reportlab.lib.enums import TA_JUSTIFY from reportlab.lib.pagesizes import letter from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Image from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from 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>&bull;</bullet>Some Text' Story.append(Paragraph(ptext, styles["Bullet"])) doc.build(Story) Platypus Page Layout and Typography Using Scripts
  9. 9. RML Report Markup Language is an XML-style language for describing the layout of documents. $$$$$$$$$ ReportLab PLUS
  10. 10. PyQt PySide
  11. 11. 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()
  12. 12. 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
  13. 13. plaintext Plain text HTML HyperText Markup Language ODF OpenDocument Format QTextDocumentWriter
  14. 14. 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.
  15. 15. OpenDocument
  16. 16. pod (python open document)
  17. 17. odoo
  18. 18. odfpy 0.9.6
  19. 19. python-docx
  20. 20. RTF Rich Text Format межплатформенный формат хранения размеченных текстовых документов, предложенный группами программистов, основавшими компании Microsoft и Adobe (1982)
  21. 21. {rtf1 Привет! par {i Это} некий отформатированный {b текст}.par End }
  22. 22. Привет! Это некий отформатированный текст. End
  23. 23. PyRTF 0.45 :(
  24. 24. Excel (XLS) xlrd xlwt
  25. 25. import xlwt from datetime import datetime font0 = xlwt.Font() font0.name = 'Times New Roman' font0.colour_index = 2 font0.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')
  26. 26. ODS
  27. 27. HTML XML PDF
  28. 28. pisa Easy integration into Python frameworks like CherryPy, KID Templating, TurboGears, Django, Zope, Plone, Google AppEngine
  29. 29. ● jXLS ● OpenReport ● OpenReports ● Pentaho ● POI ● BIRT ● DataVision ● Jacob ● JasperReports ● Jedox ● JFreeReport
  30. 30. WTF?
  31. 31. 1993
  32. 32. Отчеты для Python WYSIWYG редактор и мультиформатный генератор PentaReport Андрей Пучко penta@penta.by www.penta.by
  33. 33. Редактор
  34. 34. Секции отчета и их роли секция без привязки к источнику данных PageHeader - колонтитул верхний PageFooter - колонтитул нижний Detail - секция, привязанная к источнику данных TableHeader - заголовок таблицы TableTotal - итог таблицы GroupHeader - заголовок группировки GroupTotal - итог группировки
  35. 35. Ширина колонок ● 1.5 - фиксированный размер ● 40% - от оставшегося свободного пространства ● пусто - свободное пространство распределяется поровну между такими колонками
  36. 36. Высота строк ● фиксированное значение ● по содержимому строки ● по содержимому строки, но не менее ● не более
  37. 37. Объединение ячеек
  38. 38. Панель атрибутов Наследование атрибутов: отчет-секция-ячейка Например - изменение шрифта отчета применяется ко всем ячейкам (кроме измененных)
  39. 39. Строка редактирования ячейки
  40. 40. Редактирование содержимого ячейки в построителе выражений
  41. 41. Использование разметки HTML и вызов функций Python Программый модуль отчета
  42. 42. Источники данных
  43. 43. Панель команд для интерактивной отладки
  44. 44. Встроенный просмотрщик
  45. 45. Ограничения для XLS Автоматическое разбиение на листы, если колонки в секциях имеют разные размеры
  46. 46. Формат хранения макета - XML
  47. 47. Запуск отчета
  48. 48. Программное формирование отчета
  49. 49. Видео процесса создания отчета http://penta.by/?p=139
  • CaptSolo

    Dec. 20, 2014

Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.

Views

Total views

1,706

On Slideshare

0

From embeds

0

Number of embeds

8

Actions

Downloads

34

Shares

0

Comments

0

Likes

1

×