Discussion:
[reportlab-users] Table entries with VALIGN=MIDDLE are not correct
Tim Roberts
2004-10-04 19:49:45 UTC
Permalink
There is a bug in the Platypus table handling when VALIGN is set to
MIDDLE. The text is offset way too high, so much so that it will
overlap cell boundaries if they are drawn. You can see this in this
stripped-down version of test_platypus_tables.py:

from reportlab.platypus import Spacer, SimpleDocTemplate, Table, TableStyle
from reportlab.lib.units import inch
from reportlab.lib import colors

style = TableStyle([
('ALIGN', (1,1), (-1,-1), 'RIGHT'),
('ALIGN', (0,0), (-1,0), 'CENTRE'),
('VALIGN',(0,0), (0,-1), 'TOP'),
('VALIGN',(1,0), (1,-1), 'MIDDLE'),
('VALIGN',(2,0), (2,-1), 'BOTTOM'),
('GRID', (0,0), (-1,-1), 0.25, colors.black)
])

doc = SimpleDocTemplate(
'test_platypus_tables.pdf',
pagesize=(8.5*inch, 11*inch),
showBoundary=1
)

txt = 'Line 1\nLine 2'

doc.build(
[
Table(
(
('','North','South','East','West'),
('Quarter 1',txt,txt,txt,txt),
('Quarter 2',txt,txt,txt,txt),
('Total',300,600,900,'1,200')
),
style = style,
rowHeights = (72,)*4
)
]
)

Here is the code from reportlab\platypus\tables.py that implements the
vertical positioning, at line 965:

if valign=='BOTTOM':
y = rowpos + cellstyle.bottomPadding+n*leading-fontsize
elif valign=='TOP':
y = rowpos + rowheight - cellstyle.topPadding - fontsize
elif valign=='MIDDLE':
y = rowpos + (cellstyle.bottomPadding +
rowheight-cellstyle.topPadding+(n-1)*leading)/2.0
else:
raise ValueError, "Bad valign: '%s'" % str(valign)

The problem is in the 'MIDDLE' case. It it computing the center
position of the text block, but it is not properly compensating for the
baseline position of the first line of text. I've played with about a
dozen solutions and drawn charts on my whiteboard for 30 minutes, and I
have come up with two solutions. The first is the one that
theoretically SHOULD be correct:

elif valign=='MIDDLE':
y = rowpos + (cellstyle.bottomPadding +
rowheight-cellstyle.topPadding+(n-1)*leading - fontsize)/2.0

The second is the one that actually gives the most pleasing results, and
is the one that I'm now using:

elif valign=='MIDDLE':
y = rowpos + (cellstyle.bottomPadding +
rowheight-cellstyle.topPadding+n*leading)/2.0 - fontsize
--
- Tim Roberts, ***@probo.com
Providenza & Boekelheide, Inc.
Andy Robinson
2004-10-04 20:54:48 UTC
Permalink
Post by Tim Roberts
There is a bug in the Platypus table handling when VALIGN is set to
MIDDLE. The text is offset way too high, so much so that it will
overlap cell boundaries if they are drawn. You can see this in this
Thanks for this patch. Yes, looking at the code we had
obviously failed to account for font size in the middle
case. I checked in the "pleasant" one.

Thanks,

Andy
Tim Roberts
2004-10-04 22:46:36 UTC
Permalink
Post by Andy Robinson
Thanks for this patch. Yes, looking at the code we had
obviously failed to account for font size in the middle
case. I checked in the "pleasant" one.
Much obliged.

After spending an intense weekend with ReportLab, I am reminded yet
again how much FUN it is to work with. I have been burdened with an
enormous Access database for our square dance community; 50 tables in
the back-end, 140 queries and 170 reports in the front-end. Today, it
requires a Terminal Server system to operate. Bit by bit, so to speak,
I am reproducing all of the Access reports in Python and ReportLab; my
eventual goal is to operate the entire thing over the web and dump
Terminal Server. Once I've done THAT, I can move the back-end to
Postgres and dump Windows completely.

It also reinforced to me just how hard it is to produce good printed
output in HTML. With just a couple of relatively minor tweaks, HTML
could become a universal reporting solution. As it is now, with careful
use of CSS, you can get very consistent results in displayed output,
even across different browsers, but printed output is an entirely
different story.
--
- Tim Roberts, ***@probo.com
Providenza & Boekelheide, Inc.
Johan Paul Glutting
2004-10-13 11:28:53 UTC
Permalink
Tim,

I am engaged in a similar project (converting Access databases to
Postgres). Maybe we can trade tips.

I started a little log over here at oooforum.org:

