Utiliser PDFbox pour déterminer les coordonnées de mots dans un document

Je suis en utilisant PDFbox à extraire les coordonnées de mots/chaînes de caractères dans un document PDF, et ont eu du succès détermination de la position de chacun des caractères. c'est le code donc ici, à partir de la PDFbox doc:

package printtextlocations;
import java.io.*;
import org.apache.pdfbox.exceptions.InvalidPasswordException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDStream;
import org.apache.pdfbox.util.PDFTextStripper;
import org.apache.pdfbox.util.TextPosition;
import java.io.IOException;
import java.util.List;
public class PrintTextLocations extends PDFTextStripper {
public PrintTextLocations() throws IOException {
super.setSortByPosition(true);
}
public static void main(String[] args) throws Exception {
PDDocument document = null;
try {
File input = new File("C:\\path\\to\\PDF.pdf");
document = PDDocument.load(input);
if (document.isEncrypted()) {
try {
document.decrypt("");
} catch (InvalidPasswordException e) {
System.err.println("Error: Document is encrypted with a password.");
System.exit(1);
}
}
PrintTextLocations printer = new PrintTextLocations();
List allPages = document.getDocumentCatalog().getAllPages();
for (int i = 0; i < allPages.size(); i++) {
PDPage page = (PDPage) allPages.get(i);
System.out.println("Processing page: " + i);
PDStream contents = page.getContents();
if (contents != null) {
printer.processStream(page, page.findResources(), page.getContents().getStream());
}
}
} finally {
if (document != null) {
document.close();
}
}
}
/**
* @param text The text to be processed
*/
@Override /* this is questionable, not sure if needed... */
protected void processTextPosition(TextPosition text) {
System.out.println("String[" + text.getXDirAdj() + ","
+ text.getYDirAdj() + " fs=" + text.getFontSize() + " xscale="
+ text.getXScale() + " height=" + text.getHeightDir() + " space="
+ text.getWidthOfSpace() + " width="
+ text.getWidthDirAdj() + "]" + text.getCharacter());
}
}

Ce produit une série de lignes contenant la position de chaque personnage, y compris les espaces, qui ressemble à ceci:

String[202.5604,41.880127 fs=1.0 xscale=13.98 height=9.68814 space=3.8864403 width=9.324661]P

Où " P " est le caractère. Je n'ai pas été en mesure de trouver une fonction dans PDFbox de trouver les mots, et je ne suis pas assez familier avec Java pour être en mesure de concaténer ces caractères de retour en mots de recherche à travers, même si les espaces sont également inclus. Quelqu'un d'autre a été dans une situation similaire, et si oui, comment avez-vous l'aborder? Je n'ai vraiment besoin de la coordonnée du premier caractère dans la parole, si bien que simplifié, mais de la façon dont je vais correspondre à une chaîne de contre ce type de sortie est au delà de moi.

source d'informationauteur jbrain