To generate PDF, you can use iText, or its .NET port, iTextSharp:
http://en.wikipedia.org/wiki/IText[
^],
http://itextpdf.com/[
^],
http://sourceforge.net/projects/itextsharp/[
^].
In included the reference to Java iText site as well, because most documentation is there. If you understand C#, it would not be difficult to understand Java-bases API documentation.
It's always better to generate documents not from UI but from your data model, but then you have to have appropriate application architecture.
—SA