예제 #1
0
        public virtual void RenderImage(ImageRenderInfo renderInfo)
        {
            Matrix      imageCtm = renderInfo.GetImageCTM();
            Vector      a        = (new Vector(0, 0, 1)).Cross(imageCtm);
            Vector      b        = (new Vector(1, 0, 1)).Cross(imageCtm);
            Vector      c        = (new Vector(0, 1, 1)).Cross(imageCtm);
            Vector      d        = (new Vector(1, 1, 1)).Cross(imageCtm);
            LineSegment bottom   = new LineSegment(a, b);
            LineSegment top      = new LineSegment(c, d);

            if (textRectangle == null)
            {
                textRectangle = bottom.GetBoundingRectange();
            }
            else
            {
                textRectangle.Add(bottom.GetBoundingRectange());
            }
            textRectangle.Add(top.GetBoundingRectange());
        }
    //Called for each image
    public void RenderImage(iTextSharp.text.pdf.parser.ImageRenderInfo renderInfo)
    {
        //Get the basic image info
        var img       = renderInfo.GetImage().GetDrawingImage();
        var imgWidth  = img.Width;
        var imgHeight = img.Height;

        img.Dispose();
        //Get the current transformation matrix
        var ctm       = renderInfo.GetImageCTM();
        var ctmWidth  = ctm[iTextSharp.text.pdf.parser.Matrix.I11];
        var ctmHeight = ctm[iTextSharp.text.pdf.parser.Matrix.I22];

        //Create new key for our page number if it doesn't exist already
        if (!this.Pages.ContainsKey(CurrentPage))
        {
            this.Pages.Add(CurrentPage, new List <ImageScaleInfo>());
        }
        //Add our image info to this page
        this.Pages[CurrentPage].Add(new ImageScaleInfo(imgWidth, imgHeight, ctmWidth, ctmHeight, this.CurrentPageUnits));
    }