首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iTextSharp IndexOutOfRange

iTextSharp IndexOutOfRange
EN

Stack Overflow用户
提问于 2015-01-08 01:20:29
回答 2查看 1.1K关注 0票数 3

继续获取IndexOutOfRangeException是未处理的异常。

代码语言:javascript
复制
var sb = new StringBuilder();
var bdn = String.Format("{0}\\bdn.pdf", Application.StartupPath);
var reader = new PdfReader("bdn.pdf");
var numberOfPages = reader.NumberOfPages;
for (var currentPageIndex = 1; currentPageIndex <= numberOfPages; currentPageIndex++)
{
        sb.Append(PdfTextExtractor.GetTextFromPage(reader, currentPageIndex));
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-08 03:33:35

确保您运行的iTextSharp版本大于5.1,该版本中有一个与您的问题完全匹配的错误:

刚刚用5.5.4.0 (最新版本)进行了测试,使用了以下代码:

代码语言:javascript
复制
    StringBuilder sb = new StringBuilder();
// substitute 'pdfPath' with path to YOUR PDF
    PdfReader reader = new PdfReader(pdfPath);
    int pageNumber = 1;
    while (pageNumber <= reader.NumberOfPages) {
      sb.Append(PdfTextExtractor.GetTextFromPage(reader, pageNumber));
      ++pageNumber;
    }
票数 2
EN

Stack Overflow用户

发布于 2015-01-08 01:56:03

你的问题在你的for loop

代码语言:javascript
复制
for (var currentPageIndex = 1; currentPageIndex <= numberOfPages; currentPageIndex++)
{
    PdfTextExtractor.GetTextFromPage(reader, currentPageIndex);
}

以上代码有几个问题:

问题#1

我不知道您从index 1开始的原因,而不是index 0,因为C#中的集合和数组是从index 0开始的.也许你是想跳过第一页。如果您确实从index 1开始,请理解您正在从第二页开始计数。这就引出了第二个问题..。

问题#2

代码语言:javascript
复制
currentPageIndex <= numberOfPages

例如,如果currentPageIndex3,而numberOfPages3,则此表达式将计算为true,从而允许执行块中的代码。但是,numberOfPages表示数组/集合的长度/计数。因此,3长度的最后一个有效索引是index 2

必须将其更改为:

代码语言:javascript
复制
currentPageIndex < numberOfPages

..。因为currentPageIndex必须小于总页数。否则,它将超出范围。

我还建议您学习如何调试,以便您可以在抛出异常时逐步完成代码或检查值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27831518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档