Возможно создать документ в формате PDF в памяти с iTextSharp, который дает пользователю выбор "открыть" или "сохранить"?, и если это открывается затем, это открывается в окне браузера.
В данный момент единственные, которые я имею, сохраняют его на диск.
Править:
хорошо мне разузнали его. Я действительно заканчивал тем, что имел необходимость записать файл в папку, но это является только временным, как перезаписывается каждый раз. Вот решение если это имеет значение:
private void GeneratePDF() {
var doc1 = new Document();
string path = Server.MapPath("~/pdfs/");
string filepath = path + "Doc1.pdf";
PdfWriter.GetInstance(doc1, new FileStream(filepath, FileMode.Create));
doc1.Open();
doc1.Add(new Paragraph("A new Document"));
doc1.Add(new Paragraph(DateTime.Now.ToString()));
doc1.Close();
Response.Buffer = false; //transmitfile self buffers
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=myPDF.pdf");
Response.TransmitFile(filepath);
Response.End();
}
Вы можете сохранить PDF в поток памяти и записать его в браузер следующим образом.
protected void Page_Load(object sender, EventArgs e)
{
MemoryStream ms;
using (ms = new MemoryStream())
{
PdfWriter writer = PdfWriter.GetInstance(myPdfDoc, ms);
Response.ContentType = "application/pdf";
Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
Response.OutputStream.Flush();
Response.OutputStream.Close();
}
}
Вам необходимо сохранить его во временную папку, а затем вызвать Process.Start
для файла.
Для открытия / отображения PDF-файла вы можете использовать компонент acrobat activex после сохранения файла во временную папку. Мне не удалось найти бесплатный элемент управления для отображения PDF-файлов в более раннем исследовании.