我可以解决 iText7 "Error at File Pointer" 异常吗?
Can I work around the iText7 "Error at File Pointer" exception?
我正在尝试从特定的 PDF 文件 (https://www.mass.gov/files/documents/2019/07/15/jud-lib-310cmr7.pdf) 中读取文本,但我从 iText7 收到此异常:
Error at file pointer 1358
iText.IO.Source.PdfTokenizer.ThrowError(String error, Object[] messageParams)
at iText.Kernel.Pdf.PdfReader.ReadObject(PdfIndirectReference reference, Boolean fixXref)
at iText.Kernel.Pdf.PdfReader.ReadObject(PdfIndirectReference reference, Boolean fixXref)
at iText.Kernel.Pdf.PdfIndirectReference.GetRefersTo(Boolean recursively)
at iText.Kernel.Pdf.PdfReader.ReadObject(PdfIndirectReference reference, Boolean fixXref)
at iText.Kernel.Pdf.PdfIndirectReference.GetRefersTo(Boolean recursively)
at iText.Kernel.Pdf.PdfIndirectReference.GetRefersTo(Boolean recursively)
at iText.Kernel.Pdf.PdfDictionary.GetAsDictionary(PdfName key)
at iText.Kernel.Pdf.PdfPagesTree..ctor(PdfCatalog pdfCatalog)
at iText.Kernel.Pdf.PdfCatalog..ctor(PdfDictionary pdfObject)
at iText.Kernel.Pdf.PdfDocument.Open(PdfVersion newPdfVersion)
Invalid offset for object 85404 0 R.
我在 Chrome 的 reader 中打开 PDF 文件时没有发现任何问题,而且它不是我的 PDF 文件,所以我不确定从这里到哪里去。关于如何抑制这些错误的任何建议?不幸的是,这是在 Open()
方法期间发生的,而不仅仅是在文本提取期间发生的,因此我无法将问题跳过到另一页。
这是我的代码:
var sb = new StringBuilder();
using(var r = new PdfReader(path)) {
var pdfDoc = new PdfDocument(r);
var numPages = pdfDoc.GetNumberOfPages();
for(var pn = 1; pn <= numPages; pn++) {
var st = new SimpleTextExtractionStrategy();
var page = pdfDoc.GetPage(pn);
sb.Append(PdfTextExtractor.GetTextFromPage(page, st));
}
}
问题似乎是下载损坏。由于我没有 运行 与数百个其他网站和相同的代码下载过此类问题,它可能特定于该 Web 服务器。所以我猜答案是 "try again"!
我正在尝试从特定的 PDF 文件 (https://www.mass.gov/files/documents/2019/07/15/jud-lib-310cmr7.pdf) 中读取文本,但我从 iText7 收到此异常:
Error at file pointer 1358
iText.IO.Source.PdfTokenizer.ThrowError(String error, Object[] messageParams)
at iText.Kernel.Pdf.PdfReader.ReadObject(PdfIndirectReference reference, Boolean fixXref)
at iText.Kernel.Pdf.PdfReader.ReadObject(PdfIndirectReference reference, Boolean fixXref)
at iText.Kernel.Pdf.PdfIndirectReference.GetRefersTo(Boolean recursively)
at iText.Kernel.Pdf.PdfReader.ReadObject(PdfIndirectReference reference, Boolean fixXref)
at iText.Kernel.Pdf.PdfIndirectReference.GetRefersTo(Boolean recursively)
at iText.Kernel.Pdf.PdfIndirectReference.GetRefersTo(Boolean recursively)
at iText.Kernel.Pdf.PdfDictionary.GetAsDictionary(PdfName key)
at iText.Kernel.Pdf.PdfPagesTree..ctor(PdfCatalog pdfCatalog)
at iText.Kernel.Pdf.PdfCatalog..ctor(PdfDictionary pdfObject)
at iText.Kernel.Pdf.PdfDocument.Open(PdfVersion newPdfVersion)
Invalid offset for object 85404 0 R.
我在 Chrome 的 reader 中打开 PDF 文件时没有发现任何问题,而且它不是我的 PDF 文件,所以我不确定从这里到哪里去。关于如何抑制这些错误的任何建议?不幸的是,这是在 Open()
方法期间发生的,而不仅仅是在文本提取期间发生的,因此我无法将问题跳过到另一页。
这是我的代码:
var sb = new StringBuilder();
using(var r = new PdfReader(path)) {
var pdfDoc = new PdfDocument(r);
var numPages = pdfDoc.GetNumberOfPages();
for(var pn = 1; pn <= numPages; pn++) {
var st = new SimpleTextExtractionStrategy();
var page = pdfDoc.GetPage(pn);
sb.Append(PdfTextExtractor.GetTextFromPage(page, st));
}
}
问题似乎是下载损坏。由于我没有 运行 与数百个其他网站和相同的代码下载过此类问题,它可能特定于该 Web 服务器。所以我猜答案是 "try again"!