The email address should be a clickable mailto link built by creating a plugin within the cell. And Robin's job title should be on a separate line to his name. In the third row, we use the newer and easier table cell properties "href" and "destination". Name Email Robin Becker (chief propellerhead) ("mailto:robin@reportlab.com",) Internal link to back page Hyperlink to www.reportlab.com This should be a 5x5 table where some ranges span. Note that the grid and background commands still work on the "underlying" grid; if you grid the whole table, it will show through your 'spanned cells'
This should span the first 3 cells in the top row. It's ordinary left aligned text but could be centred if you want. B C D This should span all five cells in the right column. We vertically centred the text to make it look sensible using a separate stylesheet command.
some more text A B C DB E A B C DB E A B C DB E A B C DB E
This should be a 5x5 table where some ranges span. Note that the grid and background commands still work on the "underlying" grid; if you grid the whole table, it will show through your 'spanned cells'. Here the span stuff is in the <td>t attributes.
This should span the first 3 cells in the top row. It's ordinary left aligned text but could be centred if you want. B C D This should span all five cells in the right column. We vertically centred the text to make it look sensible using a separate stylesheet command.
some more text A B C DB E A B C DB E A B C DB E A B C DB E
This should be a 5x5 table where some ranges span. The column widths have been set as 3cm,10%,10%,10%,30%. The percentage refers to unallocated width only. This should span the first 3 cells in the top row. It's ordinary left aligned text but could be centred if you want. B C D This should span all five cells in the right column. We vertically centred the text to make it look sensible using a separate stylesheet command.





some more text A B C DB E A B C DB E A B C DB E A B C DB E
This shows some pointers on doing financial tables. It demonstrates the decimal alignment and multiple lines. We also used a local <td color="red"> attribute for the negative cell; ideally one wants to make the data drive the colour, so that generator apps don't need to make para tags in every cell if they want red negatives. If we move to dynamic RML, then a number-and-cell-formatting function is possible, but static RML sees everything as text. Note that when the value does not contain the decimal character but there are non-digit characters at the end, it tries to align the rightmost digits with other rows. Corporate Assets Amount Fixed Assets 1,234,567.89 Legal Offense Fund 86,000,000 Company Vehicle 1,234.8901 Petty Cash 42 Intellectual Property Questionable Bank Overdraft (13,029) Goodwill (742,078,231.56) Flat Screen TV 27 inches Net Position Doomed. Really! The same table again this time in a <topPadder> tag Corporate Assets Amount Fixed Assets 1,234,567.89 Legal Offense Fund 86,000,000 Company Vehicle 1,234.8901 Petty Cash 42 Intellectual Property Questionable Bank Overdraft (13,029) Goodwill (742,078,231.56) Flat Screen TV 27 inches Net Position Doomed. Really! Individual <td> tags that contain pure strings can override the following attributes: fontName, fontSize, fontColor, leading, leftPadding, rightPadding, topPadding, bottomPadding, background, align, vAlign, lineBelowThickness, lineBelowColor, lineBelowCap, lineBelowCount, lineBelowSpace, lineAboveThickness, lineAboveColor, lineAboveCap, lineAboveCount, lineAboveSpace, lineLeftThickness, lineLeftColor, lineLeftCap, lineLeftCount, lineLeftSpace, lineRightThickness, lineRightColor, lineRightCap, lineRightCount, lineRightSpace . fontName Courier fontName Helvetica fontSize 8 fontSize 14 fontColor red fontColor blue leading leading is 16 leading leading is 12 leftPadding 10 leftPadding 16 rightPadding 10 rightPadding 24 topPadding 10 topPadding 24 bottomPadding 10 bottomPadding 24 background pink background lightblue align left aligncenter aligncenter leftPadding 00 aligncenter leftPadding 10 align right - vAlign - top - vAlign - middle - vAlign - bottom lineBelow red 1pt thickness This is the previous table again, but this time in a <ytopPadder> tag (which begins immediately after the green <hr>) so the the first chunk is pushed to the bottom of the frame.
fontName Courier fontName Helvetica fontSize 8 fontSize 14 fontColor red fontColor blue leading leading is 16 leading leading is 12 leftPadding 10 leftPadding 16 rightPadding 10 rightPadding 24 topPadding 10 topPadding 24 bottomPadding 10 bottomPadding 24 background pink background lightblue align left aligncenter aligncenter leftPadding 00 aligncenter leftPadding 10 align right - vAlign - top - vAlign - middle - vAlign - bottom lineBelow red 1pt thickness This table is using <xpre> tags around the contents of the right hand column. fontName Courier fontName Helvetica fontSize 8 fontSize 14 fontColor red fontColor blue leading leading is 16 leading leading is 12 leftPadding 10 leftPadding 16 rightPadding 10 rightPadding 24 topPadding 10 topPadding 24 bottomPadding 10 bottomPadding 24 background pink background lightblue align left align center align right - vAlign - top - vAlign - middle - vAlign - bottom

