I had a COM component for classic ASP to create a PDF on the fly, but a) I'm a snobby/snooty managed .net component kind of guy now (There's no reason not to be) and b) it's tied to the IP address of our servers, which might change soon. So I sleuthed around for a suitable replacement, and after comparing cost to features (and general impression of the company and support I'd get), I think I'm going to go with Siberix Report Writer. I had one "gotcha" when trying to attach the bits to an email. Siberix lets you "publish" your PDF to your web page's output stream (or simply a memory stream), and since System.Net.Mail lets you attach the contents of a stream to an email as an attachment, I was pretty much good to go. The only problem was, when I tried to email the PDF to myself and open it, it was only 88 bytes and acrobat reader told me it was corrupt. So I emailed the good folks at siberix and got a very swift and efficient reply telling me to reset the stream position to zero. I did so, and behold, my PDF was succesfully emailed. Here is the code in case any of you out there are trying to do likewise:
Dim stream As New System.IO.MemoryStream
Dim report As Siberix.Report.Report = CreatePDF()
'using any of the example PDF's on their site
report.Publish(stream, Siberix.Report.FileFormat.PDF)
stream.Position = 0
msg.Attachments.Add(New System.Net.Mail.Attachment(stream, _
"attachmentfilename.pdf", _
System.Net.Mime.MediaTypeNames.Application.Pdf))