Вы можете записать поток непосредственно в выходной буфер ответа.
Так что, если вы находитесь в той точке кода, где у вас есть поток файлов со сканера. Просто прочитайте байты из файлового потока сканера и запишите их в Response.OutputStream
Установите тип содержимого application/pdf
Убедитесь, что вы больше ничего не возвращаете. Браузер пользователей будет делать все, что настроено сейчас, либо сохранять на диск, либо показывать в браузере. В этот момент вы также можете сохранить на диск на сервере, если вам нужна резервная копия.
Я предполагаю, что ваш файловый поток уже является PDF, в противном случае вам нужно будет использовать что-то вроде itextsharp для создания PDF.
Редактировать
Вот примерный и готовый код для этого. Вы можете привести это в порядок, например, добавив перехват исключений, чтобы убедиться, что поток файлов очищен правильно.
public void SaveToOutput(Stream dataStream)
{
dataStream.Seek(0, SeekOrigin.Begin);
FileStream fileout = File.Create("somepath/file.pdf");
const int chunk = 512;
byte[] buffer = new byte[512];
int bytesread = dataStream.Read(buffer,0,chunk);
while (bytesread == chunk)
{
HttpContext.Current.Response.OutputStream.Write(buffer, 0, chunk);
fileout.Write(buffer, 0, chunk);
bytesread = dataStream.Read(buffer, 0, chunk);
}
HttpContext.Current.Response.OutputStream.Write(buffer, 0, bytesread);
fileout.Write(buffer, 0, bytesread);
fileout.Close();
HttpContext.Current.Response.ContentType = "application/pdf";
}
Simon