[reportlab-users] Table Height problem

Shayan Raghavjee reportlab-users@reportlab.com
Fri, 27 Aug 2004 17:03:28 +0200


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

Hi again,

Arr, I thought I had it sorted, but spanning is still giving me wierd 
results.

I've included a test case, and the pdf I get.

Thanks,
Shayan Raghavjee

andy@reportlab.com wrote:

> We need more information to reproduce this.  Can you send an output 
> file and/or some code examples?  The best of all would be a slimmed 
> down script which reproduces the problem, plus the PDF it produces.
>
> Best Regards,
>
> Andy Robinson
> CEO/Chief Architect
> RepoortLab Europe Ltd.
> tel +44 20 8544 8049
>
> -----Original Message-----
> From: Shayan Raghavjee <shayanr@sjsoft.com>
> To: reportlab-users@reportlab.com
> Sent: Wed, 25 Aug 2004 15:37:38 +0200
> Subject: [reportlab-users] Table Height problem
>
> Hi Guys,
>
> I haven't had a problem for quite a while, until now sadly.
>
> I'm using ReportLab via ModPython, (I don't think the problem has 
> anything to do with that though), and it's producing wierd tables. I'm 
> producing a set of tables, a print representation of an HTML form.
>
> Basically, there's code that calculates the table widths, which it 
> does fine, however the height of the rows is the problem. The 1st 2 
> rows are fine, the 3rd is a little smaller, just a little too small 
> for the text, and the rows after that are tiny. I don't have any code 
> that calculates the height of the rows, so I'm not quite sure where 
> it's gone wrong.
>
> I have noticed that it's only if I use a paragraph flowable, if I use 
> plaintext, it's fine.
>
> Any thoughts or suspicions?
>
> Thanks,
> Shayan Raghavjee
> St. James Software
> _______________________________________________
> reportlab-users mailing list
> reportlab-users@reportlab.com
> http://two.pairlist.net/mailman/listinfo/reportlab-users 
> _______________________________________________
> reportlab-users mailing list
> reportlab-users@reportlab.com
> http://two.pairlist.net/mailman/listinfo/reportlab-users
>

--------------080204000308060905080707
Content-Type: text/plain;
 name="PDFTest2.py"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="PDFTest2.py"

from reportlab.platypus import *
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib import colors
from reportlab.rl_config import defaultPageSize
from reportlab.lib.units import cm

from jToolkit.widgets import widgets
from jToolkit.widgets import table
from jLogbook.python import logform
from jLogbook.python import logreport
from jLogbook.python import logrecords
from jToolkit import attachments

tablestyle = [('BOX', (0, 0), (-1, -1), 0.25, colors.black),
              
              ('SPAN', (1, 2), (5, 6)),         #I work
              ('BACKGROUND', (1, 2), (5, 6), colors.orange),
              
              ('SPAN', (1, 7), (3, 8)),          #What's wrong with this????
              ('BACKGROUND', (1,7), (3,8), colors.blue),
              
              ('VALIGN', (0,0), (-1,-1), 'TOP'),
              ('GRID', (0,0), (-1,-1), 0.25, colors.pink)]


colwidths = [57.673228346456689,
             115.34645669291338,
             57.673228346456689,
             115.34645669291338,
             57.673228346456689,
             115.34645669291338,
             57.673228346456689,
             115.34645669291338]

tabledata = [
    ['Shift', 'This is a key used to generate capital, you can use caps lock. It also could mean a change of some sort.', 'Shift Super', 'Uber administrator de la Fuente', 'Supervisor In', 'A world of hurt, oh yeah! Ahahahaha', 'Date', 'Stardate 1234567890, Grendos IV Mean Time'],
    ['Area', 'dig', 'Site', 'Central', 'Attachment', '', 'Audit log', ''],
    ['Message', """We repeat this for the words 'Region', Product'
        and 'Total', which each span the top 2 rows; and for 'Nprth' and 'South'
        which span 3 rows.  At the moment each cell's alignment is the default
        (bottom), so these words appear to have "dropped down"; in fact they
        are sitting on the bottom of their allocated ranges.  You will just see that
        all the 'None' values vanished, as those cells are not drawn any more.""", '', '', '', '', 'Active Permits', 'Badges? Wee don need no steeking badges. Andele, Andele, Heppa, Heppa, Yeeehaaa!'],
    ['', '', '', '', '', '', '', ''],
    ['', '', '', '', '', '', '', ''],
    ['', '', '', '', '', '', '', ''],
    ['', '', '', '', '', '', '', ''],
    ['Maint Complete', """We repeat this for the words 'Region', Product'
        and 'Total', which each span the top 2 rows; and for 'Nprth' and 'South'
        which span 3 rows.  At the moment each cell's alignment is the default
        (bottom), so these words appear to have "dropped down"; in fact they
        are sitting on the bottom of their allocated ranges.  You will just see that
        all the 'None' values vanished, as those cells are not drawn any more.""", '', '', 'Maint On Going', '', '', ''],
    ['', '', '', '', '', '', '', ''],
    ['Process Shutdowns', '', '', '', 'Abnormal Operations', 'Ave!', '', ''],
    ['', '', '', '', '', '', '', '']]

