Cómo abrir/visualización de documentos(.pdf, .doc), sin aplicaciones externas?

Quiero crear un programa, que se pueden abrir documentos sin necesidad de aplicaciones externas. Yo necesito esto, porque quiero para desplazarse por el documento con los teléfonos de orientación(Pitch y Roll). Puedo crear un botón en la parte inferior de la pantalla, y cuando me mantenga presionado el botón, puede desplazarse por el documento también. Si me suelte el botón, no puede desplazarse. Así que, si puedo abrir el documento con aplicaciones externas, mi botón desaparece, y la sensorManager funciona ninguno de los dos.

Tiene alguien alguna idea para resolver este problema. O alguien tiene alguna idea, cómo desplazarse por el documento, se abrió en una aplicación externa, con mis teléfonos de orientación?

(Lo siento por mi inglés)

Este es mi manifiesto:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.orientationscrolling"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.orientationscrolling.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
</manifest>

Este es mi Diseño:

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

<WebView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

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

<Button 
   android:id="@+id/mybutt"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:textSize="25sp"
   android:text="Scroll!!"
   android:layout_gravity="right"/>
</LinearLayout>

Este es mi Código:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    button = (Button) findViewById( R.id.mybutt );

    String pdf = "http://www.pc-hardware.hu/PDF/konfig.pdf";
    String doc="<iframe src='http://docs.google.com/gview?embedded=true&url=http://www.pc-hardware.hu/PDF/konfig.pdf' width='100%' height='100%' style='border: none;'></iframe>";
    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginsEnabled(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.loadData( doc , "text/html", "UTF-8");
}
  • Encontraste la solución? Estoy también se enfrentan a este problema. No podía cargar los documentos en webview.
  • Mismo problema, la solución funciona bien para los archivos pdf, pero no para .docs o .pptx.
  • Llegaste a resolver su problema?
InformationsquelleAutor KhalDrogo | 2013-01-29

