Problema risolto, ho creato una piccola classe che opera sul testo restituendolo in una stringa, rispetta tutti gli ordini del testo ed esclude automaticamente le immagini. Se avete consigli per migliorarlo sono ben accetti.
codice:
import java.io.FileInputStream;
import java.io.IOException;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfReaderContentParser;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
import com.itextpdf.text.pdf.parser.SimpleTextExtractionStrategy;
import com.itextpdf.text.pdf.parser.TextExtractionStrategy;
public class EstrattoreTesto{
private static PdfReader lettore;
private FileInputStream pdf;
private PdfReaderContentParser parserLettore;
TextExtractionStrategy strategia;
public EstrattoreTesto(FileInputStream filePdf) throws IOException{
pdf=filePdf;
lettore=new PdfReader(pdf);
parserLettore = new PdfReaderContentParser(lettore);
}
public String getTestoIterativo() throws IOException{
strategia = parserLettore.processContent(1, new SimpleTextExtractionStrategy());
String s = PdfTextExtractor.getTextFromPage(lettore,1);
for(int i=2;i<=lettore.getNumberOfPages();i++){
strategia = parserLettore.processContent(i, new SimpleTextExtractionStrategy());
s+=PdfTextExtractor.getTextFromPage(lettore,i);
}
return s;
}
public String getTestoRicorsivo(int paginaAttuale) throws IOException{
if(paginaAttuale==lettore.getNumberOfPages()){
strategia = parserLettore.processContent(paginaAttuale,new SimpleTextExtractionStrategy());
return PdfTextExtractor.getTextFromPage(lettore,paginaAttuale);
}
strategia = parserLettore.processContent(paginaAttuale, new SimpleTextExtractionStrategy());
String s = PdfTextExtractor.getTextFromPage(lettore, paginaAttuale);
return s+getTestoRicorsivo(paginaAttuale+1);
}
public String getTestoPagina(int pagina) throws IOException{
strategia = parserLettore.processContent(pagina,new SimpleTextExtractionStrategy());
return PdfTextExtractor.getTextFromPage(lettore, pagina);
}
}
per verificarlo basta un semplice main