我正在使用iTextSharp從PDF文件中提取文本提取系統。我已經創建了一個實現ITextExtractionStrategy的類,並實現了像RenderText(),GetResultantText()等方法。我也研究了iTextSharp本身提供的LocationTextExtractionStrategy類。iTextSharp錯誤地報告文本位置
我面臨的問題是,對於特定的PDF文檔,RenderText()方法不正確地報告幾個文本塊的水平位置。這發生在頁面上可用的總共700多個文本塊中的大約15-20個塊中。我用下面簡單的代碼來獲得RenderText()文本位置:
Vector curBaselineStart = renderInfo.GetBaseline().GetStartPoint();
LineSegment segment = renderInfo.GetBaseline();
TextChunk location = new TextChunk(renderInfo.GetText(), segment.GetStartPoint(), segment.GetEndPoint(), renderInfo.GetSingleSpaceWidth());
chunks.Add(location);
收集所有的文本塊後,我試着畫在一個位圖,使用圖形類和下面的簡單循環:
for (int k = 0; k < chunks.Count; k++)
{
var ch = chunks[k];
g.DrawString(ch.text, fnt, Brushes.Black, ch.startLocation[Vector.I1], bmp.Height - ch.startLocation[Vector.I2], StringFormat.GenericTypographic);
}
問題發生在X(水平)尺寸只有這幾個文本塊。它們比實際位置略微向左。想知道我的代碼是否有問題。
舒賈特
以下鏈接中的C#4.0項目演示了此問題。它試圖從第14頁提取文本塊並將它們繪製到位圖上。您會在表格的第3列中看到錯誤文本位置的示例(例如,「Ma」,「Bio」等實際上是第4列的一部分,正如您在用Acrobat打開PDF文件時看到的那樣)。 C#項目鏈接:http://www.4shared.com/get/6w2SUo0q/TjTest.html – dotNET
上面的鏈接需要創建帳戶,我們有些人不喜歡。我現在也上傳了同樣的文件到MediaFire。不需要創建帳戶。這裏的鏈接:http://www.mediafire.com/?nz0o7xs9md1lg7q – dotNET