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))