web-dev-qa-db-fra.com

Afficher PDF déposer dans mon application Android

Je n'arrive pas à comprendre comment afficher un fichier PDF dans une application Android. Jusqu'à présent, j'ai découvert qu'il était possible de lancer une Intent et d'ouvrir le PDF à l'aide de l'application par défaut Android. Mais je souhaite visualiser le fichier PDF directement dans mon application sans quitter. J'ai un en-tête et un pied de page dans ma mise en page. J'aimerais ouvrir le PDF entre les deux. J'ai également trouvé un fichier PdfReader.jar sur github.com, mais il ouvre le PDF dans une nouvelle activité. 

10
kaibuki

Peut-être que vous pouvez intégrer MuPdf dans votre application. Voici comment procéder: Intégrer MuPDF Reader dans une application

5
Yury

Vous pouvez télécharger la source ici ( Afficher le fichier PDF dans mon application Android )

Ajoutez cette dépendance dans votre fichier gradle:

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.os.Bundle;
import Android.util.Log;
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 + "-");
            }
        }
    }

}
18
Deepshikha Puri

Je ne pense pas que vous puissiez le faire facilement. vous devriez considérer cette réponse ici:

Comment afficher un document pdf dans une vue Web?

en principe, vous pourrez voir un pdf s'il est hébergé en ligne via Google Documents, mais pas si vous l'avez dans votre appareil (vous aurez besoin d'un lecteur autonome pour cela)

3
STT LCU

Je vous recommande vivement de consulter PDF.js , qui est capable de restituer des documents PDF dans un composant WebView standard. 

Voir aussi https://github.com/loosemoose/androidpdf pour un exemple de mise en oeuvre de cela.

2
Jay Sidri
                    Uri path = Uri.fromFile(file );
                    Intent pdfIntent = new Intent(Intent.ACTION_VIEW);
                    pdfIntent.setDataAndType(path , "application/pdf");
                    pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    try 
                      {
                     startActivity(pdfIntent ); }
                     catch (ActivityNotFoundException e) 
                       {
                          Toast.makeText(EmptyBlindDocumentShow.this,"No
                          Application available to viewPDF",                                                                                                                                                                         
                          Toast.LENGTH_SHORT).show();
                       }  
                   }  

pour plus de références, cliquez ici http://androiddhina.blogspot.in/2015/07/how-to-view-pdf-in-Android-application.html

1
Dhina k