http://www.oooforum.org/forum/viewtopic.php?t=10724

with the caveat that it is much easier to install Postgres for Windows
now (there is a Windows binary installer of the Postgres Beta - which
includes pgadmin III - here):

http://pgfoundry.org/projects/pginstaller

also, the long and the short of it is that the fastest way to convert
Access data to Postgres is to use ODBC, and just export the tables
directly from Acces to Postgres.

I am also using python with the ODBC connector (it comes with WinPython)
to access Postgres.

Cheers,

JP
On Mon, 4 Oct 2004 21:54:48 +0100, "Andy Robinson"
Post by Andy Robinson
Thanks for this patch. Yes, looking at the code we had
obviously failed to account for font size in the middle
case. I checked in the "pleasant" one.
Much obliged.
After spending an intense weekend with ReportLab, I am reminded yet
again how much FUN it is to work with. I have been burdened with an
enormous Access database for our square dance community; 50 tables in
the back-end, 140 queries and 170 reports in the front-end. Today, it
requires a Terminal Server system to operate. Bit by bit, so to
speak, I am reproducing all of the Access reports in Python and
ReportLab; my eventual goal is to operate the entire thing over the
web and dump Terminal Server. Once I've done THAT, I can move the
back-end to Postgres and dump Windows completely.
It also reinforced to me just how hard it is to produce good printed
output in HTML. With just a couple of relatively minor tweaks, HTML
could become a universal reporting solution. As it is now, with
careful use of CSS, you can get very consistent results in displayed
output, even across different browsers, but printed output is an
entirely different story.
--
JP Glutting
Oficina de Qualitat Plaça Víctor Siurana, 1
Universitat de Lleida 25003 Lleida
-------------------------------------------------------
Tel: 973 703 103 Fax: 973 702 036
Dirk Holtwick
2004-11-04 09:57:24 UTC
Permalink
Hi,

I think there is still a bug in the vAlign part of cell rendering,
concerning table cells containing flowables. For me only
vAlign=="BOTTOM" seems to work. I tried a bit to solve the problem, but
didn't find a proper solution. The problem seems to have to do with the
following lines in tables.py:

def _drawCell(self, cellval, cellstyle, (colpos, rowpos), (colwidth,
rowheight)):
[...]
if valign=='TOP':
y = rowpos + rowheight - cellstyle.topPadding
elif valign=='BOTTOM':
y = rowpos+cellstyle.bottomPadding + h
else:
y =
rowpos+(rowheight+cellstyle.bottomPadding-cellstyle.topPadding+h)/2.0

The value of "rowheight" isn't the value of the maximum rowheight. I
propose to calculate at first the maximum value of the height of a row
and then the TOP calculation with y = rowpos + rowheight -
cellstyle.topPadding should work.

