我必须在我的 Android 应用程序中实现一个自定义的 PDF 查看器,我已经实现了这个:
https://github.com/barteksc/AndroidPdfViewer
要打开我的 pdf,我使用了这个功能:
/* Load PDF in the activity */
private void openPDF(){
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +"/Download/verbale.pdf");
PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
pdfView.fromFile(file)
.defaultPage(0)
.enableAnnotationRendering(true)
.onLoad(this)
.onPageChange(this)
.scrollHandle(new DefaultScrollHandle(this))
.load();
}
Run Code Online (Sandbox Code Playgroud)
PDF 已正确呈现,但现在我需要在滚动期间获取页面的页码。
我怎么能做到这一点?
我试过用这个:
pdfView.getCurrentPage()
pdfView.getPageCount()
Run Code Online (Sandbox Code Playgroud)
但不是它不起作用......
解决方案
@Override
public void loadComplete(int nbPages) {
totalPages = nbPages;
}
@Override
public void onPageChanged(int page, int pageCount) {
//Page contains che current page
}
Run Code Online (Sandbox Code Playgroud)
可以看一下AndroidPdfViewer的官方例子:链接
看看那个例子中的这两个片段:
1)创建您的PDFView:
pdfView.fromAsset(SAMPLE_FILE)
.defaultPage(pageNumber)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.load();
Run Code Online (Sandbox Code Playgroud)
2) 并实现 onPageChanged(..):
@Override
public void onPageChanged(int page, int pageCount) {
pageNumber = page;
//do what you want with the pageNumber
}
Run Code Online (Sandbox Code Playgroud)
也不要忘记 implement OnPageChangeListener