2011-01-24 28 views

risposta

53

PDFBox è la migliore libreria che ho trovato per questo scopo, è completa e davvero abbastanza facile da usare se stai semplicemente facendo l'estrazione di base del testo. Esempi possono essere trovati here.

Esso spiega in prima pagina, ma una cosa a cui fare attenzione è che l'inizio e gli indici finali quando si utilizza setStartPage() e setEndPage() sono entrambi compreso. Ho saltato questa spiegazione per la prima volta e poi mi ci è voluto un po 'per capire perché stavo ottenendo più di una pagina per ogni chiamata!

Itext è un'altra alternativa che funziona anche con C#, anche se personalmente non l'ho mai usato. È più basso di PDFBox, quindi meno adatto al lavoro se tutto ciò di cui hai bisogno è l'estrazione di base del testo.

+1

Il collegamento è attivo e funzionante. –

15

PDFBox contiene tools for text extraction.

iText ha un supporto di livello più basso per la manipolazione del testo, ma è necessario scrivere una quantità considerevole di codice per ottenere l'estrazione del testo.

iText in Action contiene una buona panoramica dei limiti dell'estrazione del testo da PDF, indipendentemente dalla libreria utilizzata (Sezione 18.2: Estrazione e modifica del testo) e una spiegazione convincente del perché la libreria non ha il supporto per l'estrazione del testo. In breve, è relativamente facile scrivere un codice che gestirà casi semplici, ma è praticamente impossibile estrarre il testo dal PDF in generale.

2

Utilizzare una libreria PDF come iText.

+0

mi piace iText, ma non fa estrazione del testo out-of-the-box: ti dà solo strumenti di basso livello in modo da poter fallo da solo. C'è una bella sezione in "iText in Action" sui problemi (indipendenti dalla libreria) con l'estrazione del testo. – Bolo

+0

PDFBox è incredibilmente semplice da usare rispetto a iText. Inoltre, quando provo a creare iText dal sorgente, non funziona correttamente in fase di runtime - Ottengo un sacco di errori criptici sulle risorse mancanti. –

7

con Apache PDFBox va in questo modo:

PDDocument document = PDDocument.load(new File("test.pdf")); 
if (!document.isEncrypted()) { 
    PDFTextStripper stripper = new PDFTextStripper(); 
    String text = stripper.getText(document); 
    System.out.println("Text:" + text); 
} 
document.close(); 
+0

importate questi: 'import java.io.File; import java.io.IOException; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; import org.apache.pdfbox.text.PDFTextStripperByArea; ' –

Problemi correlati