C# ItextSharp无法提取字符为';I';

C# ItextSharp无法提取字符为';I';,c#,pdf,itextsharp,C#,Pdf,Itextsharp,以下函数使用LocationTextExtractionStrategy获取PDF文件中的文本(在本例中为员工编号) private static string GetEmployeeNo(int cnt, iTextSharp.text.pdf.PdfReader reader) { Rectangle rect = new Rectangle(475, 730, 500, 750); RenderFilter[] filter = { new RegionTextRender

以下函数使用
LocationTextExtractionStrategy
获取PDF文件中的文本(在本例中为员工编号)

private static string GetEmployeeNo(int cnt, iTextSharp.text.pdf.PdfReader reader)
{
    Rectangle rect = new Rectangle(475, 730, 500, 750);
    RenderFilter[] filter = { new RegionTextRenderFilter(rect) };
    ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
    string employeeNo = PdfTextExtractor.GetTextFromPage(reader, cnt, strategy);
    return employeeNo;
}
每个PDF文件的员工编号文本的位置是固定的,因此我可以只使用一个
矩形
对象作为过滤器传递。 在我需要提取的文本中包含“I”(大写字母I)之前,这一切都很正常。在本例中,函数返回一个空字符串

我认为这是因为大写字母I和小写字母L之间存在歧义,这两个字母在某些字体/字体中都表示为“I”。知道这一点,我仍然找不到有关该问题的信息/文档

如果是这种情况,我如何告诉ITextSharp根据特定的字体系列提取文本。或者,如果这不是一个可能的解决方案,至少,我如何告诉ITextSharp将“I”字符视为L而不是返回空字符串?

iText通常可以提取带有“I”字符的文本,但可能存在某些特定PDF文件,这些文件具有导致字符“I”出现问题的特定特性。除非你共享这样一个特定的PDF,否则你不会得到任何答案。人们只会认为你的说法是错误的,因为没有任何理由说明iTextSharp会对字符“I”进行不同的处理。iText通常可以提取带有字符“I”的文本,但可能有一些特定的PDF文件具有某些特定的特性,导致字符“I”出现问题。除非你共享这样一个特定的PDF,否则你不会得到任何答案。人们会认为你的说法是错误的,因为没有任何理由认为iTextSharp会对“我”这个角色有不同的对待。