2013-06-14 7 views
6

czy istnieje jakaś logika, aby uzyskać tekst akapitu z pliku pdf używając itextsharp? Wiem, że pdf obsługuje tylko ciąg tekstów i trudno jest ustalić, które przebiegi tekstów są powiązane z którym akapitem i ja również wiem że nie ma żadnych znaczników <p> lub innych znaczników do określenia akapitu w pdf. Jednak próbowałem uzyskać współrzędne przebiegów tekstów, aby zbudować akapit z jego współrzędnych, ale bez powodzenia :(. mój fragment kodu jest tutaj:uzyskać akapit tekstu z pdf za pomocą itextsharp

private StringBuilder result = new StringBuilder(); 
    private Vector lastBaseLine; 
    //to store run of texts 
    public List<string> strings = new List<String>(); 
    //to store run of texts Coordinate (Y coordinate) 
    public List<float> baselines = new List<float>(); 

    public void RenderText(iTextSharp.text.pdf.parser.TextRenderInfo renderInfo) 
    { 
     Vector curBaseline = renderInfo.GetBaseline().GetStartPoint(); 
     if ((this.lastBaseLine != null) && (curBaseline[Vector.I2] != lastBaseLine[Vector.I2])) 
     { 
      if ((!string.IsNullOrEmpty(this.result.ToString()))) 
      { 
       this.baselines.Add(this.lastBaseLine[Vector.I2]); 
       this.strings.Add(this.result.ToString()); 
      } 
      result = new StringBuilder(); 
     } 
     this.result.Append(renderInfo.GetText()); 
     this.lastBaseLine = curBaseline; 
    } 

Czy każdy organ ma żadnej logiki związanej z tym problemem ??

+3

Czy Twój PDF znakowanego PDF? Jeśli tak nie jest, nie ma łatwego sposobu na określenie, które fragmenty tekstu należą do którego akapitu (ale już to odkryłeś). –

+0

@BrunoLowagie thanx dla Twojego respone, PDF nie jest otagowany PDF .. czy nie ma żadnego rozwiązania, aby wyodrębnić akapit z niezatwierdzonego pliku PDF ??? –

+2

Bez 100% rozwiązań proofowych, po prostu heurystyki o mniejszych lub większych błędach. – mkl

Odpowiedz

1
using (MemoryStream ms = new MemoryStream()) 
{ 
    Document document = new Document(PageSize.A4, 25, 25, 30, 30); 
    PdfWriter writer = PdfWriter.GetInstance(document, ms); 
    document.Open(); 
    document.Add(new Paragraph("Hello World")); 
    document.Close(); 
    writer.Close(); 
    Response.ContentType = "pdf/application"; 
    Response.AddHeader("content-disposition", 
    "attachment;filename=First PDF document.pdf"); 
    Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length); 
} 

here are some samples which ll help you on this....

To nie może być dokładnie szukasz, ale może pomóc ..

+0

dziękuję za odpowiedź, ale moim celem jest czytanie tekstów jako akapit z pliku PDF, aby nie pisać pdf. –