Bulk Data Support

Very often one wants to get quite a lot of text or numeric data into a table - for example from a database query or imported data file. Quoting all of this correctly as XML and wrapping in in td and tr tags is time and memory consumuing, unquoting and parsing it all back even more so. Therefore, instead of explicitly creating row and cell tags, you can now use a new bulkData tag. This lets you specify a delimiter for fields (default is comma) and for records (default is newline), and rml2pdf will break this up. If you want to avoid having to quote ampersands, wrap this in a CDATA escape sequence. Of course if you want per-cell formatting or to put arbitrary flowables in a cell, you must use the other tags. You can specify a tab with fieldDelim="\t", but we generally advise against using any whitespace character as a delimiter if you have a choice. You can also specify fine-grained "stripping" control; the default behaviour is to strip whitespace off the top and bottom of the overall data block, so blank lines are excluded, and off the ends of each row so line endings and indentation don't matter, but not off each cell. Note that the strings in the cells may contain spaces and these spaces will be respected in formatting. You are also advised to use a CDATA escape sequence around your data so that "&","<" and ">", characters don't need special handling.

Excel Bulk Data Support

The excelData tag is very similar to the bulk data support, but reads the bulk data from an Excel file instead of from delimited textual data. The range attribute is optional.

Colour cycles by rows and columns

It's sometimes nice to alternate colours by row (e.g. a pale color then white) to visually break up a long table. The style lets you specify cycles as well as single colours. Here we have created a style command which cycles through pale green and white, like old stacks of fanfold paper... Date Item Debit Credit 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Bottom row should be greem 110 - Try again by column, with three colors this time. Also ensure some row heights vary to check accuracy of drawing. Date Item Debit Credit 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients plus magnum of champagne 400 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - 28-09-2004 Expensive lunch with clients 100 - And now by column (although this may be used less...) Date Item Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Total Expenses Entertainment 100 100 100 100 100 100 100 100 100 100 100 100 1200 Expenses Entertainment 100 100 100 100 100 100 100 100 100 100 100 100 1200 Expenses Entertainment 100 100 100 100 100 100 100 100 100 100 100 100 1200 Expenses Entertainment 100 100 100 100 100 100 100 100 100 100 100 100 1200 Expenses Entertainment 100 100 100 100 100 100 100 100 100 100 100 100 1200

Splitting over pages - top and bottom rows

