pdfbox getcharacterbyarticle () рендеринг вектора для последней страницы - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь получить текстовые детали, такие как координаты, ширина и высота, используя следующий код (это решение взято из здесь ), но на выходе был только текст из последнегостраница .

Код

public static void main( String[] args ) throws IOException    {
        PDDocument document = null;
        String fileName = "apache.pdf"

        PDFParser parser = new PDFParser(new FileInputStream(fileName));
        parser.parse();

        StringWriter outString = new StringWriter();

        CustomPDFTextStripper stripper = new CustomPDFTextStripper();
        stripper.writeText(parser.getPDDocument(), outString);

        Vector<List<TextPosition>> vectorlistoftps = stripper.getCharactersByArticle();

        for (int i = 0; i < vectorlistoftps.size(); i++) {
            List<TextPosition> tplist = vectorlistoftps.get(i);
            for (int j = 0; j < tplist.size(); j++) {
                TextPosition text = tplist.get(j);
                System.out.println(" String "
                        + "[x: " + text.getXDirAdj() + ", y: "
                        + text.getY() + ", height:" + text.getHeightDir()
                        + ", space: " + text.getWidthOfSpace() + ", width: "
                        + text.getWidthDirAdj() + ", yScale: " + text.getYScale() + "]"
                        + text.getCharacter() +" Font "+ text.getFont().getBaseFont() + " PageNUm "+ (i+1));
            }
        }
} 

CustomPDFTextStripper класс:

class CustomPDFTextStripper extends PDFTextStripper
{
    //Vector<Vector<List<TextPosition>>> data = new Vector<Vector<List<TextPosition>>>();
    public CustomPDFTextStripper() throws IOException {
        super();
    }

    public Vector<List<TextPosition>> getCharactersByArticle(){
       // data.add(charactersByArticle);
        return charactersByArticle;
    }
}

Я пытался добавить векторы в список,но при вызове stripper () он выполняет итерацию по всем страницам, а данные последней страницы сохраняются в векторе charactersByArticle и, таким образом, возвращают то же самое.Как получить информацию для всех страниц ??

1 Ответ

0 голосов
/ 08 июня 2018

Временное исправление:

Изменен основной метод для установки текущей страницы в качестве конечной страницы и получения текстовой информации.Не очень хорошая идея.

 for (int page = 0; page < pageCount; page++)
                    {
        stripper.setStartPage(0);
        stripper.setEndPage(page + 1);
        stripper.writeText(parser.getPDDocument(), outString);
        Vector vectorlistoftps = stripper.getCharactersByArticle();
        PDPage thisPage = stripper.getCurrentPage();
        for (int i = 0; i < vectorlistoftps.size(); i++) {
                List<TextPosition> tplist = vectorlistoftps.get(i);
        }
    }
...