iTextPdf和iTextSharp - 格式错误的PDF导致挂起

时间:2015-08-31 16:25:54

标签: pdf itextsharp itext

我最近收到的PDF文件导致应用程序在加载iText Java和iTextSharp时挂起。

1 个答案:

答案 0 :(得分:4)

问题在于PDF具有增量更新,并且附加预告片具有指向其自己的交叉引用表的Prev条目。这导致PdfReader.ReadXref()中的无限循环。

我建议的解决方案如下。

while (true) {
    PdfNumber prev = (PdfNumber)trailer2.Get(PdfName.PREV);
    if (prev == null)
        break;
    // Add check to prevent infinite loop
    if (prev.LongValue == startxref)
        throw new InvalidPdfException("trailer Prev points to its own cross-reference section.");
    // end added check
    tokens.Seek(prev.LongValue);
    trailer2 = ReadXrefSection();
}

向StackOverflow道歉,这实际上并不是一个问题,但我没有时间来满足两行代码拉取请求的iText要求。