2016-03-27 11 views
0

のために初めからテキストを返します。問題は非常に奇妙です。すべての反復で、読者はpdfドキュメントの初めからテキスト全体を返します。 おそらくこれは単純なものですが、私はそれを見ることはできません。iTextのGetTextFromPageは、私はこのシンプルな作品を持ってeveyページ

... 
PdfReader reader = new PdfReader (path); 
PdfReaderContentParser parser = new PdfReaderContentParser (reader); 
... 
public void Read(int start, int end) 
{ 
    ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 

    StringBuilder sb = new StringBuilder(); 

    for (int page = start; page < end; page++) 
    { 
     try 
     { 
      sb.Append(PdfTextExtractor.GetTextFromPage(reader, page, strategy)); 
     } 
     catch (Exception ex) 
     { 
      throw new PdfException(ex.Message, ex.InnerException); 
     } 

     var p = new Page { Number = page, Content = sb.ToString()}; 
     sb.Clear(); 
     PageParsed?.Invoke(this, new PdfEventArgs<Page>(p)); 
    } 
    FileParsed?.Invoke(this, new PdfEventArgs<string>(string.IsNullOrEmpty(Name) ? "File parsed" : Name)); 
} 

答えて

1

strategyオブジェクトは状態を保つので、あなたはこのようにあなたのループ内でオブジェクトのインスタンスを移動する必要があります。

StringBuilder sb = new StringBuilder(); 

for (int page = start; page < end; page++) 
{ 
    ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 
    try 
    { 
     sb.Append(PdfTextExtractor.GetTextFromPage(reader, page, strategy)); 
    } 
    catch (Exception ex) 
    { 
     throw new PdfException(ex.Message, ex.InnerException); 
    } 

    var p = new Page { Number = page, Content = sb.ToString()}; 
    sb.Clear(); 
    PageParsed?.Invoke(this, new PdfEventArgs<Page>(p)); 
} 

これはあなたの問題を解決します。

+0

ありがとう、本当に簡単でした。 _ "このレンダラーは、各文字列の現在のY位置を追跡します。" _ AP​​Iドキュメントから - これはそれほど明確ではありませんでした。 – Matt

関連する問題