2010-10-26 5 views
4

J'ai besoin d'extraire le texte (mot à mot) d'un fichier pdf.extrait du texte à partir de fichiers pdf

import java.io.*; 

import com.itextpdf.text.*; 

import com.itextpdf.text.pdf.*; 

import com.itextpdf.text.pdf.parser.*; 

public class pdf { 

    private static String INPUTFILE = "http://ontology.buffalo.edu/ontology%28PIC%29.pdf" ; 

    private static String OUTPUTFILE = "c:/new3.pdf"; 

    public static void main(String[] args) throws DocumentException, 
      IOException { 

     Document document = new Document(); 

     PdfWriter writer = PdfWriter.getInstance(document, 

     new FileOutputStream(OUTPUTFILE)); 

     document.open(); 

     PdfReader reader = new PdfReader(INPUTFILE); 

     int n = reader.getNumberOfPages(); 

     PdfImportedPage page; 

     // Go through all pages 

     for (int i = 1; i <= n; i++) { 

       page = writer.getImportedPage(reader, i); 

       System.out.println(i); 


       Image instance = Image.getInstance(page); 

       document.add(instance); 

     } 

     document.close(); 


     PdfReader readerN = new PdfReader(OUTPUTFILE); 

     PdfTextExtractor parse = new PdfTextExtractor(); 

for (int i = 1; i <= n; i++) 

System.out.println(parser.getTextFromPage(reader,i)); 


} 

Quand je compile le code, j'ai cette erreur:

the constructor PdfTextExtractor is undefined

Comment puis-je résoudre ce problème? PDFTextExtractor ne contient que des méthodes statiques et le constructeur est privé.

+1

Si vous trouvez une réponse correcte, marquez-la comme la réponse, les gens ont tendance à cesser d'aider s'ils ne sont pas reconnus. – Woot4Moo

Répondre

8

itext

Vous pouvez l'appeler comme ceci:
String myLine = PDFTextExtractor.getTextFromPage(reader, pageNumber)

+0

Posté à partir de [cette édition] (http://stackoverflow.com/review/suggested-edits/3010522) (et éventuellement incorrect): 'Votre réponse m'a aidé mais je voulais juste corriger le bon nom de la méthode. C'est "PdfTextExtractor" au lieu de "PDFTextExtractor". – gunr2171

-1
// Try Apache PDF Box 
import java.io.FilterInputStream; 
import java.io.InputStream; 

import org.apache.pdfbox.cos.COSDocument; 
import org.apache.pdfbox.pdfparser.PDFParser; 
import org.apache.pdfbox.pdmodel.PDDocument; 
import org.apache.pdfbox.util.PDFTextStripper; 

// Your PDF file 
String filePath = ""; 
InputStream inputStream = null; 

try 
{ 
    inputStream = new FileInputStream(filePath); 
    PDFParser parser = new PDFParser(inputStream); 

    // This will parse the stream and populate the COSDocument object. 
    parser.parse(); 

    // Get the document that was parsed. 
    COSDocument cosDoc = parser.getDocument(); 

    // This class will take a pdf document and strip out all of the text and 
    // ignore the formatting and such. 
    PDFTextStripper pdfStripper = new PDFTextStripper(); 

    // This is the in-memory representation of the PDF document 
    PDDocument pdDoc = new PDDocument(cosDoc); 
    pdfStripper.setStartPage(1); 
    pdfStripper.setEndPage(pdDoc.getNumberOfPages()); 

    // This will return the text of a document. 
    def statementPDF = pdfStripper.getText(pdDoc); 
} 
catch(Exception e) 
{ 
    String errorMessage += "\nUnexpected Exception: " + e.getClass() + "\n" + e.getMessage(); 
    for (trace in e.getStackTrace()) 
    { 
     errorMessage += "\n\t" + trace; 
    } 
} 
finally 
{ 
    if (inputStream != null) 
    { 
     inputStream.close(); 
    } 
} 
0

Si vous souhaitez obtenir tout le texte à partir du fichier PDF et l'enregistrer dans un fichier texte que vous pouvez utiliser le code ci-dessous.

Utilisez la bibliothèque pdfutil.jar.

import java.io.IOException; 
import java.io.PrintWriter; 

import com.testautomationguru.utility.PDFUtil; 

public class PDFToText{ 

    public static void main(String[] args) { 

     try { 
      String pdfFilePath = "C:\\abc.pdf"; 
      PDFUtil pdfUtil = new PDFUtil(); 
      String content = pdfUtil.getText(pdfFilePath); 
      PrintWriter out = new PrintWriter("C:\\abc.txt"); 
      out.println(content); 
      out.close(); 

     } catch (IOException e) { 

      e.printStackTrace(); 
     } 
    } 

} 
Questions connexes