Удаление скругленной границы из строки таблицы в ReportLab - PullRequest
0 голосов
/ 13 сентября 2018

Я знаю, что в ReportLab есть опции для округления строк с их настройками 'linejoin' и 'linecap'.

Для таблицы команды LINEBEFORE или LINEAFTER поместят горизонтальную линию, разделяющую две колонки в вашей таблице.

Есть ли способ сделать эту линию без закругленных краев?По умолчанию это закругленные края.

Этот код создаст пример таблицы.Как я могу сделать эту красную вертикальную линию прямоугольником без закругленных краев?Или решение заключается в добавлении тонкого столбца между столбцами и заполнении его красным.

from reportlab.lib import colors
from reportlab.lib.pagesizes import letter, inch
from reportlab.platypus import Image, Paragraph, SimpleDocTemplate, Table
from reportlab.lib.styles import getSampleStyleSheet

doc = SimpleDocTemplate("delete_me.pdf", pagesize=letter)
# container for the 'Flowable' objects
elements = []

styleSheet = getSampleStyleSheet()


P0 = Paragraph('''
               <b>A pa<font color=red>r</font>a<i>graph</i></b>
               <super><font color=yellow>1</font></super>''',
               styleSheet["BodyText"])
P = Paragraph('''
    <para align=center spaceb=3>The <b>ReportLab Left
    <font color=red>Logo</font></b>
    Image</para>''',
    styleSheet["BodyText"])
data= [['A', 'B', 'C', P, 'D'],
       ['00', '01', '02', P, '04'],
       ['10', '11', '12', P, '14'],
       ['20', '21', '22', '23', '24'],
       ['30', '31', '32', '33', '34']]

t=Table(data,style=[('LINEBEFORE',(2,1),(2,-2),6,colors.pink)]
)
t._argW[3]=1.5*inch

elements.append(t)
# write the document to disk
doc.build(elements)

1 Ответ

0 голосов
/ 14 сентября 2018

Это не идеальный ответ, но если сделать несколько тонких ячеек слева и заполнить их, то получится

from reportlab.lib import colors
from reportlab.lib.pagesizes import letter, inch
from reportlab.platypus import Image, Paragraph, SimpleDocTemplate, Table
from reportlab.lib.styles import getSampleStyleSheet

doc = SimpleDocTemplate("delete_me.pdf", pagesize=letter)
# container for the 'Flowable' objects
elements = []

styleSheet = getSampleStyleSheet()


P0 = Paragraph('''
               <b>A pa<font color=red>r</font>a<i>graph</i></b>
               <super><font color=yellow>1</font></super>''',
               styleSheet["BodyText"])
P = Paragraph('''
    <para align=center spaceb=3>The <b>ReportLab Left
    <font color=red>Logo</font></b>
    Image</para>''',
    styleSheet["BodyText"])
data= [['A', 'B', 'C', P, 'D'],
       ['00', '01', '02', P, '04'],
       ['10', '11', '12', P, '14'],
       ['20', '21', '22', '23', '24'],
       ['30', '31', '32', '33', '34']]

for i in range(len(data)): # Create slim invisible column
    data[i] = [' '] + data[i]

t=Table(data,style=[
         ('BACKGROUND', (0,1), (0,-2), colors.pink),
        ('LINEBEFORE',(2,1),(2,-2),6,colors.pink)
])
t._argW[3]=1.5*inch

elements.append(t)
# write the document to disk
doc.build(elements)

Конечно, вам придется настроить ширину столбцов

...