2015-04-21 16 views
5

SD kartta bulunan bir PDF dosyasındaki metni okumak istiyorum. Sd kartında saklanan bir PDF dosyasından metin alabilir miyiz?Android- PDF metnini edinin

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!"); 
     } 
    } 

} 

Not:

ben gibi çalıştı dosya metin dosyası (sınama.txt) ancak pdf için çalışmıyor (test.pdf)

olduğunu Ama burada metin olup olmadığı düzgün şekilde çalışıyorsa PDF'den değil, byte kodu gibi oluyor. Bunu nasıl başarabilirim?

Şimdiden teşekkürler.

+2

PDF dosya biçimi düz metin değildir. Dosyadan metinleri çıkarmak için [PDFBox] (https://pdfbox.apache.org/) gibi bir ayrıştırıcı kitaplığına ihtiyacınız olacaktır. – TactMayers

+0

Android platformunda PDF kutusunu kullanabilir miyim? –

cevap

5

alırsınız iyi cevaptır Sen PDF'leri biraz daha araştırma yapmak gerekir .. normal metin dosyası değil.

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

Buradaki yol formatı nedir? '/ storage/emulated/0/Download/abc.pdf' kullandım ama hata veriyor –

+0

Ne tür bir hata alıyorsunuz? Depolama izni eklediniz mi? – REMITH

+0

Evet, çözümü aldım, izin hatası vardı –

İlgili konular