Java pdfbox getcharacterbyarticle()呈现最后一页的向量

Java pdfbox getcharacterbyarticle()呈现最后一页的向量,java,pdf,pdfbox,Java,Pdf,Pdfbox,我正在尝试使用以下代码获取文本详细信息,如坐标、宽度和高度(采用此解决方案),但输出的只是最后一页的文本 代码 public static void main( String[] args ) throws IOException { PDDocument document = null; String fileName = "apache.pdf" PDFParser parser = new PDFParser(new FileInpu

我正在尝试使用以下代码获取文本详细信息,如坐标、宽度和高度(采用此解决方案),但输出的只是最后一页的文本

代码

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));
            }
        }
} 
publicstaticvoidmain(字符串[]args)引发IOException{
PDDocument文件=null;
String fileName=“apache.pdf”
PDFParser parser=newpdfparser(newfileinputstream(fileName));
parser.parse();
StringWriter outString=新StringWriter();
CustomPDFTextStripper剥离器=新CustomPDFTextStripper();
stripper.writeText(parser.getPDDocument(),outString);
Vector vectorlistoftps=stripper.getCharactersByAttribute();
对于(int i=0;i
自定义PDFTextStripper类别:

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;
    }
}
class CustomPDFTextStripper扩展了PDFTextStripper
{
//向量数据=新向量();
public CustomPDFTextStripper()引发IOException{
超级();
}
公共向量getCharactersByArticle(){
//添加数据(charactersByArticle);
返回字符标签;
}
}
我试图将向量添加到列表中,但调用剥离器()时,它会遍历所有页面,最后一页的详细信息存储在charactersByArticle向量中,因此返回相同的内容。如何获取所有页面的信息???

临时修复:

更改了main方法,将当前页面设置为结束页面并获取文本信息。不过这不是个好主意

 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);
        }
    }
for(int page=0;page
您是否尝试过剥离器.setStartPage()
剥离器.setEndPage()
?嗨@TilmanHausherr,我尝试过,但我只获得了在剥离器.setEndPage()中设置的页面的文本信息。因此,我通过迭代pdf中的页数并更改每次迭代setEndPage()中的值,暂时修复了它。我正在寻找比这更好的解决方案。非常感谢。