使用iTextSharp v5.5.13
我需要解析大量的PDF文件。其中约有5%的表包含我也需要的数据。
大多数情况下,我需要的行被解析为2 januari 15 januari € 49,49 € 21,57 € 15,09 € 34,39
我可以解决这个问题。我按空间分割,就可以了。
但是有时月份名称会有多余的空格:janu ari
我知道我可以重写策略以消除这些多余的空格。我已经在pdf的其余部分(ITextExtractionStrategy
)中使用了它,但是对于此表,我使用的是矩形策略:
var rect = new System.util.RectangleJ(70,425,460,200);
RenderFilter[] filter = { new RegionTextRenderFilter(rect) };
ITextExtractionStrategy strategy =
new FilteredTextRenderListener(new MyLocationTextExtractionStrategy(),filter);
var lines = PdfTextExtractor.GetTextFromPage(reader,pageNumber,strategy).Split('\n');
我的替代看起来像这样:
public class MyLocationTextExtractionStrategy : LocationTextExtractionStrategy
{
protected override bool IsChunkAtWordBoundary(TextChunk chunk,TextChunk previousChunk)
{
var dist = chunk.DistanceFromEndOf(previousChunk);
return dist < -chunk.CharSpaceWidth || dist > chunk.CharSpaceWidth / 2.0f;
}
}
我发现了这个谷歌搜索。但这不能解决我的问题。
对于janu ari
dist
大于-chunk.CharSpaceWidth
的情况,我不确定下一步该怎么做。
请告诉我何时不应该对此表使用矩形策略,而应采用其他方法。