2016-03-27 17 views
0

Bu basit parçam var. Sorun çok garip - her yinelemede, okuyucu pdf belgesinin başlangıcından beri tüm metni geri döndürüyor. Muhtemelen bu basit bir şey, ama göremiyorum.iText GetTextFromPage, metnin başlangıcındaki metni döndürür.

... 
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)); 
} 

cevap

1

strategy nesne durumunu tutar, bu nedenle böyle döngü içinde nesne örneğini taşımak zorunda:

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)); 
} 

Bu sorununuzu çözecektir.

+0

Teşekkür ederim, gerçekten çok basitti. _ "Bu işleyici, her bir dizenin geçerli Y konumunu izler." _ API dokümanlarından - bu durum o kadar açık değildi. – Matt

İlgili konular