如何在 android 中阅读和查看 PDF?
Posted
技术标签:
【中文标题】如何在 android 中阅读和查看 PDF?【英文标题】:How can I read and view PDF in android? 【发布时间】:2014-09-08 10:44:52 【问题描述】:我正在开发一个需要在 android 应用程序中打开、阅读和查看 pdf 的应用程序。我在资产文件夹中有一个 pdf 文件。默认情况下,android 不支持 pdf。
是否有用于打开、阅读和查看 pdf 文件的 API。这些文件位于 Assets 文件夹中。
经过两天的辛勤工作和大量的研发,我得到了一点解决方案,但仍然有少量查询。
我使用 PdfViewer 它是一个在 android 中显示 PDF 的库。下面是我的代码
MainActivity
public class MainActivity extends Activity
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(this, MyPdfViewerActivity.class);
intent.putExtra(PdfViewerActivity.EXTRA_PDFFILENAME,
"mnt/sdcard/sample.pdf");
startActivity(intent);
@Override
public boolean onCreateOptionsMenu(Menu menu)
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
MyPdfViewerActivity
public class MyPdfViewerActivity extends PdfViewerActivity
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;
有查询 加载 Pdf 页面需要时间,并且没有输出。模拟器截图
有什么办法可以解决这个问题吗?
谢谢!!
【问题讨论】:
查看这些帖子:http://***.com/questions/14289156/pdf-viewer-api-for-androidhttp://***.com/questions/11499942/android-code-to-implement-pdf-viewerhttp://***.com/questions/13344304/android-pdf-reader Display PDF within app on Android? 的可能副本 【参考方案1】:试试android-pdfview 库。效果很好。
在布局中包含 PDFView:
<com.joanzapata.pdfview.PDFView
android:id="@+id/pdfView"
android:layout_
android:layout_ />
加载 PDF 文件:
public class PDFViewActivity extends Activity implements OnPageChangeListener
public static final String SAMPLE_FILE = "sample.pdf";
public static final String ABOUT_FILE = "about.pdf";
PDFView pdfView;
String pdfName = SAMPLE_FILE;
Integer pageNumber = 1;
@Override
protected void onCreate(Bundle savedInstanceState)
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pdfView =(PDFView)findViewById(R.id.pdfView);
pdfView.fromAsset(pdfName)
.defaultPage(1)
.showMinimap(false)
.enableSwipe(true)
.load();
@Override
public void onPageChanged(int page, int pageCount)
pageNumber = page;
setTitle(format("%s %s / %s", pdfName, page, pageCount));
【讨论】:
请提供详细答案,因为它看起来不错但不清楚。 是的,我从我的项目中复制粘贴。 pdfView如何使用动画?【参考方案2】:这真是个问题。
默认情况下,您应该依赖用户应用程序,只需发送一个意图以检查是否有任何东西可以处理 PDF 文件(例如 Adobe 阅读器)。
如果出于某种原因您想在应用程序中呈现 PDF,有两个主要的库:
MUPDF Android PDF Viewer【讨论】:
以上是关于如何在 android 中阅读和查看 PDF?的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何创建 .doc、.ppt、.xls、.pdf 格式的文档编辑器? [关闭]
如何在 Android 11 Xamarin Forms 中下载和打开 PDF