iTextSharp Image Kaybolma, Sayfaya Sığmama !

PDF dosyama eklemiş olduğum html içerisinde bulunan <img /> için boyut kontrollerinin sağlanıp sayfa boyutunu aşma koşuluna göre yeniden boyutlandırılmasının sağlanması için gerekli Provider aşağıdaki gibidir. Eksikleri olabilir ama şuanlık iş görür durumdadır. Tam bir örnek için file aşağıdaki linkte verilmiştir. Kod parçacığı ise hızlıca ulaşım için aşağıda yer almaktadır.

PdfTestControllerFile.cs (11,25 kb)

    public class CustomImageProvider : AbstractImageProvider
    {
        public override string GetImageRootPath()
        {
            return ToString();
        }

        public override Image Retrieve(string src)
        {
            if (src.StartsWith("data:image/", StringComparison.InvariantCultureIgnoreCase))
            {
                var base64Data = src.Substring(src.IndexOf(",", StringComparison.Ordinal) + 1);
                var imagedata = Convert.FromBase64String(base64Data);
                var image = Image.GetInstance(imagedata);
                image.Alignment = Element.ALIGN_CENTER;
                return image;
            }
            else if (!src.Contains("http"))
            {
                var imageT = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(src));
              
                var pic = Image.GetInstance(imageT, BaseColor.WHITE);
                if (pic.Height > pic.Width)
                {
                    //Maximum height is 800 pixels.
                    float percentage = 0.0f;
                    percentage = 700 / pic.Height;
                    pic.ScalePercent(percentage * 100);
                }
                else
                {
                    //Maximum width is 600 pixels.
                    float percentage = 0.0f;
                    percentage = 540 / pic.Width;
                    pic.ScalePercent(percentage * 100);
                }

                //pic.Border = iTextSharp.text.Rectangle.BOX;
                //pic.BorderColor = iTextSharp.text.BaseColor.BLACK;
                //pic.BorderWidth = 3f;
                return pic;
            }
            return base.Retrieve(src);
        }
    }

 

Yorum ekle