ALEXANDAR_GEORGIEV

Paragraph_settings

Jul 7th, 2022 (edited)
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.49 KB | None | 0 0
  1. from reportlab.lib import colors
  2. from reportlab.lib.colors import *
  3. from reportlab.lib.pagesizes import A4
  4. from reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph
  5. from reportlab.lib.styles import ParagraphStyle, TA_LEFT, ListStyle, TA_CENTER
  6. from reportlab.lib.enums import TA_RIGHT, TA_CENTER
  7.  
  8. from reportlab.pdfgen.canvas import Canvas
  9. from reportlab.pdfbase import pdfmetrics
  10. from reportlab.pdfbase.ttfonts import TTFont
  11. from reportlab.lib.styles import getSampleStyleSheet
  12. # ['Courier', 'Courier-Bold', 'Courier-BoldOblique', 'Courier-Oblique',
  13. # 'Helvetica', 'Helvetica-Bold', 'Helvetica-BoldOblique', 'Helvetica-Oblique',
  14. # 'Symbol',
  15. # 'Times-Roman', 'Times-Bold', 'Times-BoldItalic', 'Times-Italic',
  16. # 'ZapfDingbats']
  17.  
  18. st_n9 = ParagraphStyle(
  19.     'st',
  20.     fontName='Times-Roman',
  21.     # parent='Times New Roman',
  22.     fontSize=9,
  23.     leading=8,      # Разстояние между редовете в параграфа
  24.     leftIndent=0,   # Отстъп на параграфа на дясно от лявата страна на клетката
  25.     rightIndent=0, # Отстъп на параграфа на ляво от дясната страна на клетката
  26.     firstLineIndent=0,     # Избутване на вътре на първия ред от параграфа
  27.     alignment=TA_LEFT,
  28.     spaceBefore=10,
  29.     spaceAfter=0,
  30.     # bulletFontName='Arial',
  31.     # bulletFontSize=10,
  32.     bulletIndent=0,
  33.     textColor=black,
  34.     backColor='yellow',
  35.     wordWrap=10,
  36.     borderWidth=0.2,
  37.     borderPadding=2,
  38.     borderColor='blue',
  39.     borderRadius=None,
  40.     allowWidows=0,
  41.     allowOrphans=0,
  42.     textTransform=None,  # 'uppercase' | 'lowercase' | None
  43.     endDots=None,
  44.     splitLongWords=1,
  45. )
  46. # ['Courier', 'Courier-Bold', 'Courier-BoldOblique', 'Courier-Oblique',
  47. # 'Helvetica', 'Helvetica-Bold', 'Helvetica-BoldOblique', 'Helvetica-Oblique',
  48. # 'Symbol',
  49. # 'Times-Roman', 'Times-Bold', 'Times-BoldItalic', 'Times-Italic',
  50. # 'ZapfDingbats']
  51.  
  52.  
  53. if __name__ == '__main__':
  54.  
  55.     balance = Canvas('Balance.pdf', pagesize=A4)  # balance е целият обект - pdf файла.
  56.     print(balance.getAvailableFonts())
  57.     pdfmetrics.registerFont(TTFont('Times', 'Times.ttf', 'UTF-8'))
  58.  
  59.     import codecs  # Python standard library
  60.  
  61.     codecs.encode("UTF-8")
  62.     # pdfmetrics.registerFont(TTFont('Times','Times.ttf', 'UTF-8'))
  63.     pdfmetrics.registerFont(TTFont('Timesbd','Timesbd.ttf', 'UTF-8'))
  64.     pdfmetrics.registerFont(TTFont('Timesbi','Timesbi.ttf', 'UTF-8'))
  65.     pdfmetrics.registerFont(TTFont('Timesi','Timesi.ttf', 'UTF-8'))
  66.  
  67.     data = [[Paragraph('<font face=Timesbi>Астрой</font>'), Paragraph('<para alignment="right"><font face=Timesbd>255</font></para>'),'255'],
  68.             [Paragraph('Астрой, Александ\nърхххххххььььхх, Астрой', st_n9), Paragraph('555'), '666'],
  69.             [Paragraph('<font face=Times>Астрой</font>'), '25', '889'],
  70.             [' '],
  71.             [' '],
  72.             ['Date: 19.06.2022g.']]
  73.     ts = TableStyle([
  74.         #('GRID', (1, 1), (-2, -2), 0, colors.black),    # Линия от ляво и дясно, без първи и последен ред
  75.        # ('BOX', (0, 0), (-1, -1), 0, colors.blue, None, (2, 2, 1)),   # Линия около цялата таблица
  76.         ('TOPPADDING', (0, 0), (-1, -1), 0),
  77.         ('BOTTOMPADDING', (0, 0), (-1, -1), 0),
  78.         ('LEFTPADDING', (0, 0), (1, 0), 0),
  79.         ('RIGHTPADDING', (0, 0), (-1, -1), 3),
  80.        # ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.red),  # Линии вътре в таблицата - решетка
  81.         ('LINEABOVE', (0, 0), (0, 2), 0.25, colors.black),    # Линия само отгоре на клетките
  82.         ('LINEBELOW', (0, 1), (0, 2), 2, colors.green),   # Линия само отдолу на клетките
  83.         ('LINEBEFORE', (0, 0), (0, -1), 0.5, colors.green),   # Линия само отдолу на клетките
  84.         ('LINEAFTER', (0, 0), (-1, -1), 0.25, colors.blue)   # Линия само отдолу на клетките
  85.     ])
  86.  
  87.     table = Table(data, colWidths=None, rowHeights=None, style=ts, splitByRow=1, repeatRows=0, repeatCols=0,
  88.                   rowSplitRange=None, spaceBefore=None, spaceAfter=None, cornerRadii=None)
  89.  
  90.     table.wrapOn(balance, 100, 600)     # Ширина, y
  91.     table.drawOn(balance, 300, 600)
  92.  
  93.     balance.showPage()  # saves current page
  94.     balance.save()  # stores the file and close the canvas
Add Comment
Please, Sign In to add comment