Пример #1
0
        private string GetHtmlFromView()
        {
            this.WkhtmlPath = HttpContext.Current.Server.MapPath("~/Rotativa");

            if (string.IsNullOrEmpty(_viewName))
            {
                _viewName = _context.RouteData.GetRequiredString("action");
            }

            var viewResult = ViewEngines.Engines.FindView(_context, _viewName, _masterName);
            var html       = _context.GetHtmlFromView(viewResult, _viewName, _model);

            return(html);
        }
Пример #2
0
        protected override byte[] CallTheDriver(ControllerContext context)
        {
            // use action name if the view name was not provided
            string viewName = ViewName;

            if (string.IsNullOrEmpty(viewName))
            {
                viewName = context.RouteData.GetRequiredString("action");
            }

            ViewEngineResult viewResult = GetView(context, viewName, MasterName);
            string           html       = context.GetHtmlFromView(viewResult, viewName, Model);

            byte[] fileContent = WkhtmltopdfDriver.ConvertHtml(this.WkhtmlPath, this.GetConvertOptions(), html);
            return(fileContent);
        }
Пример #3
0
        public override void ExecuteResult(ControllerContext context)
        {
            var headers = context.HttpContext.Request.Headers;
            var cookies = context.HttpContext.Request.Cookies;

            var geckoCookies = new List <GeckoCookie>();

            foreach (var key in cookies.AllKeys)
            {
                var c = cookies[key];
                geckoCookies.Add(new GeckoCookie
                {
                    Name        = c.Name,
                    Value       = c.Value,
                    Path        = c.Path,
                    ExpiresUnix = DateTimeToUnixTimestamp(c.Expires),
                    HttpOnly    = c.HttpOnly,
                    Secure      = c.Secure
                });
            }

            var viewName = ViewName;

            if (string.IsNullOrEmpty(viewName))
            {
                viewName = context.RouteData.GetRequiredString("action");
            }

            var viewResult = GetView(context, viewName, MasterName);
            var html       = context.GetHtmlFromView(viewResult, viewName, Model);

            var tempDir  = context.HttpContext.Server.MapPath("~/App_Data/temp");
            var tempFile = Path.Combine(tempDir, Guid.NewGuid().ToString() + ".tmp");

            var bytes = new GeckoPdf(_config).ConvertHtml(context.HttpContext.Request.Url.AbsoluteUri, html, null, geckoCookies, tempFile);

            var response = PrepareResponse(context.HttpContext.Response);

            response.OutputStream.Write(bytes, 0, bytes.Length);
        }