4 Kommentare

  1. 24

    Creo que usted debe usar la biblioteca personalizada para lograrlo .Ver este y este

    Pero hay un camino para la visualización de PDF con llamar a otra aplicación

    Esta es una manera para mostrar PDF en la aplicación de android que es la incrustación de que el documento PDF para android webview mediante el apoyo de http://docs.google.com/viewer

    pseudo

    String doc="<iframe src='http://docs.google.com/viewer?url=+location to your PDF File+' 
                  width='100%' height='100%' 
                  style='border: none;'></iframe>";

    una muestra es la que se muestra a continuación

     String doc="<iframe src='http://docs.google.com/viewer?url=http://www.iasted.org/conferences/formatting/presentations-tips.ppt&embedded=true' 
                  width='100%' height='100%' 
                  style='border: none;'></iframe>";

    Código

        WebView  wv = (WebView)findViewById(R.id.webView); 
        wv.getSettings().setJavaScriptEnabled(true);
        wv.getSettings().setPluginsEnabled(true);
        wv.getSettings().setAllowFileAccess(true);
        wv.loadUrl(doc);
        //wv.loadData( doc, "text/html",  "UTF-8");

    y en el manifiesto de proporcionar

    <uses-permission android:name="android.permission.INTERNET"/>

    Ver este

    Precaución : no soy consciente de los problemas de compatibilidad con diferentes versiones de android

    En este enfoque, el inconveniente es que necesitan conexión a internet . Pero creo que satisfacer su necesidad

    EDITAR
    Tratar esto como src para iframe

    src="http://docs.google.com/gview?embedded=true&url=http://www.pc-hardware.hu/PDF/konfig.pdf"

    intentar wv.loadData( doc , "text/html", "UTF-8"); . Ambos me funciona

    Cómo abrir/visualización de documentos(.pdf, .doc), sin aplicaciones externas?

    • Impresionante! Nunca podría pensar en él.
    • no estoy seguro de que es lo que quieres?? debido a su apoyo de otro servicio
    • No funciona por alguna razón. Aquí está mi teléfono en la pantalla la imagen: enlace puedo agregar permiso para el manifiesto. Este es mi Código: ‘Cadena doc=»<iframe src=’docs.google.com/viewer?url=http://www.pc-hardware.hu/PDF/…‘ width=’100%’ height=’100%’ style=’border: none;’></iframe>»; webView = (WebView) findViewById(R. id.webView1); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setPluginsEnabled(true); webView.getSettings().setAllowFileAccess(true); webView.loadUrl(doc);’
    • tiene u dado el permiso en el manifiesto de ..? y en que versión de android que lo revisen?
    • permiso: <uses-permission android:name=»android.el permiso.INTERNET» /> la pruebo en Android 2.3
    • puedes publicar el enlace de pdf
    • por favor, dame el enlace pdf
    • Cadena de doc=»<iframe src=’docs.google.com/viewer?url=http://www.pc-hardware.hu/PDF/…‘ width=’100%’ height=’100%’ style=’border: none;’></iframe>»;
    • trato de su enlace es el trabajo perfecto para mí en android 2.X & 4.X
    • si yo uso este, funciona, pero no el tuyo solución: String pdf = «pc-hardware.hu/PDF/konfig.pdf«; webView.loadUrl(«docs.google.com/gview?embedded=true&url=» + pdf);
    • y mi principal problema es que quiero para desplazarse mi pdf con los teléfonos orientatin(pitch y roll)
    • usted dijo que trabaja para usted cuál es el problema entonces ??si es un trabajo ¿cuál es el problema?sólo quiero saber lo que salió mal
    • no funciona con su solución de iframe, funciona con webView.loadUrl(«docs.google.com/gview?embedded=true&url=»; + pdf url); pero no soluciona mi problema, porque yo no puedo desplazarse con mis teléfonos de orientación
    • yo no puedo ver tu dirección de correo electrónico, pero aquí está la mía: [email protected]
    • ¿Cómo puedo guardar este pdf para teléfono de la galería o por correo electrónico en pdf a una persona?
    • Se utiliza para trabajar anteriormente, pero recientemente la docs.google.com/viewer?url= no funciona. Se tiene x-frame-options error y el pdf no se puede abrir.
    • Cómo puedo hacer con displayedArticle.getEncodedContent() ?
    • lo displayedArticle ??
    • puedo usar esto para mostrar un archivo pdf a partir de mi tarjeta SD?

  2. 1

    Descargar el código fuente desde aquí (Mostrar archivo PDF dentro de mi aplicación android)

    Agregar esta dependencia en su Grado:

    compile 'com.github.barteksc:android-pdf-viewer:2.0.3'

    activity_main.xml

    <RelativeLayout android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:background="@color/colorPrimaryDark"
            android:text="View PDF"
            android:textColor="#ffffff"
            android:id="@+id/tv_header"
            android:textSize="18dp"
            android:gravity="center"></TextView>
    
        <com.github.barteksc.pdfviewer.PDFView
            android:id="@+id/pdfView"
            android:layout_below="@+id/tv_header"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
    
        </RelativeLayout>

    MainActivity.java

    package pdfviewer.pdfviewer;
    
    import android.app.Activity;
    import android.database.Cursor;
    import android.net.Uri;
    import android.provider.OpenableColumns;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.RelativeLayout;
    
    import com.github.barteksc.pdfviewer.PDFView;
    import com.github.barteksc.pdfviewer.listener.OnLoadCompleteListener;
    import com.github.barteksc.pdfviewer.listener.OnPageChangeListener;
    import com.github.barteksc.pdfviewer.scroll.DefaultScrollHandle;
    import com.shockwave.pdfium.PdfDocument;
    
    import java.util.List;
    
    public class MainActivity extends Activity implements OnPageChangeListener,OnLoadCompleteListener{
        private static final String TAG = MainActivity.class.getSimpleName();
        public static final String SAMPLE_FILE = "android_tutorial.pdf";
        PDFView pdfView;
        Integer pageNumber = 0;
        String pdfFileName;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            pdfView= (PDFView)findViewById(R.id.pdfView);
            displayFromAsset(SAMPLE_FILE);
        }
    
        private void displayFromAsset(String assetFileName) {
            pdfFileName = assetFileName;
    
            pdfView.fromAsset(SAMPLE_FILE)
                    .defaultPage(pageNumber)
                    .enableSwipe(true)
    
                    .swipeHorizontal(false)
                    .onPageChange(this)
                    .enableAnnotationRendering(true)
                    .onLoad(this)
                    .scrollHandle(new DefaultScrollHandle(this))
                    .load();
        }
    
    
        @Override
        public void onPageChanged(int page, int pageCount) {
            pageNumber = page;
            setTitle(String.format("%s %s /%s", pdfFileName, page + 1, pageCount));
        }
    
    
        @Override
        public void loadComplete(int nbPages) {
            PdfDocument.Meta meta = pdfView.getDocumentMeta();
            printBookmarksTree(pdfView.getTableOfContents(), "-");
    
        }
    
        public void printBookmarksTree(List<PdfDocument.Bookmark> tree, String sep) {
            for (PdfDocument.Bookmark b : tree) {
    
                Log.e(TAG, String.format("%s %s, p %d", sep, b.getTitle(), b.getPageIdx()));
    
                if (b.hasChildren()) {
                    printBookmarksTree(b.getChildren(), sep + "-");
                }
            }
        }
    
    }

    Gracias!

    • Esta biblioteca no ofrece navegación por los enlaces dentro del archivo. ¿Conoces alguna otra plena prueba de la biblioteca con los enlaces internos de navegación así?
    • Lo siento, no sé
  3. 1

    Por encima de las respuestas que dependen de google docs sólo funcionará cuando haya conexión a internet. Una mejor opción sería el uso de Android PdfRenderer clase.

    Usted puede tratar de aplicación de muestra aquí.

  4. 0

    Bueno, creo que por debajo es la solución

     String doc="<iframe src='http://docs.google.com/viewer?url=http://www.example.com/yourfile.pdf&embedded=true' width='100%' height='100%'  style='border: none;'></iframe>";
    
    
        WebView  wv = (WebView)findViewById(R.id.wv);
        wv.setVisibility(WebView.VISIBLE);
        wv.getSettings().setJavaScriptEnabled(true);
        wv.getSettings().setAllowFileAccess(true);
        wv.getSettings().setPluginState(WebSettings.PluginState.ON);  
        wv.setWebViewClient(new Callback()); 
        wv.loadData(doc, "text/html", "UTF-8");   

    Con la esperanza de que esto le ayudará 🙂

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea