public ActionResult GetPdfWithPrintDialog(GetFileParameters parameters)
        {
            var displayName = string.IsNullOrEmpty(parameters.DisplayName)
                ? Path.GetFileName(parameters.Path)
                : Uri.EscapeDataString(parameters.DisplayName);

            var guid = parameters.Path;

            var options = new PdfFileOptions();
            options.Transformations |= Transformation.Reorder;

            if (!string.IsNullOrEmpty(parameters.WatermarkText))
                options.Watermark = Utils.GetWatermark(parameters.WatermarkText, parameters.WatermarkColor, parameters.WatermarkPosition, parameters.WatermarkWidth);
            if (parameters.IsPrintable)
                options.Transformations |= Transformation.AddPrintAction;
            if (parameters.SupportPageRotation)
                options.Transformations |= Transformation.Rotate;

            var response = _htmlHandler.GetPdfFile(guid, options);

            var contentDispositionString = new ContentDisposition
            {
                FileName = displayName,
                Inline = true
            }.ToString();
            Response.AddHeader("Content-Disposition", contentDispositionString);

            return File(((MemoryStream)response.Stream).ToArray(), "application/pdf");
        }
        public ActionResult GetFile(GetFileParameters parameters)
        {
            var displayName = string.IsNullOrEmpty(parameters.DisplayName)
                ? Path.GetFileName(parameters.Path)
                : Uri.EscapeDataString(parameters.DisplayName);

            var guid = parameters.Path;

            Stream fileStream;
            if (parameters.GetPdf)
            {
                displayName = Path.ChangeExtension(displayName, "pdf");

                var options = new PdfFileOptions();
                options.Transformations |= Transformation.Reorder;

                if (!string.IsNullOrEmpty(parameters.WatermarkText))
                    options.Watermark = Utils.GetWatermark(parameters.WatermarkText, parameters.WatermarkColor, parameters.WatermarkPosition, parameters.WatermarkWidth);
                if (parameters.IsPrintable)
                    options.Transformations |= Transformation.AddPrintAction;
                if (parameters.SupportPageRotation)
                    options.Transformations |= Transformation.Rotate;

                var pdfFileResponse = _htmlHandler.GetPdfFile(guid, options);
                fileStream = pdfFileResponse.Stream;
            }
            else
            {
                var fileResponse = _htmlHandler.GetFile(guid);
                fileStream = fileResponse.Stream;
            }

            //jquery.fileDownload uses this cookie to determine that a file download has completed successfully
            Response.SetCookie(new HttpCookie("jqueryFileDownloadJSForGD", "true") { Path = "/" });

            fileStream.Position = 0;
            using (var ms = new MemoryStream())
            {
                fileStream.CopyTo(ms);
                return File(ms.ToArray(), "application/octet-stream", displayName);
            }
        }