Maybe someone knows how to do this, I failed :-(

Bye,
Yours Dirk

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

spirito GmbH
Dirk Holtwick (CEO)
Grünstraße 6
D-47051 Duisburg

fon: +49 203 3187778
mbx: ***@spirito.de
web: http://www.spirito.de

GnuPG fingerprint (http://www.gnupg.org)
A5A1 54E1 C82E 02AD 4804 0547 66F4 3FB0 C790 EBAB
Dirk Holtwick
2004-11-04 10:07:52 UTC
Permalink
Oh, think I found a solution to the problem described in my last mail
(valign TOP in table cells with flowables).

Just change tables.py this way in the method _drawCell(..)

Instead of:
w, h = self._listCellGeom(cellval,colwidth,cellstyle,W=W,
H=H,aH=rowheight)

Write:
w, h = self._listCellGeom(cellval,colwidth,cellstyle,W=W, H=H)

On my machine it works.

Bye,
Yours Dirk

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

spirito GmbH
Dirk Holtwick (CEO)
Grünstraße 6
D-47051 Duisburg

fon: +49 203 3187778
mbx: ***@spirito.de
web: http://www.spirito.de

GnuPG fingerprint (http://www.gnupg.org)
A5A1 54E1 C82E 02AD 4804 0547 66F4 3FB0 C790 EBAB
Robin Becker
2004-11-04 11:26:25 UTC
Permalink
Post by Dirk Holtwick
Oh, think I found a solution to the problem described in my last mail
(valign TOP in table cells with flowables).
Just change tables.py this way in the method _drawCell(..)
w, h = self._listCellGeom(cellval,colwidth,cellstyle,W=W,
H=H,aH=rowheight)
w, h = self._listCellGeom(cellval,colwidth,cellstyle,W=W, H=H)
On my machine it works.
Bye,
Yours Dirk
Hi Dirk, have you got an example to illustrate?
--
Robin Becker
Dirk Holtwick
2004-11-04 12:39:45 UTC
Permalink
This is a multi-part message in MIME format.
--------------040701050703060206010606
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Post by Robin Becker
Hi Dirk, have you got an example to illustrate?
I figured out the problem using "pisa" (http://pisa.spirito.de). It
worked under reportlab 1.19 but didn't under the SVN version. On my side
the code didn't change and so I draw the conclusion, that it's on the
site of reportlab ;-)

I attached two documents. One using my patch, the second without. All
cells are valign="top"

Yours
Dirk

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

spirito GmbH
Dirk Holtwick (CEO)
Grünstraße 6
D-47051 Duisburg

fon: +49 203 3187778
mbx: ***@spirito.de
web: http://www.spirito.de

GnuPG fingerprint (http://www.gnupg.org)
A5A1 54E1 C82E 02AD 4804 0547 66F4 3FB0 C790 EBAB



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

JVBERi0xLjMNCiWTjIueIFJlcG9ydExhYiBHZW5lcmF0ZWQgUERGIGRvY3VtZW50IGh0dHA6
Ly93d3cucmVwb3J0bGFiLmNvbQ0KJSAnQmFzaWNGb250cyc6IGNsYXNzIFBERkRpY3Rpb25h
cnkgDQoxIDAgb2JqDQolIFRoZSBzdGFuZGFyZCBmb250cyBkaWN0aW9uYXJ5DQo8PCAvRjEg
MiAwIFINCiAvRjIgMyAwIFINCiAvRjMgNCAwIFIgPj4NCmVuZG9iag0KJSAnRjEnOiBjbGFz
cyBQREZUeXBlMUZvbnQgDQoyIDAgb2JqDQolIEZvbnQgSGVsdmV0aWNhDQo8PCAvQmFzZUZv
bnQgL0hlbHZldGljYQ0KIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nDQogL05hbWUgL0Yx
DQogL1N1YnR5cGUgL1R5cGUxDQogL1R5cGUgL0ZvbnQgPj4NCmVuZG9iag0KJSAnRjInOiBj
bGFzcyBQREZUeXBlMUZvbnQgDQozIDAgb2JqDQolIEZvbnQgVGltZXMtUm9tYW4NCjw8IC9C
YXNlRm9udCAvVGltZXMtUm9tYW4NCiAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZw0KIC9O
YW1lIC9GMg0KIC9TdWJ0eXBlIC9UeXBlMQ0KIC9UeXBlIC9Gb250ID4+DQplbmRvYmoNCiUg
J0YzJzogY2xhc3MgUERGVHlwZTFGb250IA0KNCAwIG9iag0KJSBGb250IEhlbHZldGljYS1C
b2xkDQo8PCAvQmFzZUZvbnQgL0hlbHZldGljYS1Cb2xkDQogL0VuY29kaW5nIC9XaW5BbnNp
RW5jb2RpbmcNCiAvTmFtZSAvRjMNCiAvU3VidHlwZSAvVHlwZTENCiAvVHlwZSAvRm9udCA+
Pg0KZW5kb2JqDQolICdQYWdlMSc6IGNsYXNzIFBERlBhZ2UgDQo1IDAgb2JqDQolIFBhZ2Ug
ZGljdGlvbmFyeQ0KPDwgL0NvbnRlbnRzIDkgMCBSDQogL01lZGlhQm94IFsgMA0KICAwDQog
IDU5NS4yNzU2DQogIDg0MS44ODk4IF0NCiAvUGFyZW50IDggMCBSDQogL1Jlc291cmNlcyA8
PCAvRm9udCAxIDAgUg0KICAvUHJvY1NldCBbIC9QREYNCiAgIC9UZXh0DQogICAvSW1hZ2VC
DQogICAvSW1hZ2VDDQogICAvSW1hZ2VJIF0gPj4NCiAvUm90YXRlIDANCiAvVHJhbnMgPDwg
ID4+DQogL1R5cGUgL1BhZ2UgPj4NCmVuZG9iag0KJSAnUjYnOiBjbGFzcyBQREZDYXRhbG9n
IA0KNiAwIG9iag0KJSBEb2N1bWVudCBSb290DQo8PCAvT3V0bGluZXMgMTAgMCBSDQogL1Bh
Z2VNb2RlIC9Vc2VPdXRsaW5lcw0KIC9QYWdlcyA4IDAgUg0KIC9UeXBlIC9DYXRhbG9nID4+
DQplbmRvYmoNCiUgJ1I3JzogY2xhc3MgUERGSW5mbyANCjcgMCBvYmoNCjw8IC9BdXRob3Ig
KGltcGFjdCBDUk0tVGVzdHVzZXIxLCBpbXBAY3QubWVkaWEgR21iSCkNCiAvQ3JlYXRpb25E
YXRlICgyMDA0MTEwNDEzMzgyMykNCiAvUHJvZHVjZXIgKFJlcG9ydExhYiBodHRwOi8vd3d3
LnJlcG9ydGxhYi5jb20pDQogL1N1YmplY3QgKEJlc3VjaHNiZXJpY2h0KQ0KIC9UaXRsZSAo
QmVzdWNoc2JlcmljaHQpID4+DQplbmRvYmoNCiUgJ1I4JzogY2xhc3MgUERGUGFnZXMgDQo4
IDAgb2JqDQolIHBhZ2UgdHJlZQ0KPDwgL0NvdW50IDENCiAvS2lkcyBbIDUgMCBSIF0NCiAv
VHlwZSAvUGFnZXMgPj4NCmVuZG9iag0KJSAnUjknOiBjbGFzcyBQREZTdHJlYW0gDQo5IDAg
b2JqDQolIHBhZ2Ugc3RyZWFtDQo8PCAvRmlsdGVyIFsgL0FTQ0lJODVEZWNvZGUNCiAgL0Zs
YXRlRGVjb2RlIF0NCiAvTGVuZ3RoIDE2OTUgPj4NCnN0cmVhbQ0KR2IhI11nTiklLCY6Ti9o
cmE/bjZiUW5DWUplcFNJOiIlLyVtNVgnVzRgcWVfUyRuU2NNRyRncUlYWFRQDQpKcjtsLEx0
R0pDKm5xcmBjZTY4PEZvZSEyayRMT1NdXEM4bCRuZ0JLKzk/IWA1WEgvT3AoPy5uYkpnKzUN
ClMkXmB0NjtcWXMiQEBpNlAsJkVZWFtpQ3AwIUkjWSsxbzlPXWpFRGNfSic2YDZCSkR1bi1r
cVVNXnBsJg0KXmVpYTs4aiFcaSEhSjU0IVtUVk0tVUItZktHdWlzOG8hI2gzWm5vIStmWzgr
LFhDVychbTFOJXFBMDwnDQpkZzQhTmMjZjNjTFsnKzQ5KEU9cERcKzFNTDEoT0AwQik1YW9Z
YkZbJjBsays6IylJOUM8QDVaMi5dMFENCih0NF4sL0VaMF1GMFZqKTliVTZXME1XT3U8Pi9i
bE91LXExUzspYEtFZmJjalo3bl5pYFlhSzhrKTNyKw0KYVRhKzovc1tcIkhkJXNgU0VlJWcr
WDFgSWcyO05TMmo4dUorPmRgcEMyZG5YL0twSkNCSzRlNUxrU0d1DQpeSmwwIWhuTy0icW5f
cVZHKi5bOm0iMC8uJV5tQzVpSWRoSEs7NipFMmUqaCpgNTc9USMmT2ZHVjYiQTgNCj80U1tw
Z0I9V3JESm1EKkI8U29iKTQ5WlVAMUs3QTc0ajQtRTU0OTZsZyptOkI0MFg3KDhWO1dFVWAi
Lg0KQnBJOC5pXz1EUGhFO21uKD9QOFhXSWVKTVppUlo6KU9zOUAyJjdNSEgtTi1FREF1J2Mt
b3NjM2YvRE09DQpJK3AkUWpwdSMoJiRQcG0hIUMpbzk8RCNGYmlebjtXZG88SkVnSmA4MjxK
bmJUaTAkazwibFxSNCN0REoNCjdnZ05iJFlNZTxhWCZJL01oZ2N1LTQqajdLVjlaKWg5OSRn
My8oOiZFMHFiMjQ4UmpXTVFhPUhxPlMqIg0KSkY+V1pmWy1FJDAkTTdBZXQ2IltEMHEpJita
XygkJSNHPVpvIlNDc0BNQ29GaklgOEtWS09iZVtwX1stDQouKj1vQj04Wi4zQV1FL1tAXyh1
KE0iVDVwYkkpZFVNb1FUajwsUyNXKy5xamQ9SVhDTCtbLlRaaCRjbTQNCnA4PzxtPHQuIyth
ZEdITFpkLVxja0lga0RpNF8wOWdDS2FDZGZjTFg7SjZtR00zUj40akkyL2ZEVj5SRg0KTG4j
SUE6LjFac24jdElKTHRqcDBEXFB1XnIjYitGcGY2Oz43LEpmOVFoJEdMQzpMXSpIITBPSEFZ
I1hwDQopRFdiSDkqPm5XR05aMlxUPGQwLi0qYyUvT2BIPVlOKCtTdSUuaiU1SUA1I0dnWmdv
UCdSS0ZiUWpWcjwNCjEvLGJzTEAzT1lrL1smRjI7NEZpX1psSDJZUC9IUnArZWtmNGAwb3Ny
L25gNlgvWzxSOmJqV2clIWhtRA0KSTk0KUJPNm0rPm5cYWtTJlsqIW9MN0I5PDRoaXB1UElv
YERvPUE9Z1M5amMlYm0+Yk4yKEEpOHAybDlYDQo1PzRVQW03IVA9cWk6OHI6aUdDUjhoWz4s
OyQ4dCthZi1CJCNAVidtJSguaGguKiR1XzxhVFNhRyFFa2kNCkAmdU5hODZYODQyPVZtPU9S
NEhOI246bSQmPGE7M0RROE8wT2JSW0IwaGdaK090bWZ0OWY7R2JkWkVpRQ0KJz4hZD5ZV0Jj
RyU2cHIuMXQ4by5HbVErVVYyNiJOVHImOjw5NWtLJDIiO2JGZT9rb28jcWZcTC09MChZDQpa
NW1MQ0dEcnBhcmIyKDhvcWVAWmMtSyUlXyhKSHBMXlouWC1zaExgPUpVY2lPZUpXXWBDay5e
TV9zckoNCmRaRWlFajE9Z2xVXlpjQF9bQSFgJG4zYzc1JTRvXmhTUCZlT084Wz0sSUU5JVwr
IWZcLGRedFNMYi5QSQ0KKzBCbW9CV3ROcjBxSXR1WFMqNGFLPkNJQ0ZnTjxFMGxjbERsVHE2
MUFqTEFQPGova08nWTdsbCJGIWA5DQo7WFFpRUptJmMrUGgjKiRnKj49SEpZZGhdQkw7dTZQ
M05lNEswaVlgSyZBOFw/OmQ6LkZOI2Q6bVpRazMNCmc0TV1xWzNDUFlXdGVRTEdbTktfY29U
W2xwbUBSVGZsWTZjViluOW5RVm8/I2NNNHRFVnVIKj5DO25nQw0KP1VbKk1EdU1zKmJKY103
MXMlXX4+ZW5kc3RyZWFtDQoNCmVuZG9iag0KJSAnUjEwJzogY2xhc3MgUERGT3V0bGluZXMg
DQoxMCAwIG9iag0KPDwgL0NvdW50IDANCiAvVHlwZSAvT3V0bGluZXMgPj4NCmVuZG9iag0K
eHJlZg0KMCAxMQ0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMTEzIDAwMDAwIG4NCjAw
MDAwMDAyMzMgMDAwMDAgbg0KMDAwMDAwMDM5OCAwMDAwMCBuDQowMDAwMDAwNTY3IDAwMDAw
IG4NCjAwMDAwMDA3NDAgMDAwMDAgbg0KMDAwMDAwMTAyOSAwMDAwMCBuDQowMDAwMDAxMTY4
IDAwMDAwIG4NCjAwMDAwMDE0MDMgMDAwMDAgbg0KMDAwMDAwMTUwOCAwMDAwMCBuDQowMDAw
MDAzMzUwIDAwMDAwIG4NCnRyYWlsZXINCjw8IC9JRCANCiAgJSBSZXBvcnRMYWIgZ2VuZXJh
dGVkIFBERiBkb2N1bWVudCAtLSBkaWdlc3QgKGh0dHA6Ly93d3cucmVwb3J0bGFiLmNvbSkg
DQogIFsoXyJcMzQ0SFwwMDNcMDI0dVwyNTAiXDMzMU1cMjM1XDI1MDVcMzQ2XDMyMikgKF8i
XDM0NEhcMDAzXDAyNHVcMjUwIlwzMzFNXDIzNVwyNTA1XDM0NlwzMjIpXSANCiANCiAvSW5m
byA3IDAgUg0KIC9Sb290IDYgMCBSDQogL1NpemUgMTEgPj4NCnN0YXJ0eHJlZg0KMzQwMg0K
JSVFT0YNCg==
--------------040701050703060206010606
Content-Type: application/pdf;
name="test1.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="test1.pdf"

JVBERi0xLjMNCiWTjIueIFJlcG9ydExhYiBHZW5lcmF0ZWQgUERGIGRvY3VtZW50IGh0dHA6
Ly93d3cucmVwb3J0bGFiLmNvbQ0KJSAnQmFzaWNGb250cyc6IGNsYXNzIFBERkRpY3Rpb25h
cnkgDQoxIDAgb2JqDQolIFRoZSBzdGFuZGFyZCBmb250cyBkaWN0aW9uYXJ5DQo8PCAvRjEg
MiAwIFINCiAvRjIgMyAwIFINCiAvRjMgNCAwIFIgPj4NCmVuZG9iag0KJSAnRjEnOiBjbGFz
cyBQREZUeXBlMUZvbnQgDQoyIDAgb2JqDQolIEZvbnQgSGVsdmV0aWNhDQo8PCAvQmFzZUZv
bnQgL0hlbHZldGljYQ0KIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nDQogL05hbWUgL0Yx
DQogL1N1YnR5cGUgL1R5cGUxDQogL1R5cGUgL0ZvbnQgPj4NCmVuZG9iag0KJSAnRjInOiBj
bGFzcyBQREZUeXBlMUZvbnQgDQozIDAgb2JqDQolIEZvbnQgVGltZXMtUm9tYW4NCjw8IC9C
YXNlRm9udCAvVGltZXMtUm9tYW4NCiAvRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZw0KIC9O
YW1lIC9GMg0KIC9TdWJ0eXBlIC9UeXBlMQ0KIC9UeXBlIC9Gb250ID4+DQplbmRvYmoNCiUg
J0YzJzogY2xhc3MgUERGVHlwZTFGb250IA0KNCAwIG9iag0KJSBGb250IEhlbHZldGljYS1C
b2xkDQo8PCAvQmFzZUZvbnQgL0hlbHZldGljYS1Cb2xkDQogL0VuY29kaW5nIC9XaW5BbnNp
RW5jb2RpbmcNCiAvTmFtZSAvRjMNCiAvU3VidHlwZSAvVHlwZTENCiAvVHlwZSAvRm9udCA+
Pg0KZW5kb2JqDQolICdQYWdlMSc6IGNsYXNzIFBERlBhZ2UgDQo1IDAgb2JqDQolIFBhZ2Ug
ZGljdGlvbmFyeQ0KPDwgL0NvbnRlbnRzIDkgMCBSDQogL01lZGlhQm94IFsgMA0KICAwDQog
IDU5NS4yNzU2DQogIDg0MS44ODk4IF0NCiAvUGFyZW50IDggMCBSDQogL1Jlc291cmNlcyA8
PCAvRm9udCAxIDAgUg0KICAvUHJvY1NldCBbIC9QREYNCiAgIC9UZXh0DQogICAvSW1hZ2VC
DQogICAvSW1hZ2VDDQogICAvSW1hZ2VJIF0gPj4NCiAvUm90YXRlIDANCiAvVHJhbnMgPDwg
ID4+DQogL1R5cGUgL1BhZ2UgPj4NCmVuZG9iag0KJSAnUjYnOiBjbGFzcyBQREZDYXRhbG9n
IA0KNiAwIG9iag0KJSBEb2N1bWVudCBSb290DQo8PCAvT3V0bGluZXMgMTAgMCBSDQogL1Bh
Z2VNb2RlIC9Vc2VPdXRsaW5lcw0KIC9QYWdlcyA4IDAgUg0KIC9UeXBlIC9DYXRhbG9nID4+
DQplbmRvYmoNCiUgJ1I3JzogY2xhc3MgUERGSW5mbyANCjcgMCBvYmoNCjw8IC9BdXRob3Ig
KGltcGFjdCBDUk0tVGVzdHVzZXIxLCBpbXBAY3QubWVkaWEgR21iSCkNCiAvQ3JlYXRpb25E
YXRlICgyMDA0MTEwNDEzMzc0MCkNCiAvUHJvZHVjZXIgKFJlcG9ydExhYiBodHRwOi8vd3d3
LnJlcG9ydGxhYi5jb20pDQogL1N1YmplY3QgKEJlc3VjaHNiZXJpY2h0KQ0KIC9UaXRsZSAo
QmVzdWNoc2JlcmljaHQpID4+DQplbmRvYmoNCiUgJ1I4JzogY2xhc3MgUERGUGFnZXMgDQo4
IDAgb2JqDQolIHBhZ2UgdHJlZQ0KPDwgL0NvdW50IDENCiAvS2lkcyBbIDUgMCBSIF0NCiAv
VHlwZSAvUGFnZXMgPj4NCmVuZG9iag0KJSAnUjknOiBjbGFzcyBQREZTdHJlYW0gDQo5IDAg
b2JqDQolIHBhZ2Ugc3RyZWFtDQo8PCAvRmlsdGVyIFsgL0FTQ0lJODVEZWNvZGUNCiAgL0Zs
YXRlRGVjb2RlIF0NCiAvTGVuZ3RoIDE3NTAgPj4NCnN0cmVhbQ0KR2IhI105NWlURCZBQitR
SilHO1s/dGhlTmIiJnA0TUJIZnFBLkxUYCpdQ0hDRHNIL2c9ckdUMm10ZkpHDQpqQUhOLiQ7
ci4qL1RLcEJhI0JNMydvRTpwVSYqWjkvTlIrMFBJRDYnTC9yTVMkN3NRaCIrJTo3NTVJZUwN
ClY3IVsoRTBASmIrc0FbQC5UPCFFWG88WnA3J29MKWh1KjM8aD04bGYuckNERidQaEU/Km1w
bkdVUGdmUw0KUDttPkQ0JDttTDZeMjlBUixvMyZLOmoyP1hUbFlsJD5tMT4lMW4mL1BaL0pL
ZWZbcnFOKFxncW9uK0w1DQpaXDUsKCxlQCs+cXNvJCkoXEFHR0k2Z1A4L2pva21nVkhyVFxV
ZWBIWihyKU5WVU4xVlEsc0ZeUS0iXGgNCk9uKTBhLyxuaG47bmFeUDtyYGtRS0lBKFMwRmZT
NlpHYUM5RkdoN08rP3FQX0tdPU9rNjNMSVkwcUFyJw0KOHNLJEJBc2ZKLkgoM3JvU1g8KVku
ZjdcPGJsZmFtX2krbWQ2UG1HNCQhWCxTYnM/UD1RS2dmdVwxTFxfDQpxV0QzLkY1J3BGSDVH
OEVBZiNqWjw9JXRPSyYxaVopXVwwRF0sPVBgWW5XJTIiUjclOTtkI09RSC8yZz0NClRgY3NN
WS0pbSc9MEoqUG9PTCJKIjxfIUpHYj9lYS9qcWFESCRUNWNGOjpsY01mVlM/UF5VO1I6OGRj
dQ0KMzZWJ0IyXDVmM0gqT28qLisuSmU1IjRaPEVIXlIlYEs2UWU1Z1NMOlhUcT0qOyw3SCVb
MTFqb1tfNSIjDQpHVVJUU3BIITBuYUp1V248NyNfWl9tIl5paztxVFg3ckw/KkcmOkUhJEk2
aS9JTDtYZ3BzLFN0LG4xVCENCjl1O2gtS2soTEAoOS9jXC4+QiQ8cGt0bk5qY0I1bmY6PDUn
PTdgKz0qKyRtNVJFP0RiIU5eQWlHNWBtXg0KLiktO1loNXB0ZTJQb2MyRj1mOzpOYiIjbWxC
dWpnKEZTbkY4Nik7LFFGXUswOF9zNUk5ak5ZKkVVKDdzDQpoQE9nL2NGMSEiJic5YFhcTHVp
Ml1zV1JyQydlLUNhPm1tTGcmTjEnbjxdNCE5RDo5MCVbQmpgLU9lMUQNCmtXSSZXKzAzOmAq
UFktIS87dDAlP2k4T0M9bl9dV0VCayJlJiFkbVIhLi1hK15UUGNDL1w5NCRXI2RFOA0KIUxe
ZUIqQTdDRkFrRz0yL21WQWQsXEReJE1XcXJDbjo1cFZCNENvNEFyaCRYOilpTGozbVJfIyQh
cz5EDQppZEkwXlQ4SUVvL0hPYSlsXzwvbEZnIVIxaGksdUlgSWo7N1JmYV5haicsZiUqUy5N
L1pBdGlLY3FuTS0NCkghXT5ZY2UiWixcdS0oYFBJOmEvODsyM2BrcjJeXUgpQG80OCRDQVxy
UCFNb2smaCRvXVxcUDNHJ2Ncag0KLmVyVy5yb1JYcWJMLDU1VnJ0P0I0dHMoWDhaanJsaT5J
LGpqODg2MDJMZW9mZkBQLU84KzU8QEFATFo1DQpiSjcqKlEnZEYjLUtWaVs+U2FeLkFFJlAs
NmdqJlk6KSZzP0FAVWNfMnRuV1I7V19ENjtRZC1xNSQsTkUNCkcyTSZII2tXPEZJSUJjQFst
X2E7ZVlFKylWcTZUQGYmM2Y7ZHNBcl1sJSJIWzQ6cnA6OFxTY2U7NnJdYw0KJG91QzsnTWpB
aUBMMDVkRVJcZmUtcG5KYihyWzBRNSpePCozLDVsbVBUXjhsTiYmNzM+ZztYbkdrQ1dhDQpy
UiwxM1VfY0owW2Jjai8pPWxEZ1RnVEtxSUhhLm8lIWNaRDpuZTZJXjJ0UHJMKWY4LmFwQEho
MyxBJEkNCmtuM2ZoYShAanFNSyFGRyc4XEwqWW8sbGIsJGIjbk0qcjZQZkY0SEEmWyRRSDcl
dClNYUMxPEFoSS1JZw0KOUNWIlYmYVB1WEFPJWMjQ2ktX0pMcD5zZShyMXFOPjVRXT5gKXVP
WCR0LiM4WFNxQHNwSUE+KkAiVDpgDQo0TS0kb1NmcTltVEtuIU5kSj0hI2FFOVJeS0YrIVMh
NWBoZWgrZW50X1c8PiEwVikxUFB0LjRHNiVdRzENCmJkcjVSU2U6WUMrT0lsL1pwJyRhOSY1
TEdARFpTLEoyIU5sXCEnOktFI0IkKzlXLUJXZUlhLUVjbGcxOg0KWlZFOyZTZCVLOSVHSE8k
PVdhQmVCcSg9Vj8pZUQtVmMyaWViSzlOMzlvJlNvQmxvZzZBOiw/ZDp1RDJLDQoqQkhDXCVm
dT1iYVR+PmVuZHN0cmVhbQ0KDQplbmRvYmoNCiUgJ1IxMCc6IGNsYXNzIFBERk91dGxpbmVz
IA0KMTAgMCBvYmoNCjw8IC9Db3VudCAwDQogL1R5cGUgL091dGxpbmVzID4+DQplbmRvYmoN
CnhyZWYNCjAgMTENCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDExMyAwMDAwMCBuDQow
MDAwMDAwMjMzIDAwMDAwIG4NCjAwMDAwMDAzOTggMDAwMDAgbg0KMDAwMDAwMDU2NyAwMDAw
MCBuDQowMDAwMDAwNzQwIDAwMDAwIG4NCjAwMDAwMDEwMjkgMDAwMDAgbg0KMDAwMDAwMTE2
OCAwMDAwMCBuDQowMDAwMDAxNDAzIDAwMDAwIG4NCjAwMDAwMDE1MDggMDAwMDAgbg0KMDAw
MDAwMzQwNSAwMDAwMCBuDQp0cmFpbGVyDQo8PCAvSUQgDQogICUgUmVwb3J0TGFiIGdlbmVy
YXRlZCBQREYgZG9jdW1lbnQgLS0gZGlnZXN0IChodHRwOi8vd3d3LnJlcG9ydGxhYi5jb20p
IA0KICBbKFwzNjRcMjc0QlwzMTdcMzQ1XDAyM1wwMzdcMjAxXDIxNlwzNTFcMDM2XDIxN1ww
MDFcMDEyXDI0NFwxNzcpIChcMzY0XDI3NEJcMzE3XDM0NVwwMjNcMDM3XDIwMVwyMTZcMzUx
XDAzNlwyMTdcMDAxXDAxMlwyNDRcMTc3KV0gDQogDQogL0luZm8gNyAwIFINCiAvUm9vdCA2
IDAgUg0KIC9TaXplIDExID4+DQpzdGFydHhyZWYNCjM0NTcNCiUlRU9GDQo=
--------------040701050703060206010606--
Dirk Holtwick
2004-11-11 10:31:57 UTC
Permalink
Hi,

I just want to ask, if you took this change of table valign in
consideration to be implemented in the reportlab 1.20 distribution? I
don't have the time to write a demo outside of "pisa" for this error,
but the described line changed since reportlab 1.19 and before this
change everything worked fine. The problem of aH=rowheight is that
rowheight is to small when used with flowables. Would be nice if you
could take a look at it before publishing the reportlab 1.20.

Thanks
Yours Dirk
Post by Dirk Holtwick
Oh, think I found a solution to the problem described in my last mail
(valign TOP in table cells with flowables).
Just change tables.py this way in the method _drawCell(..)
w, h = self._listCellGeom(cellval,colwidth,cellstyle,W=W,
H=H,aH=rowheight)
w, h = self._listCellGeom(cellval,colwidth,cellstyle,W=W, H=H)
On my machine it works.
Bye,
Yours Dirk
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

spirito GmbH
Dirk Holtwick (CEO)
Grünstraße 6
D-47051 Duisburg

fon: +49 203 3187778
mbx: ***@spirito.de
web: http://www.spirito.de

GnuPG fingerprint (http://www.gnupg.org)
A5A1 54E1 C82E 02AD 4804 0547 66F4 3FB0 C790 EBAB

Loading...