2014-10-28 4 views
5

Я использую Rotativa для генерации PDF в моем приложении «MVC». Как сохранить PDF-файл Rotativa? Мне нужно сохранить документ на сервере после завершения всего процесса.Как сохранить Rotativa PDF на сервере

код ниже:

public ActionResult PRVRequestPdf(string refnum,string emid) 
{ 
    var prv = functions.getprvrequest(refnum, emid);    
    return View(prv); 

} 
public ActionResult PDFPRVRequest() 
{ 
    var prv = Session["PRV"] as PRVRequestModel; 
    byte[] pdfByteArray = Rotativa.WkhtmltopdfDriver.ConvertHtml("Rotativa", "Approver", "PRVRequestPdf"); 
    return new Rotativa.ViewAsPdf("PRVRequestPdf", new { refnum = prv.rheader.request.Referenceno });    

} 

ответ

12

Вы можете дать этому попытку

var actionResult = new ActionAsPdf("PRVRequestPdf", new { refnum = prv.rheader.request.Referenceno, emid = "Whatever this is" }); 
var byteArray = actionResult.BuildPdf(ControllerContext); 
var fileStream = new FileStream(fullPath, FileMode.Create, FileAccess.Write); 
fileStream.Write(byteArray, 0, byteArray.Length); 
fileStream.Close(); 

Если это не сделать трюк, то вы можете следить за ответы here

Просто убедитесь, если вы сделаете это таким образом, чтобы не иметь PRVRequestPdf возврат в виде PDF-представления, скорее обычный вид, как у вас выше (упоминание только о том, весело).

2

Другой полезный ответ:

Я нашел решение here

  var actionPDF = new Rotativa.ActionAsPdf("YOUR_ACTION_Method", new { id = ID, lang = strLang } //some route values) 
      { 
       //FileName = "TestView.pdf", 
       PageSize = Size.A4, 
       PageOrientation = Rotativa.Options.Orientation.Landscape, 
       PageMargins = { Left = 1, Right = 1 } 
      }; 
      byte[] applicationPDFData = actionPDF.BuildPdf(ControllerContext); 

Это оригинальный thread

+0

Это решение использует ответ Даниэля тоже. – meJustAndrew

Смежные вопросы