2016-06-13 1 views
1

Expanding on this question, Ich habe Schwierigkeiten zu erarbeiten, wie ich angeben kann, welche PDF ich gerade lese.Lesen eines PDF-Dokuments als Teil der während der Angabe, welche PDF zu rendern

Ich erstelle meine PDF mit WkHtmlToPdf, die die PDF-Datei erzeugt. Ich rette dann das PDF-Bytes zu meiner Datenbank und ich möchte es noch einmal lesen, um es auf der Ansicht anzuzeigen:

public void GetPDF(int id) 
{ 
    // get the byte array for the PDF out of the database 
    var Pdf = db.Invoices.FirstOrDefault(x => x.Id == id).Document; 

    //FileStream Stream = new FileStream(filePath, FileMode.Open, FileAccess.Read); 
    //return File(Stream, "application/pdf"); 

    // this code reads from a file but I need to read the byte array 
    // back out so that it displays as a PDF 
} 

Auf meiner Ansicht, ich dies in der verknüpften Frage nach der Antwort zu tun :

<object data='@Url.Action("GetPDF")'></object> 

Wie gehe ich in den Rechnungs-ID-Parametern in die GetPDF Methode?

Gibt es einen besseren Weg, dies zu tun?

+0

hat diese Frage gelöst? – Nkosi

Antwort

2
@Url.Action("GetPDF", new { id = 1 }) 
+0

Ich hätte wirklich darüber nachdenken sollen, aber ich denke, ich war wie üblich überkompliziert ^^ – Ortund

2

Hier ist, wie das Byte-Array zurück zu lesen, so dass es zeigt als PDF

public ActionResult GetPDF(int id) { 
    // get the byte array for the PDF out of the database 
    var Pdf = db.Invoices.FirstOrDefault(x => x.Id == id).Document; 
    // return Pdf content 
    return File(Pdf, "application/pdf");  
} 

Controller.File hat eine überladene Methode, die eine byte[] des Dateiinhalts nimmt zurückgegeben werden. Geben Sie also das Ergebnis der Übergabe des Bytearrays an diese Methode zurück.

Und @RosdiKasim zeigte man bereits, wie aus der Sicht der Aktion mit der ID nennen

@Url.Action("GetPDF", new { id = 1 })