There are lots and lots of ways to do this. As you can see if you
google[
^] the issue.
There are many third party components you could try.
iTextSharp[
^]
PDFSharp[
^]
SharpPDF[
^]
Those are a few I found on google.
The way that I've done it in the past is to create a CrystalReport. You design the report and then in your program you can pass it data. You can use a Crystal Report Viewer object to print preview or whatever, but the key is that you can export the report into a PDF. It's very basic and limited. You can't set certain properties while exporting it or use security on the PDF. But you can get the basic report in the format you want. Then you could use one of the third party libraries mentioned above (I've used PDFsharp) to add security or make other settings changes.
Hope this helps.