I'm looking for a reporting layout tool and print "engine" to replace the current home-made solution (it's getting too hard and time consuming to maintain). CrystalReports has "sort of" already been dismissed because of bulk and cost.

What I'm looking for is:
- something that integrates in a VS C++ native project 'easily'.
- can work without a formal database, but can work off xml at least, or even better from content generated dynamically by our code (via a callback mechanism of some sort)
- support for dynamic fields (callback)
- support formulas, totals, subtotals, ...
- The customers of our software should have a means to customize the reports (ideally for free, a small cost is acceptable, this is basically why CrystalReports was dismissed, unless I understand the licensing incorrctly, our customers would have to buy a full version (around 500$) just to make minor changes to layouts.
- needs to support printing to printer directly, export to text & export to pdf.
- some of our layouts are quite complex

nice to have:
- print preview
- export to other formats (xml, rtf, word, excel, tekst, ...)
- charts, support for barcodes (without specialized fonts),

What are you using ? Are you happy with it ? Using/know something that does the above ?