2016-03-10 65 views
1

我正在使用nuGet(5.5.8)中的最新iTextSharp lib來解析pdf文件中的一些文本。我面臨的問題是,GetTextFromPage方法不僅從它應該返回的頁面返回文本,還返回前一頁中的文本。這是我的代碼:爲什麼iTextSharp的GetTextFromPage返回的字符串越來越長?

var url = "https://www.oslo.kommune.no/getfile.php/Innhold/Politikk%20og%20administrasjon/Etater%20og%20foretak/Utdanningsetaten/Postjournal%20Utdanningsetaten/UDE03032016.pdf"; 
var strategy = new SimpleTextExtractionStrategy(); 
using (var reader = new PdfReader(new Uri(url))) 
{ 
    for (var page = 1; page <= reader.NumberOfPages; page++) 
    { 
     var textFromPage = PdfTextExtractor.GetTextFromPage(reader, page, strategy); 
     Console.WriteLine(textFromPage.Length); 
    } 
} 

輸出看起來像這樣,這不是我所需要的。我需要頁面上的實際文字:

1106 
2248 
3468 
4835 
5167 
6431 
7563 
8860 
9962 
11216 
12399 
13640 
14690 
15760 

任何想法?

回答

6

你養活所有頁面轉換成相同的文字提取策略:

var strategy = new SimpleTextExtractionStrategy(); 
using (var reader = new PdfReader(new Uri(url))) 
{ 
    for (var page = 1; page <= reader.NumberOfPages; page++) 
    { 
     var textFromPage = PdfTextExtractor.GetTextFromPage(reader, page, strategy); 
     ... process textFromPage ... 
    } 
} 

當你想通過自身來處理每個網頁的內容,則應該爲每個頁面的新戰略:

using (var reader = new PdfReader(new Uri(url))) 
{ 
    for (var page = 1; page <= reader.NumberOfPages; page++) 
    { 
     var strategy = new SimpleTextExtractionStrategy(); 
     var textFromPage = PdfTextExtractor.GetTextFromPage(reader, page, strategy); 
     ... process textFromPage ... 
    } 
} 
+0

我剛剛與5.5.9一樣的問題。 @mkl的迴應非常明確,非常準確。 – TonyG

相關問題