2012-09-10 19 views
6

È possibile ottenere le posizioni delle parole utilizzando PDFBox, simile a "processTextPosition"? Sembra che processTextPosition venga chiamato solo su caratteri singoli e il codice che li unisce in parole fa parte di PDFTextStripper (nel metodo "normalize"), che restituisce la posizione del testo. C'è un metodo/utilità che estrae anche la posizione? (Per coloro che chiedono che cosa la motivazione è - l'informazione è in realtà un tavolo, e vorremmo per rilevare le cellule vuote) GraziePDFBox - ottenere posizioni di parole (e non solo caratteri ')

+0

forse questo aiuterà: http://stackoverflow.com/questions/3203790/parsing-pdf-files-especially-with -tables-with-pdfbox/12545981 # 12545981 – impeto

+0

Grazie per il suggerimento. Alla fine la nostra soluzione è stata quella di modificare writePage, per mantenere le parole con la loro posizione (come descritto nell'URL che hai inviato). Tuttavia, nel nostro caso, il numero di colonne (e le loro posizioni) non è noto e dobbiamo trovarlo in base all'organizzazione delle informazioni (ad es. - se ci sono molte linee che hanno parole che iniziano nella posizione Y = 100, probabilmente c'è una colonna della tabella lì). Esiste un componente in grado di rilevare questa struttura? Se è così, può gestire anche pagine leggermente ruotate, quando la "Y" non è una costante? – user964797

+0

un modo possibile è quello di tenere traccia dei caratteri aggiungendo un override al processTextPosition() della classe PDFTextStripper e controllando la parola seperator.Tenere un segno sulla parola start e mantenere un segno sulla parola fine e salvare la parola quando si verifica un delimitatore. – programer8

risposta

1

per ottenere le parole e il loro x e Y in un testo estratto da un file PDF che si dovrà estendere la classe PdfTextStripper e utilizzare la classe personalizzata per estrarre il testo da file pdf ad esempio

public class CustomPDFTextStripper extends PDFTextStripper{ 

    public CustomPDFTextStripper() throws IOException { 

    } 

    /** 
    * Override the default functionality of PDFTextStripper. 
    */ 

    @Override 
    protected void writeString(String text, List<TextPosition> textPositions) throws IOException{ 
     TextPosition firstProsition = textPositions.get(0); 
     writeString(String.format("[%s , %s , %s]", firstProsition.getTextPos().getXPosition(), 
       firstProsition.getTextPos().getYPosition(), text)); 

    } 
} 

creare un oggetto di questa classe personalizzata ed estrarre il testo come in tal modo

PDFTextStripper pdfStripper = new CustomPDFTextStripper(); 
String text = pdfStripper.getText(*pdf file wrapped as a PDDocument object*); 

la stringa di testo risultante è nella forma [xposition, yposition, word] separata dal separatore di parole predefinito

+0

Non funziona per PdfBox .net –

Problemi correlati