[reportlab-users] Patch to support tables with oversize cells

Robin Becker robin at reportlab.com
Sun May 29 05:43:05 EDT 2022


On 26/05/2022 14:07, Lennart Regebro wrote:
> OK, here is v7 that doesn't do a deepcopy.
> 
........

Hi Lennart,

I did some more analysis on the minute differences I am seeing. I produced a failure test here


https://www.reportlab.com/ftp/lennart/ttablelines.py

this produces a simple table with various styles and then checks to see how it can be split.

The test goes

1) t=Table(....)
2) lst_add(t) #add to the story
3) tc = copy.deepcopy(t) if os.environ.get('DEEPCOPY','0')=='1' else t
4) for s in tc.split(4*inch,30): lst_add(s) #add the tow split bits

As a check I monkeypatch the canvas used for build so all the line commands get printed

I then find differences between the lines drawn when tc is t ie no deepcopy of t is done.
If a deepcopy is done then I see no differences between the standard and patched lines.

As a check I also tried comparing the output lines between standard no copy and standard deepcopy cases, but there were 
no differences in the lines drawn for those cases.

I think the implication is that for this simple split case the patched code is making some change to the original table.

Since we are assumed to be making two completely fresh tables from the original and the rows are disjoint we ought not 
to make any change to the structure of the original.

At present I don't know if the lines that are added/changed etc belong to the first table, the two split ones or all three.

I can probably make up some mechanism to print out a message when the tables are drawn so we know when each starts in 
the list of lines. I think a monkepatch on the Table.draw will allow us to do that.
-- 
Robin Becker


More information about the reportlab-users mailing list