[reportlab-users] Paragraph problem and table trouble

Shayan Raghavjee reportlab-users@reportlab.com
Mon, 03 Nov 2003 14:09:49 +0200


This is a multi-part message in MIME format.
--------------090301010501010103030403
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi again,

I've got what I thought was a problem with the vertical alignment in the 
table, but it seems that it's got more to do with the paragraph.

I've got a small paragraph, usually 1 word, with point size about 24. It 
looks fine on it's own, but when I put it in a table with the cells 
aligned to the bottom, the text constantly is too low, and 'leaks' into 
the cell below, despite the fact that there's plenty of place on the 
top. I noticed that if I set the background colour to something like 
blue, the space it takes up is far less than the size of the text in it. 
And that the top of the text is in vertically in the middle of the 
paragraph.

I've added the following styles to the sample sheet:
       self.stylesheet.add(styles.ParagraphStyle(name='defaultStyle',
                                 parent=self.stylesheet['Normal'],
                                 backColor=colors.blue,
                                 alignment=TA_CENTER,
                                 spaceAfter=0),
                  alias='ticketstyle')

       self.stylesheet.add(styles.ParagraphStyle(name='Barcode',
                                 parent=self.stylesheet['Normal'],
                                 fontName = 'Barcode',
                                 fontSize = 18,
                                 backColor=colors.blue,
                                 alignment=TA_CENTER,
                                 spaceAfter=0),
                  alias='barcode')

       self.stylesheet.add(styles.ParagraphStyle(name='defaultHeaderStyle',
                                 parent=self.stylesheet['Normal'],
                                 fontName = 'Times-Bold',
                                 fontSize=18,
                                 backColor=colors.blue,
                                 alignment=TA_CENTER,
                                 spaceAfter=0),
                  alias='ticketheader')

The style I've used for the table:
def LargeTableStyle():
   return TableStyle([ #\
           ('GRID',         (0,0), (-1,-1), 0.5, colors.black), \
           ('VALIGN',     (0,0), (-1,-1), 'MIDDLE'), \
       ])

The code I've used to generate the table:
tableBlock = [[Paragraph(ticketData['ARTICLE'], 
self.stylesheet['Barcode']),               
Paragraph(ticketData['DESCRIPTION'],self.stylesheet['defaultHeaderStyle'])], 
\
             
[Paragraph(ticketData['ARTICLE'],self.stylesheet['defaultHeaderStyle']),   
              
Paragraph(ticketData['COL'],self.stylesheet['defaultHeaderStyle'])]]
          tBlock0 = Table(tableBlock, style=LargeTableStyle(), colWidths 
= [8*cm, 8*cm], rowHeights=[10*mm, 10*mm], repeatRows=0)
tBlock0.hAlign = "LEFT"
Story.append(tBlock0)

And I've attached what comes out.

I've got a small question about tables too, mine don't seem to be 
calculating the size of the cell properly when I add a paragraph, or, 
actually, if I think about it, it may be calculating the size fine, but 
it would tie in to the problem I've mentioned above.

Thanks for any help,
Shayan

--------------090301010501010103030403
Content-Type: application/pdf;
 name="ticketprint.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="ticketprint.pdf"

