[reportlab-users] ParagraphAndImage flowable

Matt Page-Lieberman mjpl at itautec.cin.ufpe.br
Fri Jun 2 09:08:43 EDT 2006

Hi, we're working on a project and we would like to have an icon 
followed immediatly by text.  One solution that we found was to use the 
ParagraphAndImage flowable (PAIf).  The problem is that the PAIf hard 
codes the decision that the paragraph will appear before the image and 
there are no arguments that can be passed to the PAIf to change this 
behavior.  Additionally, the image has no associated style; only the 
paragraph does.  So, when we want to have an indented PAIf where the 
image is immediately followed by text, we have to resort to a variety of 
hacks of the PAIf by using the paragraph style's leftIndent to indent 
the image within the implementation of PAI.draw().

Thus, we have created a new flowable named ImageAndParagraph (IAP) which 
differs from PAI only in the implementation of IAP.draw().  Ideally, 
there would be one flowable - PAI - where an argument (which would of 
course have a default) would specify which object (Image or Paragraph) 
to put first, and which, unfortunately, would probably result in an ugly 
if-else in draw().  Another option in order to take advantage of shared 
code would to have a paragraph and image type be abstract with both PAI 
and IAP each implementing draw() as necessary.

Unfortunately, as it now stands, it looks like our temporary solution 
would be to either inherit IAP from PAI and override draw() so that we 
can take advantage of the implmentations for wrap(), split(), etc - 
(This is one sad hack though since an IAP should not descend from a PAI) 
- or to copy and paste all the implementation of PAI to our new class 
IAP which is being used as the current solution.  But, this would cause 
us to not be able to rely on any new implementations of PAI if the code 
were to be changed in the future; we would have to verify for 
differences with every release and since we have very little control of 
which versions of reportlab will be packaged/used with our program in 
the future, this is quite the dilemma.

Are there any other suggestions or possibilities to chage this class 
hierarchy in the future.  I'm sure that the team that I work on would be 
able to arrange a change to this hierarchy if warranted.

Would the new type ImageAndFlowables be able to address any of these issues?

Thanks in advance,
Matt Page-Lieberman

Library version: reportlab-1.20
O.S.: Librix (Gentoo)

More information about the reportlab-users mailing list