ReportLab: Cómo cambiar automáticamente el tamaño del texto para ajustarlo al bloque

Necesito generar un PDF con texto dynamic y estoy usando ReportLab. Dado que el texto es dynamic, ¿hay que cambiar el tamaño para que se ajuste a un área específica del PDF?

A partir de reportlab versión 2.0 platypus tiene KeepInFrame . Desde el CHANGES.txt :

 KeepInFrame: Sometimes the length of a piece of text you'd like to include in a fixed piece of page "real estate" is not guaranteed to be constrained to a fixed maximum length. In these cases, KeepInFrame allows you to specify an appropriate action to take when the text is too long for the space allocated for it. In particular, it can shrink the text to fit, mask (truncate) overflowing text, allow the text to overflow into the rest of the document, or raise an error. 

Los únicos ejemplos que pude encontrar sobre cómo usarlos están en el código fuente de reportlab en las tests/ . Aquí está el ejemplo de trabajo que finalmente se me ocurrió:

 from reportlab.pdfgen.canvas import Canvas from reportlab.lib.pagesizes import letter, landscape from reportlab.platypus import Paragraph, Frame, KeepInFrame from reportlab.lib.styles import getSampleStyleSheet from reportlab.lib.units import inch c = Canvas('foo.pdf', pagesize=landscape(letter)) frame1 = Frame(0.25*inch, 0.25*inch, 4*inch, 4*inch, showBoundary=1) styles = getSampleStyleSheet() s = "foo bar " * 1000 story = [Paragraph(s, styles['Normal'])] story_inframe = KeepInFrame(4*inch, 8*inch, story) frame1.addFromList([story_inframe], c) c.save() 

Y la cadena de versión para la integridad:

 >python -c "import reportlab;print reportlab.Version" 2.7 

Sí. Eche un vistazo al manual ReportLab. Según su (breve) descripción de lo que quiere hacer, parece que necesita mirar los marcos dentro del diseño de su página (suponiendo que use Platypus, lo que recomendaría encarecidamente).