2013-03-10 3 views
0

Я пытаюсь открыть pdf-файл в своем приложении. Моя проблема в том, что я не могу прочитать документ, потому что он появляется со странными символами. Кроме того, если я покажу txt-файл, я могу прочитать его, но текст он не является арифметическим, как я хочу. Все линии имеют центр. Мой вопрос в том, что я делаю неправильно и как я могу исправить эти ошибки?Показать и отобразить файл pdf в android

Мой XML

<!-- Demonstrates styled string resources. 
    See corresponding Java code com.android.sdk.content.StyledText --> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/text" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textStyle="normal" /> 

</LinearLayout> 

</ScrollView> 

и класс

public class PrimulAjutor2A extends MainActivity2A 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     // See assets/res/any/layout/styled_text.xml for this 
     // view layout definition. 
     setContentView(R.layout.primulajutor2); 

     // Programmatically load text from an asset and place it into the 
     // text view. Note that the text we are loading is ASCII, so we 
     // need to convert it to UTF-16. 
     try { 
      InputStream is = getAssets().open("abc.pdf"); 

      // We guarantee that the available method returns the total 
      // size of the asset... of course, this does mean that a single 
      // asset can't be more than 2 gigs. 
      int size = is.available(); 

      // Read the entire asset into a local byte buffer. 
      byte[] buffer = new byte[size]; 
      is.read(buffer); 
      is.close(); 

      // Convert the buffer into a string. 
      String text = new String(buffer); 

      // Finally stick the string into the text view. 
      TextView tv = (TextView)findViewById(R.id.text); 
      tv.setText(text); 
     } catch (IOException e) { 
      // Should never happen! 
      throw new RuntimeException(e); 
     } 
    }} 
+0

используйте google docs в webview, чтобы открыть pdf-файл. – Raghunandan

+0

PDF является двоичным форматом и не конвертируется в строку –

ответ

0

Я предлагаю вам использовать Google Docs для отображения PDF с помощью WebView.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 

<WebView 
    android:id="@+id/wv" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"/> 


</LinearLayout> 

В вашем классе активности используйте следующий код.

 WebView wv= (WebView) findViewById(R.id.wv); 
    wv.setVerticalScrollBarEnabled(true); 
    wv.setHorizontalScrollBarEnabled(true); 
    wv.getSettings().setBuiltInZoomControls(true); 
    wv.getSettings().setJavaScriptEnabled(true); 
    wv.setWebViewClient(new WebViewClient()); 
    wv.loadUrl("https://docs.google.com/file/d/0B8ZDVNCvRWK8c3YzQVFaWjg1bEU/edit"); 

enter image description here

Требуется пользователя для входа в учетную запись Google и требует разрешения от владельца документа. Поскольку вы дали мне доступ, я могу просматривать его в своем телефоне. Протестировано на Samsung Galaxy S3. WebView можно прокручивать и масштабировать.

Если на вашем устройстве установлено приложение pdf, вы можете использовать намерение предоставить необходимые параметры, чтобы открыть файл pdf.

private void openFile(File f, String mimeType) 
{ 
Intent viewIntent = new Intent(); 
viewIntent.setAction(Intent.ACTION_VIEW); 
viewIntent.setDataAndType(Uri.fromFile(file), mimeType); 
// using the packagemanager to query is faster than trying startActivity 
// and catching the activity not found exception, which causes a stack unwind. 
List<ResolveInfo> resolved = getPackageManager().queryIntentActivities(viewIntent, 0); 
if(resolved != null && resolved.size() > 0) 
{ 
    startActivity(viewIntent); 
} 
else 
{ 
    // notify the user they can't open it. 
} 
} 

http://ecestage.googlecode.com/svn-history/r12/branches/src/com/pdfviewer/PdfViewerActivity.java. Я не пробовал код в ссылке. Вы можете попробовать.

+0

@ user2152480, пожалуйста, поддержите ответ. – Raghunandan

+1

он не может, потому что у него недостаточно репутации. – Sajmon

+0

Я набрал документы Google, но теперь это Google-привод. Я загрузил pdf там, но URL-адрес выглядит так: https://docs.google.com/file/d/0B8ZDVNCvRWK8c3YzQVFaWjg1bEU/edit. В ссылке нет abc.pdf. Что я должен делать? И я девушка: D – user2152480

Смежные вопросы