KleberBH
KleberBH

Reputation: 462

Asp.Net MVC filecontentresult error generating pdf

Controller:

    <HttpGet>
Function downloadpdf() As FileContentResult

    Dim data As MyData = Me.Getdata()
    Dim sb As StringBuilder = New StringBuilder()

    If data IsNot Nothing Then
        If data.HasItems Then
            sb.AppendLine()
            sb.AppendLine("ID,Description)
            For Each item In data.Items
                sb.AppendLine(String.Format("{0},{1}", item.Id, item.Description))
            Next
        End If
    End If
    Dim bytes as Byte() = New UTF8Encoding().GetBytes(sb.ToString())
    Response.Clear()
    Response.AddHeader("Content-Disposition", "inline; filename=mypdf.pdf")
    Response.AddHeader("Content-Type", "application/pdf")
    Response.ClearHeaders()
    Response.AddHeader("Content-Length", bytes.Length.ToString())
    Return File(bytes, "application/pdf", "mypdf.pdf")

End Function

View:

 <a href="@Url.Action("downloadpdf", "home")">PDF</a>

When clicked the link, it prompt to download the file, then it display this:

Adobe Acrobat Reader could not open 'mypdf.pdf' because it is either not a supported file type or because the file has been damaged (for example, it was sent as an email attachment and wasn't correctly decoded).

And the pdf doesn't open. Any suggestion or any other way to do this?

Cheers

Upvotes: 0

Views: 238

Answers (1)

Eduardo Molteni
Eduardo Molteni

Reputation: 39413

This is not the way you create a PDF. You are just returning a text file with a PDF extension.

You will need a third party tool to create a PDF. I use ABCPdf (Paid, I'm not affiliated to them), but there are several open source tools to choose from.

Related: .NET server based PDF generation

Upvotes: 2

Related Questions