testfile = "c:\\testme.pdf"

tableparagraphs = []
styles = getSampleStyleSheet()

for row in tabledata:
    tablerow = []
    for cell in row:
        tablerow.append(Paragraph(cell, styles["Normal"]))
    tableparagraphs.append(tablerow)

table = Table(tableparagraphs, style=tablestyle, repeatRows=1, colWidths=colwidths)

PAGE_HEIGHT = 21 * cm # defaultPageSize[1]
PAGE_WIDTH = 29.7 * cm # defaultPageSize[0]
doc = SimpleDocTemplate(filename=testfile,pagesize=(PAGE_WIDTH, PAGE_HEIGHT),\
                        leftMargin=2*cm,rightMargin=2*cm,topMargin=2*cm,bottomMargin=2*cm)
doc.build([table])
--------------080204000308060905080707
Content-Type: application/pdf;
 name="testme.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="testme.pdf"

JVBERi0xLjMNCiWTjIueIFJlcG9ydExhYiBHZW5lcmF0ZWQgUERGIGRvY3VtZW50IGh0dHA6
Ly93d3cucmVwb3J0bGFiLmNvbQ0KJSAnQmFzaWNGb250cyc6IGNsYXNzIFBERkRpY3Rpb25h
cnkgDQoxIDAgb2JqDQolIFRoZSBzdGFuZGFyZCBmb250cyBkaWN0aW9uYXJ5DQo8PCAvRjEg
MiAwIFINCiAvRjIgMyAwIFIgPj4NCmVuZG9iag0KJSAnRjEnOiBjbGFzcyBQREZUeXBlMUZv
bnQgDQoyIDAgb2JqDQolIEZvbnQgSGVsdmV0aWNhDQo8PCAvQmFzZUZvbnQgL0hlbHZldGlj
YQ0KIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nDQogL05hbWUgL0YxDQogL1N1YnR5cGUg
L1R5cGUxDQogL1R5cGUgL0ZvbnQgPj4NCmVuZG9iag0KJSAnRjInOiBjbGFzcyBQREZUeXBl
MUZvbnQgDQozIDAgb2JqDQolIEZvbnQgVGltZXMtUm9tYW4NCjw8IC9CYXNlRm9udCAvVGlt
ZXMtUm9tYW4NCiAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZw0KIC9OYW1lIC9GMg0KIC9T
dWJ0eXBlIC9UeXBlMQ0KIC9UeXBlIC9Gb250ID4+DQplbmRvYmoNCiUgJ1BhZ2UxJzogY2xh
c3MgUERGUGFnZSANCjQgMCBvYmoNCiUgUGFnZSBkaWN0aW9uYXJ5DQo8PCAvQ29udGVudHMg
OCAwIFINCiAvTWVkaWFCb3ggWyAwDQogIDANCiAgODQxLjg4OTgNCiAgNTk1LjI3NTYgXQ0K
IC9QYXJlbnQgNyAwIFINCiAvUmVzb3VyY2VzIDw8IC9Gb250IDEgMCBSDQogIC9Qcm9jU2V0
IFsgL1BERg0KICAgL1RleHQNCiAgIC9JbWFnZUINCiAgIC9JbWFnZUMNCiAgIC9JbWFnZUkg
XSA+Pg0KIC9Sb3RhdGUgMA0KIC9UcmFucyA8PCAgPj4NCiAvVHlwZSAvUGFnZSA+Pg0KZW5k
b2JqDQolICdSNSc6IGNsYXNzIFBERkNhdGFsb2cgDQo1IDAgb2JqDQolIERvY3VtZW50IFJv
b3QNCjw8IC9PdXRsaW5lcyA5IDAgUg0KIC9QYWdlTW9kZSAvVXNlTm9uZQ0KIC9QYWdlcyA3
IDAgUg0KIC9UeXBlIC9DYXRhbG9nID4+DQplbmRvYmoNCiUgJ1I2JzogY2xhc3MgUERGSW5m
byANCjYgMCBvYmoNCjw8IC9BdXRob3IgKGFub255bW91cykNCiAvQ3JlYXRpb25EYXRlICgy
MDA0MDgyNzEyMDQ1MSkNCiAvUHJvZHVjZXIgKFJlcG9ydExhYiBodHRwOi8vd3d3LnJlcG9y
dGxhYi5jb20pDQogL1N1YmplY3QgKHVuc3BlY2lmaWVkKQ0KIC9UaXRsZSAodW50aXRsZWQp
ID4+DQplbmRvYmoNCiUgJ1I3JzogY2xhc3MgUERGUGFnZXMgDQo3IDAgb2JqDQolIHBhZ2Ug
dHJlZQ0KPDwgL0NvdW50IDENCiAvS2lkcyBbIDQgMCBSIF0NCiAvVHlwZSAvUGFnZXMgPj4N
CmVuZG9iag0KJSAnUjgnOiBjbGFzcyBQREZTdHJlYW0gDQo4IDAgb2JqDQolIHBhZ2Ugc3Ry
ZWFtDQo8PCAvRmlsdGVyIFsgL0FTQ0lJODVEZWNvZGUNCiAgL0ZsYXRlRGVjb2RlIF0NCiAv
TGVuZ3RoIDE3MjAgPj4NCnN0cmVhbQ0KR2F1SEw+QXI3UydSaSIhcyk/Wy5WaExvMUlSLCcx
WnMwakY5NWpOKSdeLG9MZD9bcy1GPHJEK3JyIT08DQpNMzsodEVNNzNRJnFUdStTYGA+byFZ
W2UhcWBjXmtqVmlTbkQxUTk5SDM5SUtcP1ByP0lVQ0U2aHJaX3ENCiw3Um0mMS1OcWIzc2xF
TVppYWhRVzhZQD5rc1wtQUQ8SjU8XVlPIj1hKiw4aDlRNUYnRSdjNDJvLHJeRA0KX1dMWkFG
cUZCZ0VGPUQ+TDUrYWMoN1tJODpZWTE3bz4ia1FMV2ZNO1lXXlZIPFlLO2lLYF8xbjJVITlQ
DQpnMTpicCIobVEqRjRgX0hSKUBKZXFpPGwnP2Y5ViIvKUhETDg4SDBEVi1XUm1JUTBnOEVr
bz00OWsjUVYNCmE8KmRaKU5aMkBCWihRKiklaGxrJEJDJk43UTAySE49Z00mZ2BzYFgralEz
ZWNIKkY9NWpsZlAzSjlzVg0KVjxNJT0ob0EmQEVLaipmP290NjpFaGVYWy9nWikvcU0rNiZE
RlloOVAvJnBxLEh1IiEsRVBQaWkpdTFuDQpLamFSQ3A8LyIwbjtTWUdcbitEJF4vJmZJKUpx
cHNAJHRrI2c1OjJFNmBkNWc2LzQ6K2ghRyMkcDc7YyMNCiViQVQwZGB0bS1bYyxQP3I8OmN1
Pk04SyJCPDhyNi5samgvO009OzRkXjJjVSlYbnA+US80ZipkZl9Zcg0KMjRuYCI4THFZLGAr
NTNTT3RZZFMyN1AlXCJgYW1RTDdINGklQ2tDX25wMWlZWlIvSkBUVk9zYkVEIkEqDQoiaCdQ
NGJtRmU4WDE0akdlZEEtKEs7TS1SPG0/WSo+Jzc6NkdQUG5WLWBPRldWN3NdX0JFXVkxWjgv
SUANCkw2NUp0OnJuSzhzKWdcJTo6N01pVCYkN0IxZz0uZURfbT9bZTooRDQyN21KTWVeUUcj
KFUuTmUtMztqZA0KZy9ORysvOzYvWGRPM0opTWosMkY+J2lCZGxVbEQiJylZMz9MY0NGQFhx
T0tmMyUlXU1DPCsyV2lxWWtXDQpSN2xmOEFPWGRxZVN0MGw+YDdUREI4LDFsKnNbVFhfPG0v
PGxHR1w/UFkkMWFDalQ+NzpLK1VCKl1RU2sNCl9wZTdqXz8taTFJVGhTJzQ8YCFBUy8vJ21b
J0kmZFlMUmVsUHRYJDM4TVo7aD8lODZJPDdKQExOSyxzNg0KTGhnMkdBR1xWdG9QIzg4ZWVG
V05XVGtfST5PQEZgJVU5RlwlQ1UjQztVTiU8KUFYRlkySWtpWCQxQkAwDQoxYmk+Oy4yLGdi
KTMuLD9oNT1ERyFsYFdASEFCSGozJyNgZTx1J0tBMDNWZy5FVWRYQm5bKWtuTkY5IyMNCk5T
JD42QlxBckJjJSQyWThoLTRMTTFiU2prNG8oNkZlM0huRnIsITExXlchIi1Lam1vbSJUTipN
VTBWNw0KMyokMl5wSi1lalxpMkhxYzYrRkInVjZXZDZSNzU5bUU7Q1wrPWdrZmlgPlhrJkE3
OFopPFkvNSJhOUQkDQorQz9zSD5cLG5PRVpHIzBqViJOMUUoQDYhaT0wNGZqWi5eJkMoPCw/
PUpTPmkkaD9TRCQ8aylOLSFlOzwNCmFXIkZEJFlPIUJQOWdlISZKTVZcb1gvUjItbElmOSwo
JHNpUF1tdCpNWCVBUTZPaFxHZVxIVHMvKj5OZQ0KOVlbb1habW1oO1QybFFRZGRcVlQwVUJK
ajd1VWMrT1k4Lig7UG11JEYlWDMpO242VEtORkEnOyQtaF1JDQpxWSkoUltqL2ZDM0BzLCZW
KTBLTzRGKD5xNyNuRmZXKTRFNCgkXC4na1g7R3U/REozJk9kOSVEJnNYWUANClciNEhmW0Fx
VlxVXzxAOjRmb0NTUERbczspczUjai5vdSJXcVMzNXVTYWxXYiw0TyxXR149ImVCKWJoYw0K
IkJCKiFVKXA6JE5dWVs1U0okQ1s2VjpMQmNtXS5BMEkkTS46KzxBIU8tI3ElRzUsKl9hW1E8
WT9YcyIpDQo9KSlLVzAvWSdASzs3LmRYdCE6X05ZN1c+VzZzSEEtJlB1TThuYks0QF87b2Vh
S0VzR01hWidVK14rXSYNCldYSSEzXC5ZJmNCLWYlRjM2QTRaUyEkZGpFM0RIUF0rX3E4P245
WSUyMS1jN203MzRhMCI4O2g1UF4nKg0KZXJEXjlNQ0dAVFBtPSRIJisrQE1QP09JKWc2QzA3
ZlJydDdJLmYzPkY7WUp+PmVuZHN0cmVhbQ0KDQplbmRvYmoNCiUgJ1I5JzogY2xhc3MgUERG
T3V0bGluZXMgDQo5IDAgb2JqDQo8PCAvQ291bnQgMA0KIC9UeXBlIC9PdXRsaW5lcyA+Pg0K
ZW5kb2JqDQp4cmVmDQowIDEwDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAxMTMgMDAw
MDAgbg0KMDAwMDAwMDIyMSAwMDAwMCBuDQowMDAwMDAwMzg2IDAwMDAwIG4NCjAwMDAwMDA1
NTMgMDAwMDAgbg0KMDAwMDAwMDg0MiAwMDAwMCBuDQowMDAwMDAwOTc2IDAwMDAwIG4NCjAw
MDAwMDExNzIgMDAwMDAgbg0KMDAwMDAwMTI3NyAwMDAwMCBuDQowMDAwMDAzMTQzIDAwMDAw
IG4NCnRyYWlsZXINCjw8IC9JRCANCiAgJSBSZXBvcnRMYWIgZ2VuZXJhdGVkIFBERiBkb2N1
bWVudCAtLSBkaWdlc3QgKGh0dHA6Ly93d3cucmVwb3J0bGFiLmNvbSkgDQogIFsoXDIzMiNc
MzEwbVwzMzRcMzE0XDI2NT5hXDAyMlwzNjNcMjY0XDM2MEwkXDI1MikgKFwyMzIjXDMxMG1c
MzM0XDMxNFwyNjU+YVwwMjJcMzYzXDI2NFwzNjBMJFwyNTIpXSANCiANCiAvSW5mbyA2IDAg
Ug0KIC9Sb290IDUgMCBSDQogL1NpemUgMTAgPj4NCnN0YXJ0eHJlZg0KMzE5NA0KJSVFT0YN
Cg==
--------------080204000308060905080707--