我正在尝试使用 ItextSharp 从矩形中提取文本,除了某些特定区域外,它几乎适用于文档中的所有部分。这些区域是简单的粗体大写标题和简单的内容,其字体比文档的其余部分略小(均为大写)。在这些区域中,我得到了所选文本的字谜,而不是正确的单词。
例如单词“RELEASE”被骑乘为“ERLEASE”,“VOYAGE”变成“EGAYVO”,句子“FURTHER CHARGES”变成“FHTRU ER CHAGR E S”
奇怪的是,如果我尝试使用 a 翻到整页SimpleTextExtractionStrategy
,我会获得正确的文本。
pdf 的字体是经典的 Arial,我用于提取的策略取自 StackOverflow(rect 它由 args 传递):
_pdfRd = New PdfReader(_pdfPath)
Dim output As String()
Dim nrPag as Integer = 1
Dim filter As RenderFilter = New RegionTextRenderFilter(rect)
Dim strategy As FilteredRenderListener
Dim locStrategy As New LocationTextExtractionStrategy
strategy = New FilteredTextRenderListener(locStrategy, {filter})
output = GetTextFromPage(_pdfRd, nrPag, strategy).Split(vbLf)
_pdfRd.Close()
我尝试了其他文件,效果很好,我无法用不同的文件重现这个问题。
我担心我的代码,我也尝试了这个策略:http ://www.schiffhauer.com/read-text-in-a-pdf-in-c-with-itextsharp/ 但结果是一样的。
我在阅读过程中遗漏了一些东西,或者这是与我的 pdf 相关的问题?
更新:如果我选择错误单词的单个字母,则输出为空字符串,如果我一起选择更多字母也会发生这种情况,只有当我选择整个单词时才会获得(字谜)输出。这真的很奇怪,例如我注意到如果我有“CARGO RELEASE”这个词,并且我只用一个矩形选择“GO”或任何其他子字符串,我什么也得不到,但是如果我选择“CARGO”,我会得到“GRACO ERLESAE”和我没有选择第二个词,只选择了第一个。