我正在尝试使用ItextSharp从矩形中提取文本,除了某些特定区域外,它几乎适用于文档中的所有部分。这些区域是简单的大胆标题和简单的内容,比文档的其他部分(均为大写)具有更小的字体。在这些区域中,我得到所选文本的字谜而不是正确的单词。
例如,“RELEASE”一词被称为“ERLEASE”,“VOYAGE”成为“EGAYVO”,句子“FURTHER CHARGES”成为“FHTRU E R CHAGR E S”
奇怪的是,如果我尝试使用SimpleTextExtractionStrategy
整页,我会获得正确的文字。
pdf的字体是经典的Arial,我用于提取的策略取自StackOverflow(矩形由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”和我没有选择第二个单词,只选择了第一个单词。
答案 0 :(得分:0)
您是否曾尝试自定义工作SimpleTextExtractionStrategy
,其方式不是整页而是矩形?
您可以在此处找到ghitub项目中的完整代码:https://github.com/itext/itextsharp/blob/75f05dd7d87797b86c44649f5f96df2d90d730e8/src/extras/itextsharp.tests/iTextSharp/text/pdf/parser/SimpleTextExtractionStrategyTest.cs