2017-12-08 1 views
0
public IHttpActionResult DownloadPDF() 
{ 
    var stream = CreatePdf(); 

    return ResponseMessage(new HttpResponseMessage 
    { 
     Content = new StreamContent(stream) 
     { 
      Headers = 
      { 
       ContentType = new MediaTypeHeaderValue("application/pdf"), 
       ContentDisposition = new ContentDispositionHeaderValue("attachment") 
       { 
        FileName = "myfile.pdf" 
       } 
      } 
     }, 
     StatusCode = HttpStatusCode.OK 
    }); 
} 
Here is the CreatePdf method: 

private Stream CreatePdf() 
{ 
    using (var document = new Document(PageSize.A4, 50, 50, 25, 25)) 
    { 
     var output = new MemoryStream(); 

     var writer = PdfWriter.GetInstance(document, output); 
     writer.CloseStream = false; 

     document.Open(); 
     document.Add(new Paragraph("Hello World")); 
     document.Close(); 

     output.Seek(0, SeekOrigin.Begin); 

     return output; 
    } 
} 

Ich kann die PDF herunterladen, aber der Kontext ist leer. Hier benutze ich den memory stream und ich habe auch versucht mit file stream den Download in den jeweiligen Ordner durchzuführen, aber wenn ich versucht habe die heruntergeladene Datei zu öffnen, dann ist auch der Inhalt leer. Kann mir jemand helfen, was ich hier vermisse?Leere Inhalt auf der heruntergeladenen PDF mit itextsharp in WebAPI 2 Antwort

+0

Versuchen Aktion mit dem Dokument vor dem Schließen – Nkosi

+0

Schließen des Dokuments Auch sollte die letzte Sache, bevor die Ausgabe – Nkosi

Antwort

0

Hier ist ein Ansatz, der in der Regel für mich funktioniert, wenn Web-API

private byte[] CreatePdf() { 
    var buffer = new byte[0]; 
    //stream to hold output data 
    var output = new MemoryStream(); 
    //creation of a document-object 
    using (var document = new Document(PageSize.A4, 50, 50, 25, 25)) { 
     //create a writer that listens to the document 
     // and directs a PDF-stream to output stream 
     var writer = PdfWriter.GetInstance(document, output); 

     //open the document 
     document.Open(); 

     // Create a page in the document 
     document.NewPage(); 

     // Get the top layer to write some text 
     var pdfContentBytes = writer.DirectContent; 
     pdfContentBytes.BeginText(); 

     //add content to page 
     document.Add(new Paragraph("Hello World")); 

     //done writing text 
     pdfContentBytes.EndText(); 

     // make sure any data in the buffer is written to the output stream 
     writer.Flush(); 

     document.Close(); 
    }  
    buffer = output.GetBuffer(); 
    return buffer; 
} 

Und dann in der der Schriftsteller Spülung

public IHttpActionResult DownloadPDF() { 
    var buffer = CreatePdf(); 

    return ResponseMessage(new HttpResponseMessage { 
     Content = new StreamContent(new MemoryStream(buffer)) { 
      Headers = { 
       ContentType = new MediaTypeHeaderValue("application/pdf"), 
       ContentDisposition = new ContentDispositionHeaderValue("attachment") { 
        FileName = "myfile.pdf" 
       } 
      } 
     }, 
     StatusCode = HttpStatusCode.OK 
    }); 
} 
+0

Vielen Dank für Ihre Kommentare. Aber jetzt kann ich nicht einmal die Datei folgenden Fehler öffnen "Fehler beim Laden des PDF-Dokuments." Ich erhalte. – Sabarish

+0

@Sabarish überprüfen Update – Nkosi

+0

Jetzt wieder die vorherige Ausgabe, sehe ich nicht den Inhalt der PDF. Hier ist es leer. – Sabarish

Verwandte Themen