Estrarre testo multi-colonne da un PDF all’interno dell’area visibile

Per estrarre il testo da un PDF con iTextSharp è sufficiente utilizzare la SimpleTextExtractionStrategy. Il vantaggio di questo metodo è che il testo disposto su più colonne viene letto in maniera corretta. Utilizzando la LocationTextExtractionStrategy, il testo su più colonne viene letto per linee, quindi non è utilizzabile per ricavare il testo completo da un PDF. Il problema della SimpleTextExtractionStrategy è dovuto al fatto che legge il contenuto anche dell’area non visibile (esterna al MediaBox ) del PDF. Per ovviare a questo difetto, è sufficiente combinare tale strategia con il REgionTextRendereFilter, passando il riquadro visibile (MediaBox):

Dim rect As Rectangle = fp.GetPageSize(1)
Dim fp As New PdfReader(filename)
Dim filters() As RenderFilter = {New RegionTextRenderFilter(rect)}
Dim strat As ITextExtractionStrategy = New FilteredTextRenderListener(New SimpleTextExtractionStrategy, filters)
curText = PdfTextExtractor.GetTextFromPage(fp, 1, strat)