Я не знаю наверняка для классического asp.net, но используя mvc, потоковая передача пользователю делает то, что вы хотите:
MemoryStream stream = PDF.GeneratePDFByStream();
stream.Flush(); //Always catches me out
stream.Position = 0; //Not sure if this is required
return stream;
с
public static MemoryStream GeneratePDFByStream() {
var doc1 = new Document();
//use a variable to let my code fit across the page...
string path = AppDomain.CurrentDomain.BaseDirectory + "PDFs";
MemoryStream stream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(doc1, stream);
writer.CloseStream = false;
// Actual Writing
doc1.Open();
// writing comes here, you will probably just load the PDF in a stream?
doc1.Close();
return stream;
}
И ваш контроллер MVC возвращает что-то вроде
return File(GetPDFStream(id), "application/pdf");
Итак, я знаю, что это не точный ответ, который вы ищете, но, возможно, вы должны попытаться передать ваш PDF пользователю, так как он откроет его в новой вкладке, насколько я когда-либо проверил это.
С макушки головы вы должны получить что-то вроде:
Response.Clear();
Response.ContentType = "application/pdf";
Response.OutputStream.Write( objMemoryStream.ToArray(), 0,
Convert.ToInt32(objMemoryStream.Length));
Response.Flush();
try { Response.End(); } catch{}