Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将Pdf文件转换为文本_Android_File Manager_Pdf Reader - Fatal编程技术网

Android 如何将Pdf文件转换为文本

Android 如何将Pdf文件转换为文本,android,file-manager,pdf-reader,Android,File Manager,Pdf Reader,我想从android的文件管理器中选择一个pdf文件,并将其转换为文本,以便文本到语音可以读取。我正在关注android开发者网站上的文档;但是,此示例用于打开文本文件。我使用PdfReader类/库打开文件并转换为文本。但我不知道如何将其与Uri集成。 下面是我需要使用PdfReader将pdf转换为文本的代码 PdfReader pdfReader = new PdfReader(file.getPath()); stringParser = PdfTextExtractor.getText

我想从android的文件管理器中选择一个pdf文件,并将其转换为文本,以便文本到语音可以读取。我正在关注android开发者网站上的文档;但是,此示例用于打开文本文件。我使用PdfReader类/库打开文件并转换为文本。但我不知道如何将其与Uri集成。 下面是我需要使用PdfReader将pdf转换为文本的代码

PdfReader pdfReader = new PdfReader(file.getPath());
stringParser = PdfTextExtractor.getTextFromPage(pdfReader, 1).trim();
pdfReader.close();
我正在使用intent调用文件管理器,以便用户可以选择pdf文件

fab.setOnClickListener(new View.OnClickListener() {
@Override
   public void onClick(View view) {
      intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
      intent.setType("*/*");
      startActivityForResult(intent, READ_REQUEST_CODE);
   }
});
然后我获取uri并打开文件

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent resultData) {
        if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
            if(resultData != null) {
                Uri uri = resultData.getData();
                Toast.makeText(MainActivity.this, filePath , Toast.LENGTH_LONG).show();
                readPdfFile(uri);
            }
        }
    }

    private String readTextFromUri(Uri uri) throws IOException {
        StringBuilder stringBuilder = new StringBuilder();
        try (InputStream inputStream =
                     getContentResolver().openInputStream(uri);
             BufferedReader reader = new BufferedReader(
                     new InputStreamReader(Objects.requireNonNull(inputStream)))) {
            String line;
            while ((line = reader.readLine()) != null) {
                stringBuilder.append(line);
            }
        }
        return stringBuilder.toString();
    }
使用这个
格拉德尔:-

implementation 'com.itextpdf:itextg:5.5.10'
试试看{
字符串parsedText=“”;
PdfReader reader=新的PdfReader(您的PDFPath);
int n=reader.getNumberOfPages();

对于(inti=0;i
readPdfFile(uri);
??您没有发布readPdfFile()的代码。您也没有告诉在何处以及如何调用post函数。例如,您没有告诉以何种方式使用PdfReader。@blackpos读取post所有信息都在那里。PdfReader代码位于readTextFromUri中,该方法正在解析文本文件。我需要修改,以便它改为解析pdf
implementation 'com.itextpdf:itextg:5.5.10'
try {
      String parsedText="";
      PdfReader reader = new PdfReader(yourPdfPath);
      int n = reader.getNumberOfPages();
      for (int i = 0; i <n ; i++) {
           parsedText   = parsedText+PdfTextExtractor.getTextFromPage(reader, i+1).trim()+"\n"; //Extracting the content from the different pages
      }
      System.out.println(parsedText);
      reader.close();
   } catch (Exception e) {
      System.out.println(e);
}