Suggestions for creating a PDF table

Larry Bates larry.bates at websafe.com`
Mon Jul 28 19:26:03 CEST 2008


Kirk Strauser wrote:
> Short question:
> 
> Is there a good library for generating HTML-style tables with the equivalent
> of colspans, automatically sized columns, etc. that can render directly to
> PDF?
> 
> Longer question:
> 
> I'm re-doing a big chunk of locally-written code.  I have a
> report-generating function that takes a list of lists of lists as input and
> returns either a PDF, an HTML table, or an Excel spreadsheet as requested. 
> For example, input might look like:
> 
>     makereport('html',
>                headers=['Invoice number', 'Customer', 'Price'],
>                data=[
>                      [['123', 'John Doe', '$50.00'],
>                       ['Ordered on 2008-01-01 via the website']],
>                      [['124', 'Peter Bilt', '$25.99'],
>                       ['Mail via African swallow']]
>                ])
> 
> This would result in HTML like:
> 
>     <table>
>       <tr>
>         <th>Invoice number</th>
>         <th>Customer</th>
>         <th>Price</th>
>       </tr>
>       <tr class="lightbackground">
>         <td>123</td>
>         <td>John Doe</td>
>         <td>$50.00</td>
>       </tr>
>       <tr class="lightbackground">
>         <td colspan="3">Ordered on 2008-01-01 via the website</td>
>       </tr>
>       <tr class="darkerbackground">
>         <td>124</td>
>         <td>Peter Bilt</td>
>         <td>$25.99</td>
>       </tr>
>       <tr class="darkerbackground">
>         <td colspan="3">Mail via African swallow</td>
>       </tr>
>     </table>
> 
> Note particularly how the explanatory notes for each invoice are similar in
> appearance to the "primary" report lines they're associated with.
> 
> Now, I have a similar transformation to PDF via pdflatex.  This works fairly
> well but requires a bunch of temp files and subprocesses, and I've never
> been 100% happy with the LaTeX output (you have to calculate your own
> column widths, for instance).  Since I plan to re-write this anyway, I'd
> like to find a more widely used library if one was available.
> 
> ReportLab seemed *almost* perfect, except that it doesn't support colspans. 
> As I hope I demonstrated in the example, most of our reports depend on that
> ability.
> 
> So, again, any thoughts on a PDF generator that can generate tables with the
> same kind of flexibility as HTML?

It does support the equivalent of colspans.  See page 75 of the userguide manual.

-Larry



More information about the Python-list mailing list