Je fais une application qui nécessite d’ouvrir pdf.
J’ai aussi un fichier pdf dans le dossier des ressources, donc je ne peux pas l’ouvrir directement dans webview.
Par défaut, Android ne supporte pas le pdf.
Y at-il une API qui fonctionne sur Android (sauf MuPdf)?
Aucun lecteur de pdf n’a été installé sur mon appareil, donc ACTION VIEW ne m’est pas utile
Suivant ne fonctionne pas …….
Rendre un fichier PDF en utilisant Java sur Android
Fichier d’actifs ouvert pdf dans l’application
pouvez-vous me suggérer un bon api …
Merci d’avance…
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.
Premier.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, Ssortingng name) { return ((name.endsWith(".pdf"))); } }); pdflist = new Ssortingng[imagelist.length]; for(int i = 0;i(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); Ssortingng path = imagelist[(int)id].getAbsolutePath(); openPdfIntent(path); } private void openPdfIntent(Ssortingng 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 aidera beaucoup. Essaye ça. N’oubliez pas d’append votre Second.java
dans votre manifeste. Ajoutez des tirables à tout ce dont vous avez besoin en second.java
avec vos tirables. Et, reportez-vous à l’exemple de GitHub
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 le fichier enregistré 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(); } } } }); } }
Je n’ai jamais eu besoin de le faire, mais vous pourriez probablement utiliser une bibliothèque comme iText pour accéder au fichier PDF par programmation, puis afficher le PDF.