如何把图片放入到页面的合适位置

有时候我们需要批量的向一个文档中插入图片,比如说,我们使用OpexXML操作Word文件,或者使用ITextSharp操作PDF文件。


这里以ITextSharp操作PDF为例,现在有100张图片,插入到PDF中,每个图片占据一页。这里有个问题,因为这些图片的长度,像素等都是不确定的,我们怎么才能把图片摆在一个页面比较合适的位置上?我们可以考虑把图片放到页面的中间,也就是图片的对角线中心与页面的对角线中心重合。但是长度怎么办?有的图片长度可是完全超出了页面的宽带。所以,这时我们就要判断比较图片宽度与页面宽度,如果图片大,我们就缩小百分之九十,再比较,如果还大,继续缩小,直到图片宽度小于页面宽度为止。对于高度也是如此。


 //获取图片对象实例	
 		    Image image = Image.GetInstance(path);
                    float percentage = 1;
		    //这里都是图片最原始的宽度与高度
                    float resizedWidht = image.Width;
                    float resizedHeight = image.Height;
		    
		    //这时判断图片宽度是否大于页面宽度减去也边距,如果是,那么缩小,如果还大,继续缩小,
		    //这样这个缩小的百分比percentage会越来越小
                    while (resizedWidht > (doc.PageSize.Width - doc.LeftMargin - doc.RightMargin) * 0.8)
                    {
                        percentage = percentage * 0.9f;
                        resizedHeight = image.Height * percentage;
                        resizedWidht = image.Width * percentage;
                    }
                    //There is a 0.8 here. If the height of the image is too close to the page size height,
                    //the image will seem so big
                    while (resizedHeight > (doc.PageSize.Height - doc.TopMargin - doc.BottomMargin) * 0.8)
                    {
                        percentage = percentage * 0.9f;
                        resizedHeight = image.Height * percentage;
                        resizedWidht = image.Width * percentage;
                    }

		     //这里用计算出来的百分比来缩小图片
                    image.ScalePercent(percentage * 100); 
		     //让图片的中心点与页面的中心店进行重合
                    image.SetAbsolutePosition(doc.PageSize.Width/2 - resizedWidht / 2, doc.PageSize.Height / 2 - resizedHeight / 2);
                    doc.Add(image);

    
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值