CiAgICAgIDxodG1sPgogICAgICA8aGVhZD4KICAgICAgPHRpdGxlPkZhbGtlIFRpY2tldCBN
YW5hZ2VtZW50PC90aXRsZT4KICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+CiAgICAgIDxMSU5L
IFJFTD0ic3R5bGVzaGVldCIgVFlQRT0idGV4dC9jc3MiIEhSRUY9Ii9jc3MvZGVmYXVsdC5j
c3MiPgogICAgICA8TElOSyBSRUw9InN0eWxlc2hlZXQiIFRZUEU9InRleHQvY3NzIiBIUkVG
PSIvY3NzL3BsYWlubGlua3MuY3NzIj4KICAgICAgPC9oZWFkPjxib2R5IGJnY29sb3I9IiNm
ZmZmZmYiPgogICAgICA8aDE+RmFsa2UgVGlja2V0IE1hbmFnZW1lbnQ8L2gxPiVQREYtMS4z
DQolk4yLniBSZXBvcnRMYWIgR2VuZXJhdGVkIFBERiBkb2N1bWVudCBodHRwOi8vd3d3LnJl
cG9ydGxhYi5jb20NCiUgJ0Jhc2ljRm9udHMnOiBjbGFzcyBQREZEaWN0aW9uYXJ5IA0KMSAw
IG9iag0KJSBUaGUgc3RhbmRhcmQgZm9udHMgZGljdGlvbmFyeQ0KPDwgL0YxIDIgMCBSDQog
L0YyIDMgMCBSDQogL0YzKzAgOSAwIFINCiAvRjQgNCAwIFIgPj4NCmVuZG9iag0KJSAnRjEn
OiBjbGFzcyBQREZUeXBlMUZvbnQgDQoyIDAgb2JqDQolIEZvbnQgSGVsdmV0aWNhDQo8PCAv
QmFzZUZvbnQgL0hlbHZldGljYQ0KIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nDQogL05h
bWUgL0YxDQogL1N1YnR5cGUgL1R5cGUxDQogL1R5cGUgL0ZvbnQgPj4NCmVuZG9iag0KJSAn
RjInOiBjbGFzcyBQREZUeXBlMUZvbnQgDQozIDAgb2JqDQolIEZvbnQgVGltZXMtUm9tYW4N
Cjw8IC9CYXNlRm9udCAvVGltZXMtUm9tYW4NCiAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGlu
Zw0KIC9OYW1lIC9GMg0KIC9TdWJ0eXBlIC9UeXBlMQ0KIC9UeXBlIC9Gb250ID4+DQplbmRv
YmoNCiUgJ0Y0JzogY2xhc3MgUERGVHlwZTFGb250IA0KNCAwIG9iag0KJSBGb250IFRpbWVz
LUJvbGQNCjw8IC9CYXNlRm9udCAvVGltZXMtQm9sZA0KIC9FbmNvZGluZyAvV2luQW5zaUVu
Y29kaW5nDQogL05hbWUgL0Y0DQogL1N1YnR5cGUgL1R5cGUxDQogL1R5cGUgL0ZvbnQgPj4N
CmVuZG9iag0KJSAnUGFnZTEnOiBjbGFzcyBQREZQYWdlIA0KNSAwIG9iag0KJSBQYWdlIGRp
Y3Rpb25hcnkNCjw8IC9Db250ZW50cyAxMyAwIFINCiAvTWVkaWFCb3ggWyAwDQogIDANCiAg
NTk1LjI3NTU5MDU1MQ0KICA4NDEuODg5NzYzNzggXQ0KIC9QYXJlbnQgMTIgMCBSDQogL1Jl
c291cmNlcyA8PCAvRm9udCAxIDAgUg0KICAvUHJvY1NldCBbIC9QREYNCiAgIC9UZXh0DQog
ICAvSW1hZ2VCDQogICAvSW1hZ2VDDQogICAvSW1hZ2VJIF0gPj4NCiAvUm90YXRlIDANCiAv
VHJhbnMgPDwgID4+DQogL1R5cGUgL1BhZ2UgPj4NCmVuZG9iag0KJSAndG9Vbmljb2RlQ01h
cDpTVUJTRVQrRmVsaXhUaXRsaW5nTVQrMCc6IGNsYXNzIFBERlN0cmVhbSANCjYgMCBvYmoN
Cjw8IC9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQ0KIC9MZW5ndGggMjY2ID4+DQpzdHJlYW0N
CnicfZHLToQwFIb3fYouNbNogVGZhLDQGRMWo0bwATrtAZtAaUpJ5O3ltOOYmDiLNt+5/Dk3
9lTtK6M9ZW9ulDV42mqjHEzj7CTQE3TakCSlSkt/tsIvB2EJW8X1MnkYKtOOpCgoe1+Dk3cL
vak/HutDs3mGXn812vfadMdmw28Je3UK3Gpey6lna3sYwHjKSVlSBe1a7ijsixiAsn+Ev2nN
YoGmwU5i33JUMFkhwQnTASk4L2nB85KAUX9iu6g4tfJTuJ9Mnu3KlZPIW+Q0co6cBU73yNvo
58h30X9Avo/+BPkhcoqcR85CL+eq2BXu+DKznJ1b1xEOEUbE4bSBy63saFGF7xvpKI5dZW5k
c3RyZWFtDQoNCmVuZG9iag0KJSAnZm9udEZpbGU6QzpcXFdJTkRPV1NcXEZvbnRzXFxGRUxJ
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
YXBIZWlnaHQgNzE5DQogL0Rlc2NlbnQgMA0KIC9GbGFncyA0DQogL0ZvbnRCQm94IFsgLTE4
MQ0KICAtMjQyDQogIDExNDcNCiAgOTI4IF0NCiAvRm9udEZpbGUyIDcgMCBSDQogL0ZvbnRO
YW1lIC9TVUJTRVQrRmVsaXhUaXRsaW5nTVQrMA0KIC9JdGFsaWNBbmdsZSAwLjANCiAvU3Rl
bVYgODcNCiAvVHlwZSAvRm9udERlc2NyaXB0b3IgPj4NCmVuZG9iag0KJSAnRjMrMCc6IGNs
YXNzIFBERlRydWVUeXBlRm9udCANCjkgMCBvYmoNCiUgRm9udCBCYXJjb2RlIHN1YnNldCAw
DQo8PCAvQmFzZUZvbnQgL1NVQlNFVCtGZWxpeFRpdGxpbmdNVCswDQogL0ZpcnN0Q2hhciAw
DQogL0ZvbnREZXNjcmlwdG9yIDggMCBSDQogL0xhc3RDaGFyIDgNCiAvTmFtZSAvRjMrMA0K
IC9TdWJ0eXBlIC9UcnVlVHlwZQ0KIC9Ub1VuaWNvZGUgNiAwIFINCiAvVHlwZSAvRm9udA0K
IC9XaWR0aHMgWyA1ODINCiAgNTQxDQogIDU4Mg0KICAyNTANCiAgNTgyDQogIDE2Ng0KICAy
NTkNCiAgNTQxDQogIDU2MiBdID4+DQplbmRvYmoNCiUgJ1IxMCc6IGNsYXNzIFBERkNhdGFs
b2cgDQoxMCAwIG9iag0KJSBEb2N1bWVudCBSb290DQo8PCAvT3V0bGluZXMgMTQgMCBSDQog
L1BhZ2VNb2RlIC9Vc2VOb25lDQogL1BhZ2VzIDEyIDAgUg0KIC9UeXBlIC9DYXRhbG9nID4+
DQplbmRvYmoNCiUgJ1IxMSc6IGNsYXNzIFBERkluZm8gDQoxMSAwIG9iag0KPDwgL0F1dGhv
ciAoYW5vbnltb3VzKQ0KIC9DcmVhdGlvbkRhdGUgKDIwMDMxMTAzMTQwMzUzKQ0KIC9Qcm9k
dWNlciAoUmVwb3J0TGFiIGh0dHA6Ly93d3cucmVwb3J0bGFiLmNvbSkNCiAvU3ViamVjdCAo
dW5zcGVjaWZpZWQpDQogL1RpdGxlICh1bnRpdGxlZCkgPj4NCmVuZG9iag0KJSAnUjEyJzog
Y2xhc3MgUERGUGFnZXMgDQoxMiAwIG9iag0KJSBwYWdlIHRyZWUNCjw8IC9Db3VudCAyDQog
L0tpZHMgWyA1IDAgUg0KICAxNSAwIFIgXQ0KIC9UeXBlIC9QYWdlcyA+Pg0KZW5kb2JqDQol
ICdSMTMnOiBjbGFzcyBQREZTdHJlYW0gDQoxMyAwIG9iag0KJSBwYWdlIHN0cmVhbQ0KPDwg
L0ZpbHRlciBbIC9BU0NJSTg1RGVjb2RlDQogIC9GbGF0ZURlY29kZSBdDQogL0xlbmd0aCA1
NDIgPj4NCnN0cmVhbQ0KR2IhPEw5MkVHWiUiUmYzcUIoK0dUazpTJG0jYiFOIk00WXJcOFhg
TTZVUFonJSNNX3BnODQmRlE+JSFLDQpmI2ozOmZNO0B0ZUldNj9aMkIkPDZmMTFKTGsjVkck
N007RjJoRlxoLTZIclJOMGIoRVE0Z1lgMHFENycNCiFYb1o+PmlgY3NdXidnUDhYIj02PDo2
cklENypcdFZvYltpO1MjSV4jSDdpKTtAJS51YmpZJkojYCkqag0KNT9iUFAydE9NIiJSaldn
cFdIP3UkKXNhVjomaW9lIWYvWmgjLjlWUiw8IWNqLE9UXlZySHE+J1pDcUM8DQpOQ0AyJy9l
Mlo3ViRQPFtrMVppOFs2JnR0OTY8JUdyLGRYXWxNR3MoQCFZaz5bOCUnb0tNbyVDZWdfZiMN
CkdCMDkrQjMmMi8paVxmSD9iU01vMSVtTystVm4oPUpqSUo5bjAzS2pLc19FITY4cVtbSCEn
KVVcMlNBPg0KT0VJMSYhNT5MS2cnOUQ/V2xZKjpkKFEuLiFMK2s5N1ZsUW8pKk8kblA4MVVM
QFBNKidALzlLJz5YV1xpDQowYUZKM1FhQDBcK0w5Jis5YktmQj5NTzc7YkJWO2ZqO0E3Vmxa
KTdfczMlbm0sO28kNlNNO14yIlkmWk8NCmowYUxKcVAvdGJEKjtbKiZOLiQiYGldNkxfam9z
aDBBNi44Tz0hMldXLEMmfj5lbmRzdHJlYW0NCg0KZW5kb2JqDQolICdSMTQnOiBjbGFzcyBQ
REZPdXRsaW5lcyANCjE0IDAgb2JqDQo8PCAvQ291bnQgMA0KIC9UeXBlIC9PdXRsaW5lcyA+
Pg0KZW5kb2JqDQolICdQYWdlMic6IGNsYXNzIFBERlBhZ2UgDQoxNSAwIG9iag0KJSBQYWdl
IGRpY3Rpb25hcnkNCjw8IC9Db250ZW50cyAxNiAwIFINCiAvTWVkaWFCb3ggWyAwDQogIDAN
CiAgNTk1LjI3NTU5MDU1MQ0KICA4NDEuODg5NzYzNzggXQ0KIC9QYXJlbnQgMTIgMCBSDQog
L1Jlc291cmNlcyA8PCAvRm9udCAxIDAgUg0KICAvUHJvY1NldCBbIC9QREYNCiAgIC9UZXh0
DQogICAvSW1hZ2VCDQogICAvSW1hZ2VDDQogICAvSW1hZ2VJIF0gPj4NCiAvUm90YXRlIDAN
CiAvVHJhbnMgPDwgID4+DQogL1R5cGUgL1BhZ2UgPj4NCmVuZG9iag0KJSAnUjE2JzogY2xh
c3MgUERGU3RyZWFtIA0KMTYgMCBvYmoNCiUgcGFnZSBzdHJlYW0NCjw8IC9GaWx0ZXIgWyAv
QVNDSUk4NURlY29kZQ0KICAvRmxhdGVEZWNvZGUgXQ0KIC9MZW5ndGggNjAgPj4NCnN0cmVh
bQ0KR2FwUWgwRT1GLDBVXEgzaSJWb1ltcS9NK0JWWjMmVkk0KTNCOyxzc1VZbSctYkdFInQi
VFopdCNXX34+ZW5kc3RyZWFtDQoNCmVuZG9iag0KeHJlZg0KMCAxNw0KMDAwMDAwMDAwMCA2
NTUzNSBmDQowMDAwMDAwMTEzIDAwMDAwIG4NCjAwMDAwMDAyNDcgMDAwMDAgbg0KMDAwMDAw
MDQxMiAwMDAwMCBuDQowMDAwMDAwNTgxIDAwMDAwIG4NCjAwMDAwMDA3NDYgMDAwMDAgbg0K
MDAwMDAwMTA4MCAwMDAwMCBuDQowMDAwMDAxNTE5IDAwMDAwIG4NCjAwMDAwMDUxMTAgMDAw
MDAgbg0KMDAwMDAwNTM3NiAwMDAwMCBuDQowMDAwMDA1NjgzIDAwMDAwIG4NCjAwMDAwMDU4
MjEgMDAwMDAgbg0KMDAwMDAwNjAxOSAwMDAwMCBuDQowMDAwMDA2MTM2IDAwMDAwIG4NCjAw
MDAwMDY4MjUgMDAwMDAgbg0KMDAwMDAwNjkwNCAwMDAwMCBuDQowMDAwMDA3MjA1IDAwMDAw
IG4NCnRyYWlsZXINCjw8IC9JRCANCiAgJSBSZXBvcnRMYWIgZ2VuZXJhdGVkIFBERiBkb2N1
bWVudCAtLSBkaWdlc3QgKGh0dHA6Ly93d3cucmVwb3J0bGFiLmNvbSkgDQogIFsoY1wyNTNT
ZVwzMTRcMzU1XDMxNlwzNDJcMDMyXDM1M1wzNDRcMjY1cFwwMDJuXDIxMykgKGNcMjUzU2Vc
MzE0XDM1NVwzMTZcMzQyXDAzMlwzNTNcMzQ0XDI2NXBcMDAyblwyMTMpXSANCiANCiAvSW5m
byAxMSAwIFINCiAvUm9vdCAxMCAwIFINCiAvU2l6ZSAxNyA+Pg0Kc3RhcnR4cmVmDQo3Mzgy
DQolJUVPRg0KPC9ib2R5PgogICAgICA8L2h0bWw+CiAgICAgIA==
--------------090301010501010103030403--