I have previously had to generate a lot of forms of this nature. There is no dead easy way, and I ended either:
  • Painting the form entirely using the QPainter primitives. I draw as if the page was A4 sized with 0.1 point grid (ugly units I know) and used transforms to fit it to the actual page (A4, A5, US Letter, whatever) when printed.
  • Painting the fixed elements of the form from an SVG file and using the QPainter to fill in the variable information. I queried the SVG to find the boxes to contain text (by XML id) so that if I adjusted the SVG template the output would follow. You have a bit of fun with the SVG/painter/Device coordinates, but worked quite well for long tabular lists.
  • Sometimes use QTextDocument for simpler layouts. For more narrative text output a QTextDoument would be a good option.

Either way there is quite a bit of work.

There were some third-party (OS and paid) tools that I vaguely recall; CuteReport, NCReport, KD Reports. Never used them.