2014-10-28 9 views
5

Używam programu Rotativa do generowania plików PDF w aplikacji "MVC". Jak mogę zapisać plik PDF Rotativa? Po zakończeniu całego procesu muszę zapisać dokument na serwerze.Jak zapisać plik PDF Rotativa na serwerze

kod poniżej:

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 });    

} 

Odpowiedz

12

Możesz dać to spróbuj

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(); 

Jeśli to nie załatwi tego czasu można śledzić odpowiedzi here

Wystarczy upewnić się, jeśli robisz to w ten sposób, aby nie zwracać PRVRequestPdf jako widoku PDF, to raczej normalny widok, jaki masz powyżej (wspominając tylko, że sam się o to potykam, powodując wiele zabawy).

2

Inną użyteczną odpowiedź:

znalazłem rozwiązanie 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); 

Jest to oryginalna thread

+0

Rozwiązanie to wykorzystuje odpowiedź Daniela też. – meJustAndrew

Powiązane problemy