c#winfrom iTextSharp.text.Image.GetInstance(files[i])索引超出界限

wgflive 发布于 2015/05/14 11:46
阅读 1K+
收藏 0

我是菜鸟,谢谢。我想实现把jpg转成pdf,在运行.GetInstance(jpg路径)出错。有些jpg图片正常,部分jpg图片在这里异常。


 public void Process(string[] files, string newpdf ,ProgressBar pb)
        {
            iTextSharp.text.Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 25, 25, 25, 25);

            try
            {

                FileStream f = new FileStream(newpdf, FileMode.Create, FileAccess.ReadWrite);
                iTextSharp.text.pdf.PdfWriter.GetInstance(document, f);

                document.Open();
                iTextSharp.text.Image image;
                int allL = files.Length;
                for (int i = 0; i < allL; i++)
                {
                    if (String.IsNullOrEmpty(files[i])) break;

                    image = iTextSharp.text.Image.GetInstance(files[i]);

                    if (image.Height > iTextSharp.text.PageSize.A4.Height - 25)
                    {
                        image.ScaleToFit(iTextSharp.text.PageSize.A4.Width - 25, iTextSharp.text.PageSize.A4.Height - 25);
                    }
                    else if (image.Width > iTextSharp.text.PageSize.A4.Width - 25)
                    {
                        image.ScaleToFit(iTextSharp.text.PageSize.A4.Width - 25, iTextSharp.text.PageSize.A4.Height - 25);
                    }
                    image.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE;
                    //image.SetDpi(72, 72);

                    document.NewPage();
                    document.Add(image);
                    if (pb != null)
                    {
                        // pb.Value = (int)startbye;
                        pb.BeginInvoke(new updateui(upui), new object[] { allL, i, pb });
                    }
                }
             //   Global.Global.ShowMessage("转换成功!");
            }
            catch (Exception ex)
            {
                Global.Global.ShowMessage("转换失败,原因:" + ex.Message);
            }
            document.Close();
        }


有朋友说是我files[]的问题,代码修改成这样也是不行的

加载中
0
ZaMiHu
ZaMiHu
你这个i 大于1了吧。。。。
wgflive
wgflive
第一次循环就出错了,我怀疑是GetInstance()的问题,但是网上找不到相关的错误
0
气质舞王尼古拉斯赵四
气质舞王尼古拉斯赵四

但凡是报IndexOutofRangeException的,就好好看看数组,肯定有越界访问,比如说你那个files[i]

气质舞王尼古拉斯赵四
气质舞王尼古拉斯赵四
回复 @wgflive : 那只要参数正常的话就只有单步跟进去看看getInstance了
wgflive
wgflive
回复 @春天花不开 : iTextSharp.text.Image.GetInstance(图片路径)在这个行出的异常。
气质舞王尼古拉斯赵四
气质舞王尼古拉斯赵四
回复 @wgflive : 那现在异常是在哪里引发的呢?
wgflive
wgflive
这个Files[]这个没有问题,你看我修改的代码。
返回顶部
顶部