如何阅读我的Android应用程序中的PDF?

我正在做一个需要打开pdf的应用程序。

我也有一些PDF资产文件夹,所以我不能直接在webview中打开它。

默认情况下,android不支持pdf。

有什么API可以在Android上运行(除了MuPdf)?

我的设备没有安装任何pdf阅读器,所以ACTION VIEW对我没有帮助

以下是不工作…….

在Android上使用Java呈现PDF文件

在应用程序中打开资产文件pdf

你能告诉我任何好的答案吗?

提前致谢…

我只是使用PdfViewer.jar (使用蓝色button下载)并制作如下代码。

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; } } 

希望这可以帮助你很多。 尝试这个。 不要忘记在清单中添加你的Second.java 。 用drawables在second.java添加一些drawable。 而且,请参阅GitHub中的示例

有些手机(如Nexus One)附带一个预装的Quickoffice版本,所以一旦将文件保存到SD卡上,就可以发送相应的Intent。

 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(); } } } }); } } 

我从来没有需要这样做,但你可以使用像iText这样的库以编程方式访问PDF文件,然后显示PDF。