Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
5. Portable Document Format
межплатформенный формат
электронных документов,
разработанный фирмой Adobe Systems
(1993) с использованием ряда
возможностей языка PostScript.
PDF
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. 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>•</bullet>Some Text'
Story.append(Paragraph(ptext, styles["Bullet"]))
doc.build(Story)
Platypus
Page
Layout and
Typography
Using
Scripts
15. 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.
22. RTF
Rich Text Format
межплатформенный формат хранения
размеченных текстовых документов,
предложенный группами программистов,
основавшими компании Microsoft и Adobe
(1982)
41. Секции отчета и их роли
секция без привязки к источнику данных
PageHeader - колонтитул верхний
PageFooter - колонтитул нижний
Detail - секция, привязанная к источнику
данных
TableHeader - заголовок таблицы
TableTotal - итог таблицы
GroupHeader - заголовок группировки
GroupTotal - итог группировки
42. Ширина колонок
● 1.5 - фиксированный размер
● 40% - от оставшегося свободного пространства
● пусто - свободное пространство распределяется
поровну между такими колонками