I've rendered SSRS reports without using the ReportViewer control, most recently using LocalReports. You can in code configure the ReportViewer, force it to generate a PDF, and grab the byte stream of the PDF. I stopped there and rendered the PDF to the screen b/c that was my set of requirements, but I'm sure its much easier to find a way to print a byte stream of a PDF file then it is to deal with anything with the ReportViewer.
Here is how to get the LocalReport to a byte array of a PDF file:
LocalReport lclRpt = new LocalReport();
//Do Stuff like bind DataSources, ReportParameters, SubReportProcessing Delegates, etc.
string strMIMEType = String.Empty;
string strEncoding = String.Empty;
string strFileNameExtension = string.Empty;
string[] strarrStreams;
Warning[] warnLocalReportWarnings;
byte[] bytarrPDF = lclRpt.Render("PDF", "<DeviceInfo><StartPage>0</StartPage></DeviceInfo>", out strMIMEType, out strEncoding, out strFileNameExtension, out strarrStreams, out warnLocalReportWarnings);
return bytarrPDF;
I'm not 100% on how to accomplish your last step, might need a .pdf utility or there might be a way to do it straight from the code.