Download and convert image to PDF

Generate PDF, Images, Shapes
9/27/2010

This article shows how to download an image on a web page as a PDF document. The image to PDF conversion is done on the fly.

pageshot.PNG

ASPX page

The aspx page is extremely simple. Basically it consists of an img element and a ActionLink element as shown in the following code snippet.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Index</title>
</head>
<body>
    <div>
        <img src="../image.png" />
        <br />
        @Html.ActionLink("Click here!", "Convert")
    </div>
</body>
</html>

Code-behind file

The code-behind file consists of just the OnClick handler. It creates a document, adds a page that has the same size as the image, adds an image shape to the page and then streams the PDF document to the client.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TallComponents.PDF;
using TallComponents.PDF.Shapes;
using System.Web.Mvc;
using System.IO;

namespace ImageToPDFWeb.Controllers
{
    public class PDFController : Controller
    {
        public ActionResult Index()
        {
            //show the index page to the client
            return View();
        }

        public FileStreamResult Convert()
        {
            //Create a new PDF document and add the image as an overlay to a page
            Document document = new Document();
            ImageShape image = new ImageShape(
              Server.MapPath(@"..\image.png"));
            Page page = new Page(image.Width, image.Height);
            page.Overlay.Add(image);
            document.Pages.Add(page);

            //since we don't write to disk, write the pdf to a memory stream and return it as a pdf
            MemoryStream ms = new MemoryStream();
            document.Write(ms);
            ms.Flush();
            ms.Position = 0;
            return File(ms, "application/pdf");
        }
    }
}