Ejemplo n.º 1
0
        public ActionResult Generate(string id)
        {
            Guid requestedGuid = Guid.Empty;

            if (!Guid.TryParse(id, out requestedGuid))
            {
                return(Content("Guid Not Formatted properly."));
            }

            var item = Sitecore.Context.Database.GetItem(new Sitecore.Data.ID(id));

            if (item == null)
            {
                return(Content("Invalid ID"));
            }

            var itemUrl = item.GetFullyQualifiedUrl();

            var result = new UrlAsPdf(itemUrl);

            //Set Options
            if (!string.IsNullOrEmpty(Request.QueryString["name"]))
            {
                result.FileName = item.Name + ".pdf";
            }

            if (!string.IsNullOrEmpty(Request.QueryString["landscape"]))
            {
                result.PageOrientation = Rotativa.Options.Orientation.Landscape;
            }

            string requestedSize = Request.QueryString["size"];

            if (!string.IsNullOrEmpty(requestedSize))
            {
                Rotativa.Options.Size size = Rotativa.Options.Size.Letter;
                if (Enum.TryParse <Rotativa.Options.Size>(requestedSize, out size))
                {
                    result.PageSize = size;
                }
            }

            string pageWidth = Request.QueryString["width"];

            if (!string.IsNullOrEmpty(pageWidth))
            {
                double width = 0;
                if (double.TryParse(pageWidth, out width))
                {
                    result.PageWidth = width;
                }
            }
            string pageHeight = Request.QueryString["height"];

            if (!string.IsNullOrEmpty(pageHeight))
            {
                double height = 0;
                if (double.TryParse(pageHeight, out height))
                {
                    result.PageHeight = height;
                }
            }

            if (!string.IsNullOrEmpty(Request.QueryString["nomargin"]))
            {
                result.PageMargins.Left   = 0;
                result.PageMargins.Right  = 0;
                result.PageMargins.Top    = 0;
                result.PageMargins.Bottom = 0;
            }

            if (!string.IsNullOrEmpty(Request.QueryString["passauth"]))
            {
                //pass any existing cookies and auth tokens
                result.Cookies = Request.Cookies.AllKeys.ToDictionary(k => k, k => Request.Cookies[k].Value);
                result.FormsAuthenticationCookieName = System.Web.Security.FormsAuthentication.FormsCookieName;
            }

            string disableSmartShrinking = Request.QueryString["dss"];

            if (!string.IsNullOrEmpty(disableSmartShrinking))
            {
                result.CustomSwitches  = "--load-error-handling ignore";
                result.CustomSwitches += " --disable-smart-shrinking";
            }

            //string saveLocal = Request.QueryString["sl"];
            //if (!string.IsNullOrEmpty(saveLocal))
            //{
            //    result.SaveOnServerPath = @"C:\inetpub\wwwroot\rms\Website\App_Data\tempPDFs";
            //}

            //var binary = result.BuildPdf(this.ControllerContext);
            // return File(binary, "application/pdf", result.FileName);
            return(result);
        }
        public ActionResult Generate(string id)
        {
            Guid requestedGuid = Guid.Empty;

            if (!Guid.TryParse(id, out requestedGuid))
            {
                return(Content("Guid Not Formatted properly."));
            }

            var item = Sitecore.Context.Database.GetItem(new Sitecore.Data.ID(id));

            if (item == null)
            {
                return(Content("Invalid ID"));
            }

            var itemUrl = item.GetFullyQualifiedUrl();

            var result = new UrlAsPdf(itemUrl);

            //Set Options
            if (!string.IsNullOrEmpty(Request.QueryString["name"]))
            {
                result.FileName = item.Name + ".pdf";
            }

            if (!string.IsNullOrEmpty(Request.QueryString["landscape"]))
            {
                result.PageOrientation = Rotativa.Options.Orientation.Landscape;
            }

            string requestedSize = Request.QueryString["size"];

            if (!string.IsNullOrEmpty(requestedSize))
            {
                Rotativa.Options.Size size = Rotativa.Options.Size.Letter;
                if (Enum.TryParse <Rotativa.Options.Size>(requestedSize, out size))
                {
                    result.PageSize = size;
                }
            }

            string pageWidth = Request.QueryString["width"];

            if (!string.IsNullOrEmpty(pageWidth))
            {
                double width = 0;
                if (double.TryParse(pageWidth, out width))
                {
                    result.PageWidth = width;
                }
            }
            string pageHeight = Request.QueryString["height"];

            if (!string.IsNullOrEmpty(pageHeight))
            {
                double height = 0;
                if (double.TryParse(pageHeight, out height))
                {
                    result.PageHeight = height;
                }
            }

            if (!string.IsNullOrEmpty(Request.QueryString["nomargin"]))
            {
                result.PageMargins.Left   = 0;
                result.PageMargins.Right  = 0;
                result.PageMargins.Top    = 0;
                result.PageMargins.Bottom = 0;
            }

            if (string.IsNullOrEmpty(Request.QueryString["ignoreCookies"]))
            {
                Dictionary <string, string> cookieCollection = new Dictionary <string, string>();
                foreach (var key in Request.Cookies.AllKeys)
                {
                    if (!cookieCollection.ContainsKey(key))
                    {
                        cookieCollection.Add(key, Request.Cookies.Get(key).Value);
                    }
                }

                //pass any existing cookies and auth tokens
                result.Cookies = cookieCollection;
                result.FormsAuthenticationCookieName = System.Web.Security.FormsAuthentication.FormsCookieName;
            }

            string disableSmartShrinking = Request.QueryString["dss"];

            if (!string.IsNullOrEmpty(disableSmartShrinking))
            {
                result.CustomSwitches  = "--load-error-handling ignore";
                result.CustomSwitches += " --disable-smart-shrinking";
            }

            return(result);
        }