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