public string GetFileUrl(string path, bool getPdf, bool isPrintable, string fileDisplayName = null,
                                 string watermarkText = null, int?watermarkColor = null,
                                 WatermarkPosition?watermarkPosition = WatermarkPosition.Diagonal, float?watermarkWidth = 0,
                                 bool ignoreDocumentAbsence          = false,
                                 bool useHtmlBasedEngine             = false,
                                 bool supportPageRotation            = false,
                                 string instanceId = null)
        {
            UrlHelper urlHelper          = new UrlHelper(ControllerContext.RequestContext);
            string    displayNameEncoded = Server.UrlEncode(fileDisplayName);
            string    instanceIdToken    = instanceId;
            string    fileUrl            = ConvertUrlToAbsolute(urlHelper.Action(isPrintable ? "GetPdfWithPrintDialog" : "GetFile",
                                                                                 new
            {
                path,
                displayName = displayNameEncoded,
                getPdf,
                isPrintable,
                watermarkText,
                watermarkColor,
                watermarkPosition,
                watermarkWidth,
                ignoreDocumentAbsence,
                useHtmlBasedEngine,
                supportPageRotation,
                instanceIdToken
            }));

            return(fileUrl);
        }
        private static GroupDocs.Viewer.Domain.WatermarkPosition?ToWatermarkPosition(WatermarkPosition? watermarkPosition)
        {
            if (!watermarkPosition.HasValue)
            {
                return(GroupDocs.Viewer.Domain.WatermarkPosition.Diagonal);
            }

            switch (watermarkPosition.Value)
            {
            case WatermarkPosition.Diagonal:
                return(GroupDocs.Viewer.Domain.WatermarkPosition.Diagonal);

            case WatermarkPosition.TopLeft:
                return(GroupDocs.Viewer.Domain.WatermarkPosition.TopLeft);

            case WatermarkPosition.TopCenter:
                return(GroupDocs.Viewer.Domain.WatermarkPosition.TopCenter);

            case WatermarkPosition.TopRight:
                return(GroupDocs.Viewer.Domain.WatermarkPosition.TopRight);

            case WatermarkPosition.BottomLeft:
                return(GroupDocs.Viewer.Domain.WatermarkPosition.BottomLeft);

            case WatermarkPosition.BottomCenter:
                return(GroupDocs.Viewer.Domain.WatermarkPosition.BottomCenter);

            case WatermarkPosition.BottomRight:
                return(GroupDocs.Viewer.Domain.WatermarkPosition.BottomRight);

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
        public string GetFileUrl(string path, bool getPdf, bool isPrintable, string fileDisplayName = null,
                                 string watermarkText = null, int?watermarkColor = null,
                                 WatermarkPosition?watermarkPosition = WatermarkPosition.Diagonal, float?watermarkWidth = 0,
                                 bool ignoreDocumentAbsence          = false,
                                 bool useHtmlBasedEngine             = false,
                                 bool supportPageRotation            = false,
                                 string instanceId = null)
        {
            //string displayNameEncoded = HttpUtility.UrlEncode(fileDisplayName);
            string instanceIdToken = instanceId;
            string fileUrl         = ConvertUrlToAbsolute(Url.Route("genericRoute",
                                                                    new
            {
                action = isPrintable ? "GetPdfWithPrintDialog" : "GetFile",
                path,
                displayName = fileDisplayName,
                getPdf,
                isPrintable,
                watermarkText,
                watermarkColor,
                watermarkPosition,
                watermarkWidth,
                ignoreDocumentAbsence,
                useHtmlBasedEngine,
                supportPageRotation,
                instanceIdToken
            }));

            return(fileUrl);
        }
예제 #4
0
        public string[] GetImageUrlsInternal(string path, int startingPageNumber, int pageCount, int?pageWidth,
                                             int?quality, bool usePdf            = true,
                                             string watermarkText                = null, int?watermarkColor = null,
                                             WatermarkPosition?watermarkPosition = WatermarkPosition.Diagonal, float?watermarkWidth = 0,
                                             bool ignoreDocumentAbsence          = false,
                                             bool useHtmlBasedEngine             = false,
                                             bool supportPageRotation            = false,
                                             string instanceId = null, string locale = null)
        {
            NameValueCollection queryString = HttpUtility.ParseQueryString(string.Empty);

            queryString["path"]    = path;
            queryString["width"]   = pageWidth.ToString();
            queryString["quality"] = quality.ToString();
            queryString["usePdf"]  = usePdf.ToString();
            if (!String.IsNullOrEmpty(watermarkText))
            {
                queryString["watermarkText"]     = watermarkText;
                queryString["watermarkColor"]    = watermarkColor.ToString();
                queryString["watermarkPosition"] = (watermarkPosition ?? WatermarkPosition.Diagonal).ToString();
                queryString["watermarkWidth"]    = (watermarkWidth ?? 0).ToString(CultureInfo.InvariantCulture);
            }

            if (ignoreDocumentAbsence)
            {
                queryString["ignoreDocumentAbsence"] = ignoreDocumentAbsence.ToString();
            }
            queryString["useHtmlBasedEngine"] = useHtmlBasedEngine.ToString();
            queryString["rotate"]             = supportPageRotation.ToString();

            if (!string.IsNullOrEmpty(Version))
            {
                queryString["v"] = Version;
            }
            if (!string.IsNullOrWhiteSpace(instanceId))
            {
                queryString[Constants.InstanceIdRequestKey] = instanceId;
            }

            if (!string.IsNullOrWhiteSpace(locale))
            {
                queryString["locale"] = locale;
            }

            var pageUrls = new string[pageCount];

            var handler = String.Format("GetDocumentPageImage{0}", UrlSuffix);

            for (int i = 0; i < pageCount; i++)
            {
                queryString["pageIndex"] = (startingPageNumber + i).ToString(CultureInfo.InvariantCulture);
                pageUrls[i] = String.Format("{0}/{1}?{2}", EndpointPrefix, handler, queryString);
            }

            return(pageUrls);
        }
        public string GetFileUrl(string path, bool printWithWaterMark, bool getPdf, bool isPrintable, string fileDisplayName = null,
                                 string watermarkText = null, int?watermarkColor = null,
                                 WatermarkPosition?watermarkPosition = WatermarkPosition.Diagonal, float?watermarkWidth = 0, byte?watermarkOpacity = 255,
                                 bool ignoreDocumentAbsence          = false,
                                 bool useHtmlBasedEngine             = false,
                                 bool supportPageRotation            = false)
        {
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            queryString["path"] = path;
            if (!isPrintable)
            {
                queryString["getPdf"] = getPdf.ToString().ToLower();

                if (fileDisplayName != null)
                {
                    queryString["displayName"] = fileDisplayName;
                }
            }

            if (watermarkText != null && printWithWaterMark == true)
            {
                queryString["watermarkText"]    = watermarkText;
                queryString["watermarkColor"]   = watermarkColor.ToString();
                queryString["watermarkOpacity"] = watermarkOpacity.ToString();

                if (watermarkPosition.HasValue)
                {
                    queryString["watermarkPosition"] = watermarkPosition.ToString();
                }

                if (watermarkWidth.HasValue)
                {
                    queryString["watermarkWidth"] = ((float)watermarkWidth).ToString(CultureInfo.InvariantCulture);
                }
            }

            if (ignoreDocumentAbsence)
            {
                queryString["ignoreDocumentAbsence"] = ignoreDocumentAbsence.ToString().ToLower();
            }

            queryString["useHtmlBasedEngine"]  = useHtmlBasedEngine.ToString().ToLower();
            queryString["supportPageRotation"] = supportPageRotation.ToString().ToLower();

            var handlerName = isPrintable ? "GetPdfWithPrintDialog" : "GetFile";

            var baseUrl = Request.Url.Scheme + "://" + Request.Url.Authority + Request.ApplicationPath.TrimEnd('/') + "/document-viewer/";

            var fileUrl = string.Format("{0}{1}?{2}", baseUrl, handlerName, queryString);

            return(fileUrl);
        }
 public string[] GetPrintableHtml(IImageUrlCreator imageUrlCreator,
                                  string path, bool useHtmlBasedEngine = false,
                                  string displayName   = null,
                                  string watermarkText = null, int?watermarkColor = null,
                                  WatermarkPosition?watermarkPosition = WatermarkPosition.Diagonal,
                                  float watermarkWidth       = 0,
                                  bool ignoreDocumentAbsence = false,
                                  string instanceId          = null,
                                  string locale = null)
 {
     throw new NotImplementedException();
 }
예제 #7
0
        public static string GetFileUrl(string path, bool getPdf, bool isPrintable, string fileDisplayName = null,
                                        string watermarkText = null, int?watermarkColor = null,
                                        WatermarkPosition?watermarkPosition = WatermarkPosition.Diagonal, float?watermarkWidth = 0,
                                        bool ignoreDocumentAbsence          = false,
                                        bool useHtmlBasedEngine             = false,
                                        bool supportPageRotation            = false)
        {
            NameValueCollection queryString = HttpUtility.ParseQueryString(string.Empty);

            queryString["path"] = path;
            if (!isPrintable)
            {
                queryString["getPdf"] = getPdf.ToString().ToLower();
                if (fileDisplayName != null)
                {
                    queryString["displayName"] = fileDisplayName;
                }
            }

            if (watermarkText != null)
            {
                queryString["watermarkText"]  = watermarkText;
                queryString["watermarkColor"] = watermarkColor.ToString();
                if (watermarkPosition.HasValue)
                {
                    queryString["watermarkPosition"] = watermarkPosition.ToString();
                }
                if (watermarkWidth.HasValue)
                {
                    queryString["watermarkWidth"] = ((float)watermarkWidth).ToString(CultureInfo.InvariantCulture);
                }
            }

            if (ignoreDocumentAbsence)
            {
                queryString["ignoreDocumentAbsence"] = ignoreDocumentAbsence.ToString().ToLower();
            }

            queryString["useHtmlBasedEngine"]  = useHtmlBasedEngine.ToString().ToLower();
            queryString["supportPageRotation"] = supportPageRotation.ToString().ToLower();

            var handlerName = isPrintable ? "GetPdfWithPrintDialog" : "GetFile";

            queryString["IsPrintable"] = isPrintable.ToString();
            var baseUrl = HttpContext.Current.Request.Url.Scheme + "://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath + "default.aspx/";

            string fileUrl = string.Format("{0}{1}?{2}", baseUrl, handlerName, queryString);

            return(fileUrl);
        }
        public String Get(string file, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity, bool isdownload)
        {
            ViewerHtmlHandler handler = Utils.CreateViewerHtmlHandler();

            handler.ClearCache(file);
            try
            {
                PrintableHtmlOptions o = new PrintableHtmlOptions();
                if (watermarkText != "")
                {
                    o.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
                }

                PrintableHtmlContainer container = handler.GetPrintableHtml(file, o);
                return(container.HtmlContent.Replace(".doc-page { position: absolute; }", ".doc-page { position: relative; }"));
            }
            catch (Exception x)
            {
                throw x;
            }
        }
        public JsonResult <List <string> > Get(string file, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity)
        {
            if (Utils.IsValidUrl(file))
            {
                file = Utils.DownloadToStorage(file);
            }
            ViewerHtmlHandler handler = Utils.CreateViewerHtmlHandler();

            List <int> pageNumberstoRender = new List <int>();

            pageNumberstoRender.Add(page);
            HtmlOptions options = new HtmlOptions();

            //options.PageNumbersToRender = pageNumberstoRender;
            //options.PageNumber = page;
            //options.CountPagesToRender = 1;
            //options.HtmlResourcePrefix = "/pageresource?file=" + file + "&page=" + page + "&resource=";
            options.EmbedResources = true;
            if (watermarkText != "")
            {
                options.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }

            List <PageHtml> list        = Utils.LoadPageHtmlList(handler, file, options);
            List <string>   lstPageHtml = new List <string>();

            foreach (PageHtml pageHtml in list)
            {
                lstPageHtml.Add(pageHtml.HtmlContent);
            }
            ;

            return(Json(lstPageHtml));
        }
        public HttpResponseMessage Get(int?width, string file, string attachment, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity, int?height = null)
        {
            ViewerImageHandler handler             = Utils.CreateViewerImageHandler();
            ImageOptions       o                   = new ImageOptions();
            List <int>         pageNumberstoRender = new List <int>();

            pageNumberstoRender.Add(page);
            o.PageNumbersToRender = pageNumberstoRender;
            o.PageNumber          = page;
            o.CountPagesToRender  = 1;
            if (width.HasValue)
            {
                o.Width = Convert.ToInt32(width);
            }
            if (height.HasValue)
            {
                o.Height = Convert.ToInt32(height);
            }
            if (watermarkText != "")
            {
                o.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }
            Stream stream = null;
            DocumentInfoContainer info = handler.GetDocumentInfo(file);

            // Iterate over the attachments collection
            foreach (AttachmentBase attachmentBase in info.Attachments.Where(x => x.Name == attachment))
            {
                List <PageImage> pages = handler.GetPages(attachmentBase, o);
                foreach (PageImage attachmentPage in pages.Where(x => x.PageNumber == page))
                {
                    stream = attachmentPage.Stream;
                }
                ;
            }
            var          result       = new HttpResponseMessage(HttpStatusCode.OK);
            Image        image        = Image.FromStream(stream);
            MemoryStream memoryStream = new MemoryStream();

            image.Save(memoryStream, ImageFormat.Jpeg);
            result.Content = new ByteArrayContent(memoryStream.ToArray());
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
            return(result);
        }
        public static Watermark GetWatermark(string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, float?watermarkWidth, byte watermarkOpacity)
        {
            if (string.IsNullOrWhiteSpace(watermarkText))
            {
                return(null);
            }

            byte red     = 0;
            byte green   = 0;
            byte blue    = 0;
            byte opacity = 255;

            if (watermarkColor.HasValue)
            {
                red     = Color.FromArgb(watermarkColor.Value).R;
                green   = Color.FromArgb(watermarkColor.Value).G;
                blue    = Color.FromArgb(watermarkColor.Value).B;
                opacity = watermarkOpacity;
            }
            return(new Watermark(watermarkText)
            {
                Color = watermarkColor.HasValue
                    ? Color.FromArgb(opacity, red, green, blue)
                    : Color.Red,
                Position = ToWatermarkPosition(watermarkPosition),
                Width = watermarkWidth,
                FontName = "MS Gothic"
            });
        }
        public ActionResult Get(string file, string attachment, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity)
        {
            var attachmentPath             = "cache\\" + Path.GetFileNameWithoutExtension(file) + Path.GetExtension(file).Replace(".", "_") + "\\attachments\\" + attachment;
            ViewerHtmlHandler handler      = Utils.CreateViewerHtmlHandler();
            var        docInfo             = handler.GetDocumentInfo(file);
            List <int> pageNumberstoRender = new List <int>();

            pageNumberstoRender.Add(page);
            HtmlOptions o = new HtmlOptions();

            o.PageNumbersToRender = pageNumberstoRender;
            o.PageNumber          = page;
            o.CountPagesToRender  = 1;
            o.HtmlResourcePrefix  = "/Attachment/Resource?file=" + file + "&attachment=" + attachment + "&page=" + page + "&resource=";
            if (watermarkText != "")
            {
                o.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }
            string fullHtml       = "";
            var    attachmentFile = _cachePath + "\\" + Path.GetFileNameWithoutExtension(file) + Path.GetExtension(file).Replace(".", "_") + "\\attachments";

            if (Directory.Exists(attachmentFile.Replace(@"\\", @"\")))
            {
                List <PageHtml> pages = handler.GetPages(attachmentPath, o);
                foreach (PageHtml pageHtml in pages.Where(x => x.PageNumber == page))
                {
                    fullHtml += pageHtml.HtmlContent;
                }
                ;
            }
            else
            {
                foreach (AttachmentBase attachmentBase in docInfo.Attachments.Where(x => x.Name == attachment))
                {
                    // Get attachment document html representation
                    List <PageHtml> pages = handler.GetPages(attachmentBase, o);
                    foreach (PageHtml pageHtml in pages.Where(x => x.PageNumber == page))
                    {
                        fullHtml += pageHtml.HtmlContent;
                    }
                    ;
                }
            }
            return(Content(fullHtml));
        }
예제 #13
0
        /// <summary>
        /// 为图片添加水印
        /// </summary>
        /// <param name="originalImage"></param>
        /// <param name="watermarkPath"></param>
        /// <param name="transparency">水印的透明度 0-255 数值越</param>
        /// <returns></returns>
        public static Image AddWatermark(Image originalImage, string watermarkPath, WatermarkPosition?position, int?transparency = null)
        {
            // 水印图片
            Image watermarkImage = Image.FromFile(watermarkPath);

            Bitmap resImage = new Bitmap(originalImage.Width, originalImage.Height, PixelFormat.Format32bppArgb);

            try
            {
                //获取原图DPI
                float dpix = originalImage.HorizontalResolution;
                float dpiy = originalImage.VerticalResolution;

                // 设置其生成图片的dpi
                resImage.SetResolution(dpix, dpiy);

                Graphics g = Graphics.FromImage(resImage);

                g.SmoothingMode     = SmoothingMode.AntiAlias;
                g.InterpolationMode = InterpolationMode.Default;

                // 设置高质量插值法
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;

                // 设置高质量,低速度呈现平滑程度
                g.SmoothingMode = SmoothingMode.HighQuality;

                // 清空画布并以透明背景色填充
                g.Clear(Color.Transparent);

                // 在指定位置并且按指定大小绘制原图片的指定部分
                g.DrawImage(originalImage, 0, 0, originalImage.Width, originalImage.Height);
                //g.DrawImage(originalImage, new Rectangle(0, 0, resImage.Width, resImage.Height), new Rectangle(0, 0, originalImage.Width, originalImage.Height), GraphicsUnit.Pixel);

                // 设定水印位置
                double drawX      = 0;
                double drawY      = 0;
                double drawWidth  = 0;
                double drawHeight = 0;

                double resRatio       = (double)resImage.Width / resImage.Height;
                double watermarkRatio = (double)watermarkImage.Width / watermarkImage.Height;

                if (watermarkRatio > resRatio)
                {
                    drawWidth  = resImage.Width / 10;
                    drawWidth  = drawWidth < 40 ? 40 : drawWidth;
                    drawWidth  = drawWidth > 160 ? 160 : drawWidth;
                    drawHeight = drawWidth / watermarkRatio;
                }
                else
                {
                    drawHeight = resImage.Height / 10;
                    drawHeight = drawHeight < 40 ? 40 : drawHeight;
                    drawHeight = drawHeight > 160 ? 160 : drawHeight;
                    drawWidth  = drawHeight / watermarkRatio;
                }

                switch (position)
                {
                case WatermarkPosition.LeftTop:
                    drawX = watermarkImage.Width / 2f;
                    drawY = 8f;
                    break;

                case WatermarkPosition.LeftBottom:
                    drawX = watermarkImage.Width / 2f;
                    drawY = originalImage.Height - watermarkImage.Height;
                    break;

                case WatermarkPosition.RightTop:
                    drawX = originalImage.Width * 1f - watermarkImage.Width / 2f;
                    drawY = 8f;
                    break;

                case WatermarkPosition.RightBottom:
                    drawX = originalImage.Width - watermarkImage.Width;
                    drawY = originalImage.Height - watermarkImage.Height;
                    break;

                case WatermarkPosition.Center:
                    drawX = originalImage.Width / 2;
                    drawY = originalImage.Height / 2 - watermarkImage.Height / 2;
                    break;
                }

                // 为水印图片设置透明度
                if (transparency != null)
                {
                    // 颜色矩阵
                    float[][] matrixItems =
                    {
                        new float[] { 1, 0, 0,                         0, 0 },
                        new float[] { 0, 1, 0,                         0, 0 },
                        new float[] { 0, 0, 1,                         0, 0 },
                        new float[] { 0, 0, 0, transparency.Value / 255f, 0 },
                        new float[] { 0, 0, 0,                         0, 1 }
                    };
                    ColorMatrix     colorMatrix = new ColorMatrix(matrixItems);
                    ImageAttributes imageAtt    = new ImageAttributes();
                    imageAtt.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
                    Bitmap   bmpd = new Bitmap(watermarkImage.Width, watermarkImage.Height);
                    Graphics gd   = Graphics.FromImage(bmpd);
                    gd.DrawImage(watermarkImage, new Rectangle(0, 0, watermarkImage.Width, watermarkImage.Height),
                                 0, 0, watermarkImage.Width, watermarkImage.Height, GraphicsUnit.Pixel, imageAtt);
                    gd.Dispose();

                    watermarkImage = bmpd;
                }

                // 在指定位置绘制水印图片部分
                g.DrawImage(watermarkImage,
                            new Rectangle((int)Math.Floor(drawX), (int)Math.Floor(drawY), (int)Math.Floor(drawWidth), (int)Math.Floor(drawHeight)),
                            0, 0, watermarkImage.Width, watermarkImage.Height, GraphicsUnit.Pixel);

                g.Dispose();
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                watermarkImage.Dispose();
            }
            return(resImage);
        }
예제 #14
0
        public static Watermark GetWatermark(string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, float?watermarkWidth)
        {
            if (string.IsNullOrWhiteSpace(watermarkText))
            {
                return(null);
            }

            return(new Watermark(watermarkText)
            {
                Color = watermarkColor.HasValue
                    ? Color.FromArgb(watermarkColor.Value)
                    : Color.Red,
                Position = ToWatermarkPosition(watermarkPosition),
                Width = watermarkWidth
            });
        }
        public HttpResponseMessage Get(string file, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity, bool isdownload)
        {
            ViewerHtmlHandler handler = Utils.CreateViewerHtmlHandler();

            Stream pdf = null;

            try
            {
                PdfFileOptions o = new PdfFileOptions();
                if (watermarkText != "")
                {
                    o.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
                }
                pdf = handler.GetPdfFile(file, o).Stream;
            }
            catch (Exception x)
            {
                throw x;
            }
            using (var ms = new MemoryStream())
            {
                pdf.CopyTo(ms);
                var result = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new ByteArrayContent(ms.ToArray())
                };

                if (isdownload)
                {
                    result.Content.Headers.Add("content-disposition", "attachment; filename=\"" + Path.GetFileNameWithoutExtension(file) + ".pdf\"");
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                }
                else
                {
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
                }

                return(result);
            }
        }
        public ActionResult Get(int?width, int?height, string file, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity, int?rotate, int?zoom)
        {
            if (Utils.IsValidUrl(file))
            {
                file = Utils.DownloadToStorage(file);
            }
            ViewerImageHandler handler = Utils.CreateViewerImageHandler();

            if (rotate.HasValue)
            {
                if (rotate.Value > 0)
                {
                    handler.ClearCache(file);
                }
            }

            ImageOptions options = new ImageOptions();

            options.PageNumbersToRender = new List <int>(new int[] { page });
            options.PageNumber          = page;
            options.CountPagesToRender  = 1;

            if (Path.GetExtension(file).ToLower().StartsWith(".xls"))
            {
                options.CellsOptions.OnePagePerSheet  = false;
                options.CellsOptions.CountRowsPerPage = 150;
            }

            if (watermarkText != "")
            {
                options.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }

            if (width.HasValue)
            {
                int w = Convert.ToInt32(width);
                if (zoom.HasValue)
                {
                    w = w + zoom.Value;
                }
                options.Width = w;
            }

            if (height.HasValue)
            {
                if (zoom.HasValue)
                {
                    options.Height = options.Height + zoom.Value;
                }
            }

            if (rotate.HasValue)
            {
                if (rotate.Value > 0)
                {
                    if (width.HasValue)
                    {
                        int side = options.Width;

                        DocumentInfoContainer documentInfoContainer = handler.GetDocumentInfo(file);
                        int pageAngle = documentInfoContainer.Pages[page - 1].Angle;
                        if (pageAngle == 90 || pageAngle == 270)
                        {
                            options.Height = side;
                        }
                        else
                        {
                            options.Width = side;
                        }
                    }

                    options.Transformations = Transformation.Rotate;
                    handler.RotatePage(file, new RotatePageOptions(page, rotate.Value));
                }
            }
            else
            {
                options.Transformations = Transformation.None;
                handler.RotatePage(file, new RotatePageOptions(page, 0));
            }

            using (new InterProcessLock(file))
            {
                List <PageImage> list      = handler.GetPages(file, options);
                PageImage        pageImage = list.Single(_ => _.PageNumber == page);

                return(File(pageImage.Stream, "image/png"));
            }
        }
예제 #17
0
        public ActionResult Get(string file, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity, bool isdownload)
        {
            ViewerHtmlHandler handler = Utils.CreateViewerHtmlHandler();

            Stream pdf = null;

            try
            {
                PdfFileOptions o = new PdfFileOptions();
                if (watermarkText != "")
                {
                    o.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
                }
                pdf = handler.GetPdfFile(file, o).Stream;
            }
            catch (Exception x)
            {
                throw x;
            }

            if (isdownload)
            {
                Response.Headers.Add("content-disposition", "attachment; filename=" + Path.GetFileNameWithoutExtension(file) + ".pdf");
                return(new FileStreamResult(pdf, "application/octet-stream"));
            }
            else
            {
                return(new FileStreamResult(pdf, "application/pdf"));
            }
        }
        public HttpResponseMessage Get(int?width, string file, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity, int?rotate, int?zoom, int?height = null)
        {
            if (Utils.IsValidUrl(file))
            {
                file = Utils.DownloadToStorage(file);
            }
            ViewerImageHandler handler = Utils.CreateViewerImageHandler();

            if (rotate.HasValue)
            {
                if (rotate.Value > 0)
                {
                    handler.ClearCache(file);
                }
            }

            ImageOptions options = new ImageOptions();

            options.PageNumbersToRender = new List <int>(new int[] { page });
            options.PageNumber          = page;
            options.CountPagesToRender  = 1;

            if (Path.GetExtension(file).ToLower().StartsWith(".xls"))
            {
                options.CellsOptions.OnePagePerSheet  = false;
                options.CellsOptions.CountRowsPerPage = 150;
            }

            if (watermarkText != "")
            {
                options.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }

            if (width.HasValue)
            {
                int w = Convert.ToInt32(width);
                if (zoom.HasValue)
                {
                    w = w + zoom.Value;
                }
                options.Width = w;
            }

            if (height.HasValue)
            {
                if (zoom.HasValue)
                {
                    options.Height = options.Height + zoom.Value;
                }
            }

            if (rotate.HasValue)
            {
                if (rotate.Value > 0)
                {
                    if (width.HasValue)
                    {
                        int side = options.Width;

                        DocumentInfoContainer documentInfoContainer = handler.GetDocumentInfo(file);
                        int pageAngle = documentInfoContainer.Pages[page - 1].Angle;
                        if (pageAngle == 90 || pageAngle == 270)
                        {
                            options.Height = side;
                        }
                        else
                        {
                            options.Width = side;
                        }
                    }

                    options.Transformations = Transformation.Rotate;
                    handler.RotatePage(file, new RotatePageOptions(page, rotate.Value));
                }
            }
            else
            {
                options.Transformations = Transformation.None;
                handler.RotatePage(file, new RotatePageOptions(page, 0));
            }

            List <PageImage> list      = handler.GetPages(file, options);
            PageImage        pageImage = list.Single(_ => _.PageNumber == page);

            Stream       stream       = pageImage.Stream;
            var          result       = new HttpResponseMessage(HttpStatusCode.OK);
            Image        image        = Image.FromStream(stream);
            MemoryStream memoryStream = new MemoryStream();

            image.Save(memoryStream, ImageFormat.Jpeg);
            result.Content = new ByteArrayContent(memoryStream.ToArray());
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
            return(result);
        }
        public ActionResult Get(string file, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity)
        {
            if (Utils.IsValidUrl(file))
            {
                file = Utils.DownloadToStorage(file);
            }
            ViewerHtmlHandler handler = Utils.CreateViewerHtmlHandler();

            List <int> pageNumberstoRender = new List <int>();

            pageNumberstoRender.Add(page);
            HtmlOptions options = new HtmlOptions();

            options.PageNumbersToRender = pageNumberstoRender;
            options.PageNumber          = page;
            options.CountPagesToRender  = 1;

            if (Path.GetExtension(file).ToLower().StartsWith(".xls"))
            {
                options.CellsOptions.OnePagePerSheet  = false;
                options.CellsOptions.CountRowsPerPage = 150;
            }

            options.HtmlResourcePrefix = "/page/resource?file=" + file + "&page=" + page + "&resource=";
            if (watermarkText != "")
            {
                options.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }

            List <PageHtml> list     = Utils.LoadPageHtmlList(handler, file, options);
            string          fullHtml = "";

            foreach (PageHtml pageHtml in list.Where(x => x.PageNumber == page))
            {
                fullHtml = pageHtml.HtmlContent;
            }
            ;
            return(Content(fullHtml));
        }
예제 #20
0
        public ActionResult Get(int?width, int?height, string file, string attachment, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity)
        {
            ViewerImageHandler handler             = Utils.CreateViewerImageHandler();
            ImageOptions       o                   = new ImageOptions();
            List <int>         pageNumberstoRender = new List <int>();

            pageNumberstoRender.Add(page);
            o.PageNumbersToRender = pageNumberstoRender;
            o.PageNumber          = page;
            o.CountPagesToRender  = 1;
            if (watermarkText != "")
            {
                o.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }
            if (width.HasValue)
            {
                o.Width = Convert.ToInt32(width);
            }
            if (height.HasValue)
            {
                o.Height = Convert.ToInt32(height);
            }
            Stream stream = null;
            DocumentInfoContainer info = handler.GetDocumentInfo(file);

            // Iterate over the attachments collection
            foreach (AttachmentBase attachmentBase in info.Attachments.Where(x => x.Name == attachment))
            {
                List <PageImage> pages = handler.GetPages(attachmentBase, o);
                foreach (PageImage attachmentPage in pages.Where(x => x.PageNumber == page))
                {
                    stream = attachmentPage.Stream;
                }
                ;
            }
            return(new FileStreamResult(stream, "image/png"));
        }
        public HttpResponseMessage Get(string file, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity)
        {
            if (Utils.IsValidUrl(file))
            {
                file = Utils.DownloadToStorage(file);
            }
            ViewerHtmlHandler handler             = Utils.CreateViewerHtmlHandler();
            List <int>        pageNumberstoRender = new List <int>();

            pageNumberstoRender.Add(page);
            HtmlOptions o = new HtmlOptions();

            o.PageNumbersToRender = pageNumberstoRender;
            o.PageNumber          = page;
            o.CountPagesToRender  = 1;
            o.HtmlResourcePrefix  = "/PageResource?file=" + file + "&page=" + page + "&resource=";
            if (watermarkText != "")
            {
                o.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }
            List <PageHtml> list     = Utils.LoadPageHtmlList(handler, file, o);
            string          fullHtml = "";

            foreach (PageHtml pageHtml in list.Where(x => x.PageNumber == page))
            {
                fullHtml = pageHtml.HtmlContent;
            }
            ;
            var response = new HttpResponseMessage();

            response.Content = new StringContent(fullHtml);
            response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
            return(response);
        }
        public string[] GetImageUrlsInternal(string path, int startingPageNumber, int pageCount, int?pageWidth, int?quality, bool usePdf = true,
                                             string watermarkText = null, int?watermarkColor = null,
                                             WatermarkPosition?watermarkPosition = WatermarkPosition.Diagonal, float?watermarkWidth = 0,
                                             bool ignoreDocumentAbsence          = false,
                                             bool useHtmlBasedEngine             = false,
                                             bool supportPageRotation            = false,
                                             string instanceId = null,
                                             string locale     = null)
        {
            string[]  pageUrls;
            UrlHelper url             = Url;
            string    applicationHost = _applicationPathFinder.GetApplicationHost();

            if (applicationHost.EndsWith("/"))
            {
                applicationHost = applicationHost.Substring(0, applicationHost.Length - 1);
            }

            pageUrls = new string[pageCount];
            if (_helper.GetStorageProvider() == SupportedStorageProvider.Local)
            {
                Dictionary <string, object> routeValueDictionary = new Dictionary <string, object>()
                {
                    { "action", "GetDocumentPageImage" },
                    { "path", path },
                    { "width", pageWidth },
                    { "quality", quality },
                    { "usePdf", usePdf },

                    { "useHtmlBasedEngine", useHtmlBasedEngine },
                    { "rotate", supportPageRotation }
                };

                if (!string.IsNullOrEmpty(locale))
                {
                    routeValueDictionary.Add("locale", locale);
                }

                if (!string.IsNullOrEmpty(watermarkText))
                {
                    routeValueDictionary.Add("watermarkText", watermarkText);
                    routeValueDictionary.Add("watermarkColor", watermarkColor);
                    routeValueDictionary.Add("watermarkPosition", watermarkPosition);
                    routeValueDictionary.Add("watermarkWidth", watermarkWidth);
                }
                if (!string.IsNullOrWhiteSpace(instanceId))
                {
                    routeValueDictionary.Add(Constants.InstanceIdRequestKey, instanceId);
                }
                if (ignoreDocumentAbsence)
                {
                    routeValueDictionary.Add("ignoreDocumentAbsence", ignoreDocumentAbsence);
                }

                for (int i = 0; i < pageCount; i++)
                {
                    routeValueDictionary["pageIndex"] = startingPageNumber + i;
                    pageUrls[i] = string.Format("{0}{1}", applicationHost,
                                                url.Route("genericRoute", routeValueDictionary));
                }
            }
            else
            {
                pageUrls = _coreHandler.GetPageImageUrlsOnThirdPartyStorage(path, pageCount, quality, pageWidth, null, true);
            }

            return(pageUrls);
        }
        private static string[] GetImageUrls(string applicationHost, string path, int startingPageNumber, int pageCount, int?pageWidth, int?quality, bool usePdf = true,
                                             string watermarkText = null, int?watermarkColor = null, int?watermarkOpacity = 255,
                                             WatermarkPosition?watermarkPosition = WatermarkPosition.Diagonal, float?watermarkWidth = 0,
                                             bool ignoreDocumentAbsence          = false,
                                             bool useHtmlBasedEngine             = false,
                                             bool supportPageRotation            = false,
                                             string instanceId = null,
                                             string locale     = null,
                                             int[] pageNumbers = null)
        {
            string[] pageUrls = new string[pageCount];

            RouteValueDictionary routeValueDictionary = new RouteValueDictionary
            {
                { "path", path },
                { "width", pageWidth },
                { "quality", quality },
                { "usePdf", usePdf },
                { "useHtmlBasedEngine", useHtmlBasedEngine },
                { "rotate", supportPageRotation }
            };

            if (!string.IsNullOrWhiteSpace(locale))
            {
                routeValueDictionary.Add("locale", locale);
            }

            if (!string.IsNullOrEmpty(watermarkText))
            {
                routeValueDictionary.Add("watermarkText", watermarkText);
                routeValueDictionary.Add("watermarkColor", watermarkColor);
                routeValueDictionary.Add("watermarkPosition", watermarkPosition);
                routeValueDictionary.Add("watermarkWidth", watermarkWidth);
                routeValueDictionary.Add("watermarkOpacity", watermarkOpacity);
            }

            if (!string.IsNullOrWhiteSpace(instanceId))
            {
                routeValueDictionary.Add("instanceIdToken", instanceId);
            }
            if (ignoreDocumentAbsence)
            {
                routeValueDictionary.Add("ignoreDocumentAbsence", ignoreDocumentAbsence);
            }

            if (pageNumbers != null)
            {
                for (int i = 0; i < pageCount; i++)
                {
                    routeValueDictionary["pageIndex"] = pageNumbers[i] - 1;
                    pageUrls[i] = ConvertUrlToAbsolute(applicationHost, CreateRelativeRequestUrl("GetDocumentPageImage", routeValueDictionary));
                }
            }
            else
            {
                for (int i = 0; i < pageCount; i++)
                {
                    routeValueDictionary["pageIndex"] = startingPageNumber + i;
                    pageUrls[i] = ConvertUrlToAbsolute(applicationHost, CreateRelativeRequestUrl("GetDocumentPageImage", routeValueDictionary));
                }
            }

            return(pageUrls);
        }
        public HttpResponseMessage Get(int?width, string file, int page, string watermarkText, int?watermarkColor, WatermarkPosition?watermarkPosition, int?watermarkWidth, byte watermarkOpacity, int?height = null)
        {
            if (Utils.IsValidUrl(file))
            {
                file = Utils.DownloadToStorage(file);
            }
            ViewerImageHandler handler             = Utils.CreateViewerImageHandler();
            ImageOptions       o                   = new ImageOptions();
            List <int>         pageNumberstoRender = new List <int>();

            pageNumberstoRender.Add(page);
            o.PageNumbersToRender = pageNumberstoRender;
            o.PageNumber          = page;
            o.CountPagesToRender  = 1;
            if (watermarkText != "")
            {
                o.Watermark = Utils.GetWatermark(watermarkText, watermarkColor, watermarkPosition, watermarkWidth, watermarkOpacity);
            }
            if (width.HasValue)
            {
                o.Width = Convert.ToInt32(width);
            }
            if (height.HasValue)
            {
                o.Height = Convert.ToInt32(height);
            }
            Stream           stream = null;
            List <PageImage> list   = Utils.LoadPageImageList(handler, file, o);

            foreach (PageImage pageImage in list.Where(x => x.PageNumber == page))
            {
                stream = pageImage.Stream;
            }
            ;
            var          result       = new HttpResponseMessage(HttpStatusCode.OK);
            Image        image        = Image.FromStream(stream);
            MemoryStream memoryStream = new MemoryStream();

            image.Save(memoryStream, ImageFormat.Jpeg);
            result.Content = new ByteArrayContent(memoryStream.ToArray());
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
            return(result);
        }