android - 在android代码中获取PDF的页数

标签 android pdf pdfbox onactivityresult android-pdf-api

我需要一个清晰的解决方案,说明如何在 android 中从 PDF 文件中获取页数。假设该人在 onActivityResult() 上选择了文件,我想知道 PDF 文件有多少页。我想要一个适用于 minSdkVersion 19 的解决方案,并且不需要我支付任何 PDF 操作软件的费用,因为我已经在网上检查过,没有明确的解决方案。请非常感谢,因为我真的需要解决方案。我将其与 Firebase 一起使用,并且想要上传 PDF 的页数,因为我还上传了文件。

这里是一个示例代码,我使用了 PDF Box:我不断收到的错误是 08-10 21:07:57.533 20514-20514/com.example.android.firebaseupload E/file: 错误:End- of-File,预期行 之前我必须手动输入文件路径,即使手动输入文件路径后也是同样的错误。 如何将 pdf 文件从路径加载到 PDDocument.load() 中??

 try {

         PDDocument doc = PDDocument.load("file:///storage/emulated/0/Boom%20Player/cache/c2#.pdf".getBytes());
         Toast.makeText(MainActivity.this,"Number of pages: "+doc.getNumberOfPages(),Toast.LENGTH_LONG).show();
     }
     catch (Exception e)
     {

         Log.e("file",e.getMessage().toString());
     }

最佳答案

找到了解决方案,我没有在 Uri 上调用 getpath() 并尝试使用新文件 (Uri.getPath()) 打开它,而是调用 openInputStream() 从 Uri 获取 InputStream。这里有很好的帮助... getContentResolver().openInputStream(uri) Android: Getting a file URI from a content URI? :) 也感谢链接 https://commonsware.com/blog/2016/03/15/how-consume-content-uri.html为了让我了解更多。

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==pickimage && resultCode==RESULT_OK && data!=null && data.getData()!=null)
    {
        filepath=data.getData();...//rest of code...

   PDDocument doc = PDDocument.load(getContentResolver().openInputStream(filepath));//main line

关于android - 在android代码中获取PDF的页数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45622124/

相关文章:

android - android 是否具有等效的 UIScrollView?

c# - Windows 应用商店应用程序上的 Android-SharedPreferences 之类的东西?

java - 如何使用 Java 将 PDF 中表格的特定单元格内的文本设为粗体?

java - PdfBox 将多个图像添加到 pdf 中

java - 使用 PDFBox 将页面添加到 PDF/A 文件,而不会丢失 PDF/A 的有效性

java - Android 中带有多个按钮的自定义圆圈

android - 如何在 Flutter 中按下按钮时打印单选按钮值

Silverlight 4.0 PDF 查看器

javascript - HtmlOptions.OnLoadScript 无法使用 ABCPdf 创建 PDF

hadoop - 自定义Hadoop Mapper