我正在制作一个需要打开 pdf 的应用程序。
我在资产文件夹中也有一些 pdf,所以我无法直接在 webview 中打开它。
默认情况下,android 不支持 pdf。
是否有任何适用于 android 的 API(MuPdf 除外)?
我的设备没有安装任何 pdf 阅读器,所以 ACTION VIEW 对我没有帮助
以下不起作用.......
你能推荐我什么好的api吗?
我正在制作一个需要打开 pdf 的应用程序。
我在资产文件夹中也有一些 pdf,所以我无法直接在 webview 中打开它。
默认情况下,android 不支持 pdf。
是否有任何适用于 android 的 API(MuPdf 除外)?
我的设备没有安装任何 pdf 阅读器,所以 ACTION VIEW 对我没有帮助
以下不起作用.......
你能推荐我什么好的api吗?
我只是使用PdfViewer.jar(使用蓝色按钮下载它)并制作了如下所示的代码。
第一个.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();
}
}
二.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
的drawables。并且,请参考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。