在PDF Box Reader中获取当前页码

时间:2019-02-25 10:07:51

标签: java swing pdfbox

我正在尝试使用PDF Box Reader来获取当前页面。

听是我写的代码。

公共类PDFTextExtractor {

ArrayList extractText(String fileName)引发异常{

PDDocument document = null;
try {
    document = PDDocument.load( new File(fileName) );
    PDFTextAnalyzer stripper = new PDFTextAnalyzer();
    stripper.setSortByPosition( true );
    stripper.setStartPage( 0 );
    stripper.setEndPage( document.getNumberOfPages() );
    Writer dummy = new OutputStreamWriter(new ByteArrayOutputStream());
    stripper.writeText(document, dummy);
    return stripper.getCharactersList();
}
finally {
    if( document != null ) {
        document.close();
    }
}

}

当我尝试获取详细信息时,我正在编写以下代码。

public class PDFTextAnalyzer extends PDFTextStripper {

    public PDFTextAnalyzer() throws IOException {
        super();
        // TODO Auto-generated constructor stub
    }

    private ArrayList<CharInfo> charactersList = new ArrayList<CharInfo>();

    public ArrayList<CharInfo> getCharactersList() {
        return charactersList;
    }

    public void setCharactersList(ArrayList<CharInfo> charactersList) {
        this.charactersList = charactersList;
    }

    @Override
    protected void writeString(String string, List<TextPosition> textPositions)
            throws IOException {

        System.out.println("----->"+document.getPages().getCount());

/*      for(int i = 0 ; i < document.getPages().getCount();i++)
        {
        */
        float docHeight = +document.getPage(1).getMediaBox().getHeight();
        for (TextPosition text : textPositions) {
            /*
             * System.out.println((int)text.getUnicode().charAt(0)+" "+text.
             * getUnicode()+ " [(X=" + text.getXDirAdj()+" "+text.getX() + ",Y="
             * + text.getYDirAdj() + ") height=" + text.getHeightDir() +
             * " width=" + text.getWidthDirAdj() + "]");
             */

            System.out.println("<-->"+text.toString());
            charactersList.add(new CharInfo(
                    text.getUnicode(), 
                    text.getXDirAdj(),
                    docHeight - text.getYDirAdj(),
                    text.getWidthDirAdj(),
                    text.getHeightDir(),
                    text.getFontSizeInPt(),
                    1,     // Page number of current text
                    text.getFont().getFontDescriptor().getFontName(), 
                    text.getFont().getFontDescriptor().getFontFamily()
                )
            );

        }

但是我无法获取页码。请参见行注释“当前文本的页码”。有什么方法可以获取页码。

1 个答案:

答案 0 :(得分:4)