web-dev-qa-db-fra.com

Comment lire le pdf dans mon Android application?

Je fais une application qui nécessite d'ouvrir pdf.

J'ai également des fichiers PDF dans le dossier des ressources, je ne peux donc pas l'ouvrir directement dans WebView.

Par défaut Android ne supporte pas le pdf.

Existe-t-il une API qui fonctionne sur Android (à l'exception de MuPdf)?

Aucun lecteur de pdf n’est installé sur mon appareil, donc ACTION VIEW ne m’aide en rien.

Ce qui suit ne fonctionne pas .......

Rendu un fichier PDF en utilisant Java sur Android

Ouvrir fichier de fichier pdf dans l'application

pouvez-vous me suggérer une bonne api ...

merci d'avance...

48
MAC

Je l'ai simplement fait en utilisant PdfViewer.jar (téléchargez-le avec le bouton bleu) et créez un code comme ci-dessous.

First.Java

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

    File images = Environment.getExternalStorageDirectory();
    imagelist = images.listFiles(new FilenameFilter()
    {  
            public boolean accept(File dir, String name)  
            {  
                    return ((name.endsWith(".pdf")));
            }  
    }); 
    pdflist = new String[imagelist.length]; 
    for(int i = 0;i<imagelist.length;i++)
    {
            pdflist[i] = imagelist[i].getName();
    }
    this.setListAdapter(new ArrayAdapter<String>(this,Android.R.layout.simple_list_item_1, pdflist));
}

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
{
        super.onListItemClick(l, v, position, id);
        String path = imagelist[(int)id].getAbsolutePath();
        openPdfIntent(path);
}

private void openPdfIntent(String path) 
{
    try
    {
      final Intent intent = new Intent(First.this, Second.class);
      intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME, path);
      startActivity(intent);
    }
    catch (Exception e) 
    {
      e.printStackTrace();
    }
}

Second.Java

public class Second extends PdfViewerActivity 
{

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
}

public int getPreviousPageImageResource() {
    return R.drawable.left_arrow;
}

public int getNextPageImageResource() {
    return R.drawable.right_arrow;
}

public int getZoomInImageResource() {
    return R.drawable.zoom_in;
}

public int getZoomOutImageResource() {
    return R.drawable.zoom_out;
}

public int getPdfPasswordLayoutResource() {
    return R.layout.pdf_file_password;
}

public int getPdfPageNumberResource() {
    return R.layout.dialog_pagenumber;
}

public int getPdfPasswordEditField() {
    return R.id.etPassword;
}

public int getPdfPasswordOkButton() {
    return R.id.btOK;
}

public int getPdfPasswordExitButton() {
    return R.id.btExit;
}

public int getPdfPageNumberEditField() {
    return R.id.pagenum_edit;
}
}

J'espère que cela vous aide beaucoup. Essaye ça. N'oubliez pas d'ajouter votre Second.Java dans votre manifeste. Ajoutez quelques tirages à votre convenance dans second.Java avec vos tirables. Et, reportez-vous à l'exemple de GitHub

61
Praveenkumar

Certains téléphones (tels que le Nexus One) sont livrés avec une version de Quickoffice préinstallée. Il peut donc être aussi simple que d’envoyer l’intention appropriée une fois que vous avez enregistré le fichier sur la carte SD.

public class OpenPdf extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 

        Button button = (Button) findViewById(R.id.OpenPdfButton); 
        button.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                File file = new File("/sdcard/example.pdf"); 

                if (file.exists()) { 
                    Uri path = Uri.fromFile(file); 
                    Intent intent = new Intent(Intent.ACTION_VIEW); 
                    intent.setDataAndType(path, "application/pdf"); 
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

                    try { 
                        startActivity(intent); 
                    }  
                    catch (ActivityNotFoundException e) { 
                        Toast.makeText(OpenPdf.this,  
                            "No Application Available to View PDF",  
                            Toast.LENGTH_SHORT).show(); 
                    } 
                } 
            } 
        }); 
    } 
} 
9
Gautam Vasoya

Je n’ai jamais eu besoin de faire cela, mais vous pourriez probablement utiliser une bibliothèque telle que iText pour accéder au fichier PDF par programme, puis afficher le PDF.

2
glen3b