Sometimes a table splits over a page and you don't have a grid, so the bottom part (and top of the new page) have no line boxing them in. The splitfirst and splilast magic coordinates can be used to insert a line drawing routine into the style for this. I used an ugly thick purple line! DateItemDebitCredit 28-09-2004Expensive lunch with clients100- 28-09-2004Expensive lunch with clients101- 28-09-2004Expensive lunch with clients102- 28-09-2004Expensive lunch with clients103- 28-09-2004Expensive lunch with clients104- 28-09-2004Expensive lunch with clients105- 28-09-2004Expensive lunch with clients106- 28-09-2004Expensive lunch with clients107- 28-09-2004Expensive lunch with clients108- 28-09-2004Expensive lunch with clients109- 28-09-2004Expensive lunch with clients110- 28-09-2004Expensive lunch with clients111- 28-09-2004Expensive lunch with clients112- 28-09-2004Expensive lunch with clients113- 28-09-2004Expensive lunch with clients114- 28-09-2004Expensive lunch with clients115- 28-09-2004Expensive lunch with clients116- 28-09-2004Expensive lunch with clients117- 28-09-2004Expensive lunch with clients118- 28-09-2004Expensive lunch with clients119- 28-09-2004Expensive lunch with clients120- 28-09-2004Expensive lunch with clients121- 28-09-2004Expensive lunch with clients122- 28-09-2004Expensive lunch with clients123- 28-09-2004Expensive lunch with clients124- 28-09-2004Expensive lunch with clients125- 28-09-2004Expensive lunch with clients126- 28-09-2004Expensive lunch with clients127- 28-09-2004Expensive lunch with clients128- 28-09-2004Expensive lunch with clients129- 28-09-2004Expensive lunch with clients130- 28-09-2004Expensive lunch with clients131- 28-09-2004Expensive lunch with clients132- 28-09-2004Expensive lunch with clients133- 28-09-2004Expensive lunch with clients134- 28-09-2004Expensive lunch with clients135- 28-09-2004Expensive lunch with clients136- 28-09-2004Expensive lunch with clients137- 28-09-2004Expensive lunch with clients138- 28-09-2004Expensive lunch with clients139- 28-09-2004Expensive lunch with clients140- 28-09-2004Expensive lunch with clients141- 28-09-2004Expensive lunch with clients142- 28-09-2004Expensive lunch with clients143- 28-09-2004Expensive lunch with clients144- 28-09-2004Expensive lunch with clients145- 28-09-2004Expensive lunch with clients146- 28-09-2004Expensive lunch with clients147- 28-09-2004Expensive lunch with clients148- 28-09-2004Expensive lunch with clients149- 28-09-2004Expensive lunch with clients150- 28-09-2004Expensive lunch with clients151- 28-09-2004Expensive lunch with clients152- 28-09-2004Expensive lunch with clients153-

No Split Rows

