My project is very similar to NerdDinner and I’m generating a pdf-document using PdfSharp.
In my view I’m using this:
<%: Html.ActionLink("Pdf", "GeneratePdf1", "Persons")%>
Calling this ActionResult:
public ActionResult GeneratePdf1()
{
// Create a new PDF document
PdfDocument document = new PdfDocument();
document.Info.Title = "Created with PDFsharp";
// Create an empty page
PdfPage page = document.AddPage();
// Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);
// Create a font
XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic);
// Draw the text
gfx.DrawString("Hello, World!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height),
XStringFormats.Center);
// Save the document...
const string filename = "HelloWorld.pdf";
document.Save(filename);
Process.Start(filename);
return View();
}
A few questions/problems on this:
- I don’t want the link to post. When you click the link it should just open the file, but I don’t know what to return to prevent it from posting.
- I’d also like the “save/open” dialog to appear. Right now the pdf file is displayed directly.
You want to return a
FileResultnot anActionResult. Also, I would save it to aMemoryStreamand return the byte array, not use a file. Full solution below.