2013-06-14 8 views
6

c'è qualche logica per ottenere testo paragrafo da file pdf utilizzando itextsharp? So che PDF supporta solo l'esecuzione di testi ed è difficile determinare quali esecuzioni di testi sono correlate a quale paragrafo e anche io so che non ci sono tag <p> o altri tag per determinare il paragrafo in pdf..Tuttavia ho cercato di ottenere coordinate di esecuzioni di testi per costruire paragrafi dalle coordinate ma senza fortuna :(. il mio frammento di codice è qui:ottenere testo paragrafo da pdf utilizzando 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; 
    } 

Qualcuno corpo hanno alcuna logica relative a questo problema ??

+3

È il vostro PDF un PDF con tag? Se non lo è, non esiste un modo semplice per determinare quali frammenti di testo appartengono a quale paragrafo (ma lo hai già scoperto). –

+0

@BrunoLowagie grazie per il vostro respone, PDF non è codificato PDF ... non c'è una soluzione per estrarre il paragrafo dal PDF non codificato ??? –

+2

Nessuna soluzione a prova di 100%, solo euristica con tassi di errore minori o maggiori. – mkl

risposta

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....

Questo non può essere esattamente il vostro ricerca, ma può aiutare ..

+0

grazie per la tua risposta ma la mia preoccupazione è quella di leggere i testi come paragrafo da un pdf per non scrivere pdf. –