Text-Extraktion aus PDF mit PDFBox 2.0

Ich versuche, PDFBox 2.0 für die text-Extraktion. Wie erhalte ich Informationen über die Größe der schriftart von bestimmten Zeichen und die position Rechteck-dieses Zeichen auf der Seite.
Ich habe diese umgesetzt in PDFBox 1.6 mit einem PDFTextStripper:

    PDFParser parser = new PDFParser(is);
    try{
        parser.parse();
    }catch(IOException e){

    }
    COSDocument cosDoc = parser.getDocument();
    PDDocument pdd = new PDDocument(cosDoc);
    final StringBuffer extractedText = new StringBuffer();
    PDFTextStripper textStripper = new PDFTextStripper(){
        @Override
        protected void processTextPosition(TextPosition text) {
            extractedText.append(text.getCharacter());
            logger.debug("text position: "+text.toString());
        }
    };
    textStripper.setSuppressDuplicateOverlappingText(false);
    for(int pageNum = 0;pageNum<pdd.getNumberOfPages();pageNum++){
        PDPage page = (PDPage) pdd.getDocumentCatalog().getAllPages().get(pageNum);
        textStripper.processStream(page, page.findResources(), page.getContents().getStream());
    }
    pdd.close();

Aber in der 2.0-version von PDFBox, die processStream Methode wurde entfernt.
Wie kann ich erreichen das gleiche mit PDFBox 2.0?

Ich habe versucht, die folgenden:

        PDDocument pdd = PDDocument.load(inputStream);
        PDFTextStripper textStripper = new PDFTextStripper(){
            @Override
            protected void processTextPosition(TextPosition text){
                int pos = PDFdocument.length();
                String textadded = text.getUnicode();
                Range range = new Range(pos,pos+textadded.length());
                int pagenr = this.getCurrentPageNo();
                Rectangle2D rect = new Rectangle2D.Float(text.getX(),text.getY(),text.getWidth(),text.getHeight());
            }
        };
        textStripper.setSuppressDuplicateOverlappingText(false);
        for(int pageNum = 0;pageNum<pdd.getNumberOfPages();pageNum++){
            PDPage page = (PDPage) pdd.getDocumentCatalog().getPages().get(pageNum);
            textStripper.processPage(page);
        }
        pdd.close();

Den processTextPosition(TextPosition text) Methode nicht aufgerufen.
Anregungen wäre sehr willkommen.

  • Bitte schauen Sie auf die DrawPrintTextLocations Beispiel im source code das tut, was du anscheinend vorhast. Es verwendet die writeString () - Aufruf.
  • Danke, das Beispiel macht genau das, was ich suchte.
InformationsquelleAutor Dieudonné | 2016-02-29
Schreibe einen Kommentar