Sometimes a table splits over a page or frame and the split occurs at an inopportune point say after a sub heading. You can use the noSplitRowCount attribute of the >tr< tag to inhibit splitting at certain rows. First see the table without any special treatment. DateItemDebitCredit 28-09-2004Expensive lunch with clients100- 28-09-2004Expensive lunch with clients101- 28-09-2004Expensive lunch with clients102- 28-09-2004Expensive lunch with clients103- 28-09-2004Expensive lunch with clients104- 28-09-2004Expensive lunch with clients105- 28-09-2004Expensive lunch with clients106- 28-09-2004Expensive lunch with clients107- 28-09-2004Expensive lunch with clients108- 28-09-2004Expensive lunch with clients109- 28-09-2004Expensive lunch with clients110- 28-09-2004Expensive lunch with clients111- 28-09-2004Expensive lunch with clients112- 28-09-2004Expensive lunch with clients113- 28-09-2004Expensive lunch with clients114- 28-09-2004Expensive lunch with clients115- 28-09-2004Expensive lunch with clients116- 28-09-2004Expensive lunch with clients117- 28-09-2004Expensive lunch with clients118- 28-09-2004Expensive lunch with clients119- 28-09-2004Expensive lunch with clients120- 28-09-2004Expensive lunch with clients121- 28-09-2004Expensive lunch with clients122- 28-09-2004Expensive lunch with clients123- 28-09-2004Expensive lunch with clients124- 28-09-2004Expensive lunch with clients125- 28-09-2004Expensive lunch with clients126- 28-09-2004Expensive lunch with clients127- 28-09-2004Expensive lunch with clients128- 28-09-2004Expensive lunch with clients129- 28-09-2004Expensive lunch with clients130- 28-09-2004Expensive lunch with clients131- 28-09-2004Expensive lunch with clients132- 28-09-2004Expensive lunch with clients133- 28-09-2004Expensive lunch with clients134- 28-09-2004Expensive lunch with clients135- 28-09-2004Expensive lunch with clients136- This is a subheader 28-09-2004Expensive lunch with clients137- 28-09-2004Expensive lunch with clients138- 28-09-2004Expensive lunch with clients139- 28-09-2004Expensive lunch with clients140- 28-09-2004Expensive lunch with clients141- 28-09-2004Expensive lunch with clients142- 28-09-2004Expensive lunch with clients143- 28-09-2004Expensive lunch with clients144- 28-09-2004Expensive lunch with clients145- 28-09-2004Expensive lunch with clients146- 28-09-2004Expensive lunch with clients147- 28-09-2004Expensive lunch with clients148- 28-09-2004Expensive lunch with clients149- 28-09-2004Expensive lunch with clients150- 28-09-2004Expensive lunch with clients151- 28-09-2004Expensive lunch with clients152- 28-09-2004Expensive lunch with clients153- Now we change the subheader row <tr> tag to be <tr noSplitRowCount="2"> so the subheader row and the following one are bound together ie we won't split the two. DateItemDebitCredit 28-09-2004Expensive lunch with clients100- 28-09-2004Expensive lunch with clients101- 28-09-2004Expensive lunch with clients102- 28-09-2004Expensive lunch with clients103- 28-09-2004Expensive lunch with clients104- 28-09-2004Expensive lunch with clients105- 28-09-2004Expensive lunch with clients106- 28-09-2004Expensive lunch with clients107- 28-09-2004Expensive lunch with clients108- 28-09-2004Expensive lunch with clients109- 28-09-2004Expensive lunch with clients110- 28-09-2004Expensive lunch with clients111- 28-09-2004Expensive lunch with clients112- 28-09-2004Expensive lunch with clients113- 28-09-2004Expensive lunch with clients114- 28-09-2004Expensive lunch with clients115- 28-09-2004Expensive lunch with clients116- 28-09-2004Expensive lunch with clients117- 28-09-2004Expensive lunch with clients118- 28-09-2004Expensive lunch with clients119- 28-09-2004Expensive lunch with clients120- 28-09-2004Expensive lunch with clients121- 28-09-2004Expensive lunch with clients122- 28-09-2004Expensive lunch with clients123- 28-09-2004Expensive lunch with clients124- 28-09-2004Expensive lunch with clients125- 28-09-2004Expensive lunch with clients126- 28-09-2004Expensive lunch with clients127- 28-09-2004Expensive lunch with clients128- 28-09-2004Expensive lunch with clients129- 28-09-2004Expensive lunch with clients130- 28-09-2004Expensive lunch with clients131- 28-09-2004Expensive lunch with clients132- 28-09-2004Expensive lunch with clients133- 28-09-2004Expensive lunch with clients134- 28-09-2004Expensive lunch with clients135- 28-09-2004Expensive lunch with clients136- This is a subheader 28-09-2004Expensive lunch with clients137- 28-09-2004Expensive lunch with clients138- 28-09-2004Expensive lunch with clients139- 28-09-2004Expensive lunch with clients140- 28-09-2004Expensive lunch with clients141- 28-09-2004Expensive lunch with clients142- 28-09-2004Expensive lunch with clients143- 28-09-2004Expensive lunch with clients144- 28-09-2004Expensive lunch with clients145- 28-09-2004Expensive lunch with clients146- 28-09-2004Expensive lunch with clients147- 28-09-2004Expensive lunch with clients148- 28-09-2004Expensive lunch with clients149- 28-09-2004Expensive lunch with clients150- 28-09-2004Expensive lunch with clients151- 28-09-2004Expensive lunch with clients152- 28-09-2004Expensive lunch with clients153- Now we move the subheader up one and change its tag to <tr noSplitRowCount="3"> so the subheader row and the following two are bound together ie we won't split the three. DateItemDebitCredit 28-09-2004Expensive lunch with clients100- 28-09-2004Expensive lunch with clients101- 28-09-2004Expensive lunch with clients102- 28-09-2004Expensive lunch with clients103- 28-09-2004Expensive lunch with clients104- 28-09-2004Expensive lunch with clients105- 28-09-2004Expensive lunch with clients106- 28-09-2004Expensive lunch with clients107- 28-09-2004Expensive lunch with clients108- 28-09-2004Expensive lunch with clients109- 28-09-2004Expensive lunch with clients110- 28-09-2004Expensive lunch with clients111- 28-09-2004Expensive lunch with clients112- 28-09-2004Expensive lunch with clients113- 28-09-2004Expensive lunch with clients114- 28-09-2004Expensive lunch with clients115- 28-09-2004Expensive lunch with clients116- 28-09-2004Expensive lunch with clients117- 28-09-2004Expensive lunch with clients118- 28-09-2004Expensive lunch with clients119- 28-09-2004Expensive lunch with clients120- 28-09-2004Expensive lunch with clients121- 28-09-2004Expensive lunch with clients122- 28-09-2004Expensive lunch with clients123- 28-09-2004Expensive lunch with clients124- 28-09-2004Expensive lunch with clients125- 28-09-2004Expensive lunch with clients126- 28-09-2004Expensive lunch with clients127- 28-09-2004Expensive lunch with clients128- 28-09-2004Expensive lunch with clients129- 28-09-2004Expensive lunch with clients130- 28-09-2004Expensive lunch with clients131- 28-09-2004Expensive lunch with clients132- 28-09-2004Expensive lunch with clients133- 28-09-2004Expensive lunch with clients134- 28-09-2004Expensive lunch with clients135- This is a subheader 28-09-2004Expensive lunch with clients136- 28-09-2004Expensive lunch with clients137- 28-09-2004Expensive lunch with clients138- 28-09-2004Expensive lunch with clients139- 28-09-2004Expensive lunch with clients140- 28-09-2004Expensive lunch with clients141- 28-09-2004Expensive lunch with clients142- 28-09-2004Expensive lunch with clients143- 28-09-2004Expensive lunch with clients144- 28-09-2004Expensive lunch with clients145- 28-09-2004Expensive lunch with clients146- 28-09-2004Expensive lunch with clients147- 28-09-2004Expensive lunch with clients148- 28-09-2004Expensive lunch with clients149- 28-09-2004Expensive lunch with clients150- 28-09-2004Expensive lunch with clients151- 28-09-2004Expensive lunch with clients152- 28-09-2004Expensive lunch with clients153- This is a table with some vertical text. Vertical orientation Horizontal orientation Horizontal orientation HTML style row spans & use of ident(helps when errors happen). ScenarioUser device OSBrowser requiredWeb Interface siteClientClient install AWindows XP, Windows XP EmbeddedYesDesktop ApplianceDesktop Appliance Lock in Citrix online plug-in 12.1Preinstalled by administrator LinuxCitrix Receiver for Linux 11.100 BWindows XP, Windows XP EmbeddedNoXenDesktop ServicesSee manufacturer's documentation for the relevant thin clientPreinstalled by administrator CWindows 7, Windows Vista, Windows XPYesXenDesktop WebDesktop Viewer in Citrix online plug-in 12.1Preinstalled by administrator or through auto client detection or user prompt Windows CEClient for Windows CE 10. Macintosh OS XCitrix online plug-in for Macintosh 11.2 HTML style row and column spans. Component Specifications pServerOne pServerTwo CPU Up to 32 64-bit Intel VT or AMD-V x86 CPUs or equivalent.1.5 GHz minimum recommended clock speed, 2.0 GHz or faster multicore CPUs recommended. Both of the above CPU types support hardware virtualization, which is a requirement. In addition, the BIOS setting for hardware visualization must be enabled. For more information, see the documentation for your BIOS.Important: If your CPUs do not support hardware virtualization, you cannot complete the installation. Memory Minimum 8 GB RAM. Hard Disk 100 GB locally attached storage (for example, PATA, SATA, or SCSI). NIC 100 Mbps (megabits per second) or faster network interface card (NIC). pXenCenterComputer A computer running: For more information about the specifications for this device, see the XenServer Installation Guide. User devices Computers running: For more information about user device requirements, see XenDesktop 4 System Requirements.