2016-06-30 1 views
0

Я хочу получить текстовое положение каждого символа документа PDF. Я рассмотрел пример PrintTextLocations, представленный на сайте примера PDFBox. В этом примере они переопределили защищенный метод writeString и распечатали текстовые позиции, расширив класс PDFTextStripper. Вот что методКак вернуть текстовые объекты в PDFBox?

/** 
* Override the default functionality of PDFTextStripper. 
*/ 
@Override 
protected void writeString(String string, List<TextPosition> textPositions) throws IOException 
{ 
    for (TextPosition text : textPositions) 
    { 
     System.out.println("String[" + text.getXDirAdj() + "," + 
       text.getYDirAdj() + " fs=" + text.getFontSize() + " xscale=" + 
       text.getXScale() + " height=" + text.getHeightDir() + " space=" + 
       text.getWidthOfSpace() + " width=" + 
       text.getWidthDirAdj() + "]" + text.getUnicode()); 
    } 
} 

Но я хочу, чтобы вернуть TextPosition список из класса. Из API я обнаружил, что существует защищенный метод в классе PDFTextStripper с именем getCharactersByArticle(), который возвращает protected List<List<TextPosition>>.

Я хочу знать, как вернуть список из метода.

Заранее спасибо.

+0

* Возврат списка из метода * - Вы хотите вернуть его из метода * который *? Очевидно, что не 'writeString', поскольку вы не вызывающий, а фактические вызывающие лица игнорируют любые возвраты. – mkl

ответ

0

Вы можете использовать следующее обходное решение, если память не является проблемой для вашего кода.

static ArrayList<TextPosition> pos=new ArrayList<TextPosition>(); 
/** 
* Override the default functionality of PDFTextStripper. 
*/ 
@Override 
protected void writeString(String string, List<TextPosition> textPositions) throws IOException 
{ 
    for (TextPosition text : textPositions) 
    { 
     pos.add(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.getUnicode()); 
    } 
} 

или, вы можете скопировать классы pdfbox и переустановить в своем проекте с требуемыми изменениями.

Смежные вопросы