2015-04-21 17 views
5

Tôi muốn đọc văn bản từ tệp PDF có trong thẻ SD. Làm cách nào để nhận văn bản từ tệp PDF được lưu trữ trong thẻ sd?Android- Nhận văn bản từ PDF

tôi đã cố gắng như:

public class MainActivity extends ActionBarActivity implements TextToSpeech.OnInitListener { 

    private TextToSpeech tts; 
    private String line = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     tts = new TextToSpeech(getApplicationContext(), this); 

     final TextView text1 = (TextView) findViewById(R.id.textView1); 

     findViewById(R.id.button1).setOnClickListener(new OnClickListener() { 

      private String[] arr; 

      @Override 
      public void onClick(View v) { 
       File sdcard = Environment.getExternalStorageDirectory(); 

       // Get the text file 

       File file = new File(sdcard, "test.pdf"); 

       // ob.pathh 
       // Read text from file 

       StringBuilder text = new StringBuilder(); 
       try { 
        BufferedReader br = new BufferedReader(new       FileReader(file)); 

        // int i=0; 
        List<String> lines = new ArrayList<String>(); 

        while ((line = br.readLine()) != null) { 
         lines.add(line); 
         // arr[i]=line; 
         // i++; 
         text.append(line); 
         text.append('\n'); 
        } 
        for (String string : lines) { 
         tts.speak(string, TextToSpeech.SUCCESS, null); 
        } 
        arr = lines.toArray(new String[lines.size()]); 
        System.out.println(arr.length); 
        text1.setText(text); 

       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

      } 
     }); 

    } 

    @Override 
    public void onInit(int status) { 
     if (status == TextToSpeech.SUCCESS) { 
      int result = tts.setLanguage(Locale.US); 
      if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { 
       Log.e("TTS", "This Language is not supported"); 
      } else { 
       // speakOut(); 
      } 

     } else { 
      Log.e("TTS", "Initilization Failed!"); 
     } 
    } 

} 

Lưu ý: Đó là làm việc tốt nếu các tập tin là tập tin văn bản (test.txt) nhưng không làm việc cho pdf (test.pdf)

Nhưng đây là văn bản không nhận được từ PDF như nó, nó nhận được giống như mã byte. Làm thế nào tôi có thể đạt được điều này?

Xin cảm ơn trước.

+2

định dạng tập tin PDF không phải là văn bản đơn giản. Bạn sẽ cần một thư viện phân tích cú pháp như [PDFBox] (https://pdfbox.apache.org/) để trích xuất văn bản từ tệp. – TactMayers

+0

Tôi có thể sử dụng hộp PDF trong nền tảng Android không ?? –

Trả lời

2

định dạng PDF không phải là tập tin văn bản bình thường của bạn .. Bạn cần phải làm một ít nghiên cứu thêm về các file PDF này là câu trả lời tốt nhất mà bạn sẽ nhận được How to read pdf in my android application?

+1

Cuối cùng tôi có thể hiển thị tệp PDF đó nhưng Làm cách nào tôi có thể nhận được văn bản từ tệp PDF đó? –

5

tôi đã nhận được các giải pháp với iText.

Gradle,

compile 'com.itextpdf:itextg:5.5.10' 

Java,

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); 
     } 
+0

định dạng đường dẫn ở đây là gì? Tôi đã sử dụng '/ lưu trữ/mô phỏng/0/Tải xuống/abc.pdf' nhưng nó đang đưa ra lỗi –

+0

Lỗi nào bạn đang nhận được? Bạn đã thêm quyền bộ nhớ chưa? – REMITH

+0

vâng tôi đã nhận được giải pháp, đã có lỗi cho phép –

Các vấn đề liên quan