В моем контроллере у меня есть подобное действие для генерации PDF с использованием iTextSharp:
public FileResult Print(int id)
{
string fileName = "something.pdf";
Document document = new Document(PageSize.A4, 18, 18, 36, 36);
MemoryStream stream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(document, stream);
HeaderFooter.Title = "Something";
HeaderFooter.Box = "box";
HeaderFooter tevent = new HeaderFooter();
writer.SetBoxSize(HeaderFooter.Box, new Rectangle(18, 72, 577, 770));
writer.PageEvent = tevent;
document.Open();
.
.
.
document.Close();
return File(stream.ToArray(), "application/pdf", fileName);
}
После создания документа (счета-фактуры) я могу напечатать его из вида: <a href="@Url.Action("Print", new { id = Model.InvoiceID })">
и работает нормально. Но то, что я действительно хочу, это распечатать его в конце процесса создания до возврата, и там документ не печатается (без каких-либо сообщений об ошибках):
// POST: /Invoice/Create
[HttpPost]
public JsonResult Create(Invoice invoice)
{
try
{
if (ModelState.IsValid)
{
.
.
.
unitOfWork.InvoiceRepository.Insert(invoice);
unitOfWork.Save();
Print(invoice.invoiceID);
}
return Json(new { Success = 1, InvoiceID = invoice.InvoiceID, ex = "" });
}
catch {...}
}
Я проверил, что каждый шаг действие Print выполнено, но pdf не возвращается. Что я делаю не так?