gpt4 book ai didi

c# - PdfTextExtractor.GetTextFromPage 突然给出空字符串

转载 作者:行者123 更新时间:2023-11-30 17:33:23 25 4
gpt4 key购买 nike

几年来,我们一直在 SSIS 进程中使用 iTextSharp 库从一组 PDF 考试文档中读取一些值。一切都运行良好,直到本周突然我们在调用 PdfTextExtractor.GetTextFromPage 方法时返回一个空字符串。我将在此处包含代码:

    // Read the data from the blob column where the PDF exists
byte[] byteBuffer = Row.FileData.GetBlobData(0, (int)Row.FileData.Length);

using (var pdfReader = new PdfReader(byteBuffer))
{

// Here is the important stuff
var extractStrategy = new LocationTextExtractionStrategy();

// This call will extract the page with the proper data on it depending on the exam type
// 1-page exams = NBOME - need to read first page for exam result data
// 2-page exams = NBME - need to read second page for exam result data
// The next two statements utilize this construct.
var vendor = pdfReader.NumberOfPages == 1 ? "NBOME" : "NBME";

*** THIS NEXT LINE GIVES THE EMPTY STRING
var newText = PdfTextExtractor.GetTextFromPage(pdfReader, pdfReader.NumberOfPages == 1 ? 1 : 2, extractStrategy);

var stringList = newText.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);

var fileParser = FileParseFactory.GetFileParse(stringList, vendor);

// Populate our output variables
Row.ParsedExamName = fileParser.GetExamName(stringList);
Row.DateParsed = DateTime.Now;
Row.ParsedId = fileParser.GetStudentId(stringList);
Row.ParsedTestDate = fileParser.GetTestDate(stringList);
Row.ParsedTestDateString = fileParser.GetTestDateAsString(stringList);
Row.ParsedName = fileParser.GetStudentName(stringList);
Row.ParsedTotalScore = fileParser.GetTestScore(stringList);
Row.ParsedVendor = vendor;
}

顺便说一下,这并不适用于所有 PDF。为了解释更多,我们正在阅读考试文件。其中一种考试类型 (NBME) 似乎读起来还不错。然而,另一种类型(NBOME)则不是。然而,在本周之前,NBOME 的阅读情况还不错。

这让我认为这是 PDF 文件本身的内部格式更改。

另外,还有一点信息是实际的 pdfReader 有数据——我可以获得数据的 byte[] 数组——但是获取任何文本的调用只是给我空的。

很抱歉,我无法显示任何考试数据或文件 - 这些信息属于敏感信息。

有没有人见过这样的东西?如果是这样,有什么可能的解决方案吗?

最佳答案

嗯 - 我们已经找到了答案。用户最初是去 NBOME 网站并下载 PDF 考试结果文件以导入我的解析系统。就像我说的,这工作了很长一段时间。然而,最近(本周),用户开始不下载文件,而是使用 PDF 打印功能并将 PDF 文件打印为 PDF。当她这样做时,问题出现了。

最重要的是,看起来将 PDF 打印为 PDF 可能已经在幕后注入(inject)了一些字符或某些东西,这导致通过 iTextSharp 读取 PDF 不会失败,但会给出一个空字符串。她应该直接继续下载它们。

感谢那些提出意见的人!

关于c# - PdfTextExtractor.GetTextFromPage 突然给出空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44165769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com