PDF Generation Library for Java [closed]
Give JasperReports a try. Use iReport to create the .jrxml files. JapserReports can handle complex layouts. For those parts of the report based on different queries have a look at using subreports embedded into the main report. Just like @Adrian Smith’s solution this approach will separate the report layout editing from the data sourcing.