我正在开发一个需要在Android应用中打开,阅读和查看pdf 的应用程序。我在assets文件夹中有一个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页面需要时间,没有输出。模拟器的屏幕截图
有没有解决方法如何解决这个问题?
谢谢!
答案 0 :(得分:2)
试试android-pdfview库。它运作得很好。
在布局中包含PDFView:
<com.joanzapata.pdfview.PDFView
android:id="@+id/pdfView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
加载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));
}
}
答案 1 :(得分:0)
这是一个很大的问题。
默认情况下,您应该依赖用户应用程序,只需发送一个意图来检查是否有任何可以处理PDF文件的内容(例如Adobe Reader)。
如果由于某种原因你想在你的应用程序中呈现PDF,那么有两个主要的库: