[reportlab-users] BUG+FIX: Paragraph splitting
    Dirk Holtwick 
    dirk.holtwick at gmail.com
       
    Thu Dec 11 06:25:41 EST 2008
    
    
  
Hi Robin,
nice patch ;) And yes, it works fine.
I applied it to my implementation too (see attachment).
Cheers
Dirk
Robin Becker schrieb:
> Dirk Holtwick wrote:
>> Hi,
>>
>> I found an error for paragraphs that need to split and contain inline 
>> images. After a long search I found out that the reason was that 
>> "autoLeading" was not inherited to the resulting split-paragraphs.
>>
>> Here is the part in Paragraph.split that needs to be modified:
>>
>> -----------------8<---------------[cut here]
>>     func = self._get_split_blParaFunc() 
>> P1=self.__class__(None,style,bulletText=self.bulletText,frags=func(blPara,0,s)) 
>>
>>         P1.blPara = 
>> ParaLines(kind=1,lines=blPara.lines[0:s],aH=availHeight,aW=availWidth)
>>         P1._JustifyLast = 1
>>         P1._splitpara = 1
>>         P1.height = height
>>         P1.width = availWidth
>>         P1.autoLeading = self.autoLeading # <-- BUGFIX
>>         if style.firstLineIndent != 0:
>>             style = deepcopy(style)
>>             style.firstLineIndent = 0 
>> P2=self.__class__(None,style,bulletText=None,frags=func(blPara,s,n))
>>         P2.autoLeading = self.autoLeading # <-- BUGFIX
>>         return [P1,P2]
>> -----------------8<---------------[cut here]
>>
>> .......
> Dirk are you setting the autoLeading directly on the Paragraph here? I 
> know that we have allowed this for certain attributes. It's a slippery 
> slope, but I guess since we've allowed this in the past it should go 
> forward. Probably though since autoLeading can be on the style we ought 
> to check for existence rather than assume that it's on the instance 
> directly. I suggest the following patch.
> 
>>               
>> P1=self.__class__(None,style,bulletText=self.bulletText,frags=func(blPara,0,s)) 
>>
>>         #this is a major hack
>>         P1.blPara = 
>> ParaLines(kind=1,lines=blPara.lines[0:s],aH=availHeight,aW=availWidth)
>>         P1._JustifyLast = 1
>>         P1._splitpara = 1
>>         P1.height = height
>>         P1.width = availWidth
>>         if style.firstLineIndent != 0:
>>             style = deepcopy(style)
>>             style.firstLineIndent = 0
>>         
>> P2=self.__class__(None,style,bulletText=None,frags=func(blPara,s,n))
> ######################
>>         for a in ('autoLeading',    #possible attributes that might be 
>> directly on self.
>>                 ):
>>             if hasattr(self,a):
>>                 setattr(P1,a,getattr(self,a))
>>                 setattr(P2,a,getattr(self,a))
> ######################
>>         return [P1,P2]
> 
> Can you see if that works for you?
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: reportlab_paragraph.py
Url: <http://two.pairlist.net/pipermail/reportlab-users/attachments/20081211/d0cde032/attachment-0001.ksh>
    
    
More information about the reportlab-users
mailing list