public ActionResult GeneratePDFOutput()
        {
            // Get BookID, VersionID & Year from Cookie
            var pContext    = System.Web.HttpContext.Current;
            var lCookieData = CookieManagement.GetCookie(pContext);
            var lLogMsg     = string.Empty;
            var pdfService  = new PDFService();

            try
            {
                // Print Output for given BookID
                var pdfModel = new PDFDocumentModel
                {
                    Book        = lCookieData.Book,
                    BookID      = Convert.ToInt32(lCookieData.BookID),
                    Publisher   = lCookieData.Publisher,
                    PublisherID = Convert.ToInt32(lCookieData.PublisherID),
                    VersionID   = lCookieData.VersionID,
                    Year        = lCookieData.Year
                };

                var lResult = pdfService.BuildPDF(pdfModel, pContext);

                if (lResult.Any())
                {
                    // Set Up the Response Stream for the Spec Sheet Collection
                    System.Web.HttpContext.Current.Response.Clear();
                    System.Web.HttpContext.Current.Response.BufferOutput = false;
                    System.Web.HttpContext.Current.Response.ContentType  = "application/pdf";
                    System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + "loreal_output.pdf");
                    // Create a FileStream for the PDF and Send it to the Response's OutputStream
                    using (var outStream = new FileStream(pdfService.FilePath, FileMode.Open))
                    {
                        byte[] buffer = new byte[4096];
                        int    count  = 0;
                        while ((count = outStream.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            System.Web.HttpContext.Current.Response.OutputStream.Write(buffer, 0, count);
                            System.Web.HttpContext.Current.Response.Flush();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var lReturnMessage = String.Format("Error in PrintPDFOutput.  BOOK: {0}, Publisher: {1}.", lCookieData.Book, lCookieData.Publisher);
                lLogMsg = String.Format(lReturnMessage + "ERROR MESSAGE: {0}.  SOURCE: {1}. STACKTRACE: {2}.", ex.Message, ex.Source, ex.StackTrace);
                logger.Error(lLogMsg);
            }

            return(View());
        }
        //public HttpResponseMessage PrintPDFOutput()
        //public System.Web.Mvc.ActionResult PrintPDFOutput()
        public IHttpActionResult PrintPDFOutput()
        {
            // Get BookID, VersionID & Year from Cookie
            var pContext    = System.Web.HttpContext.Current;
            var lCookieData = CookieManagement.GetCookie(pContext);
            var lLogMsg     = string.Empty;
            var pdfService  = new PDFService();

            try
            {
                // Print Output for given BookID
                var pdfModel = new PDFDocumentModel
                {
                    Book        = lCookieData.Book,
                    BookID      = Convert.ToInt32(lCookieData.BookID),
                    Publisher   = lCookieData.Publisher,
                    PublisherID = Convert.ToInt32(lCookieData.PublisherID),
                    VersionID   = lCookieData.VersionID,
                    Year        = lCookieData.Year
                };

                var lResult = pdfService.BuildPDF(pdfModel, pContext);

                if (lResult.Any())
                {
                    // Set up the Response Stream for the File
                    HttpContext.Current.Response.Clear();
                    HttpContext.Current.Response.ClearHeaders();
                    HttpContext.Current.Response.ClearContent();
                    HttpContext.Current.Response.Expires = -1000;
                    //HttpContext.Current.Response.BufferOutput = false;
                    HttpContext.Current.Response.ContentType = "application/pdf";
                    HttpContext.Current.Response.AddHeader("content-length", lResult.Length.ToString());
                    HttpContext.Current.Response.AddHeader("content-disposition", "inline; filename=" + "loreal_output.pdf");
                    HttpContext.Current.Response.BinaryWrite(lResult);
                    HttpContext.Current.Response.End();
                }

                //}
            }
            catch (Exception ex)
            {
                var lReturnMessage = String.Format("Error in PrintPDFOutput.  BOOK: {0}, Publisher: {1}.", lCookieData.Book, lCookieData.Publisher);
                lLogMsg = String.Format(lReturnMessage + "ERROR MESSAGE: {0}.  SOURCE: {1}. STACKTRACE: {2}.", ex.Message, ex.Source, ex.StackTrace);
                logger.Error(lLogMsg);
            }

            return(Ok(HttpContext.Current.Response));
        }