继续获取IndexOutOfRangeException是未处理的异常。
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));
}发布于 2015-01-08 03:33:35
确保您运行的iTextSharp版本大于5.1,该版本中有一个与您的问题完全匹配的错误:
刚刚用5.5.4.0 (最新版本)进行了测试,使用了以下代码:
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;
}发布于 2015-01-08 01:56:03
你的问题在你的for loop里
for (var currentPageIndex = 1; currentPageIndex <= numberOfPages; currentPageIndex++)
{
PdfTextExtractor.GetTextFromPage(reader, currentPageIndex);
}以上代码有几个问题:
问题#1
我不知道您从index 1开始的原因,而不是index 0,因为C#中的集合和数组是从index 0开始的.也许你是想跳过第一页。如果您确实从index 1开始,请理解您正在从第二页开始计数。这就引出了第二个问题..。
问题#2
currentPageIndex <= numberOfPages例如,如果currentPageIndex为3,而numberOfPages为3,则此表达式将计算为true,从而允许执行块中的代码。但是,numberOfPages表示数组/集合的长度/计数。因此,3长度的最后一个有效索引是index 2。
必须将其更改为:
currentPageIndex < numberOfPages..。因为currentPageIndex必须小于总页数。否则,它将超出范围。
我还建议您学习如何调试,以便您可以在抛出异常时逐步完成代码或检查值。
https://stackoverflow.com/questions/27831518
复制相似问题