方案说明:
Android实现pdf在线预览或本地预览的方法一般有两种方案:
- 使用第三方库方式,如mupdf、vudroid等;
- 使用WebView加载pdf预览。
下面分别列出这两种方案的详细实现。
第一种方案:使用第三方库方式
Step 1:导入库文件
下载对应的pdf库文件,以mupdf为例,将库文件导入到工程目录中。
Step 2:添加依赖
在工程目录中的gradle文件中添加对应的依赖。
compile 'com.artifex.mupdf:android-ndk:1.9a'
compile 'com.artifex.mupdf:android:1.9a'
Step 3:实现预览
实现pdf在线预览或本地预览需要进行以下操作:
- 获取pdf文件的路径
- 将pdf文件解析成bitmap格式
- 使用java或者NDK将pdf文件解析成bitmap格式
- 将bitmap绘制到Canvas中
- 在View中显示Canvas
/**
* 将pdf文件解析成bitmap格式
* @param path 文件路径
* @param pageNum 页面数
* @return P对应页数的bitmap
*/
public static Bitmap getPDFBitmap(String path,int pageNum)
{
Bitmap bitmap=null;
try {
//打开文件
RandomAccessFile raf = new RandomAccessFile(path, "r");
FileChannel channel = raf.getChannel();
ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
//打开文档-对象方式
MuPDFCore pdfCore = new MuPDFCore(buf);
//获取总页数
int pageCount = pdfCore.countPages();
//获取对应的page
MuPDFPage page = pdfCore.loadPage(pageNum);
//解析page成bitmap
bitmap=page.toBitmap();
}catch (Exception e)
{
e.printStackTrace();
}
return bitmap;
}
第二种方案:使用WebView加载pdf预览
Step 1:添加支持库
在gradle文件中添加支持库。
compile 'com.github.barteksc:android-pdf-viewer:2.8.2'
Step 2:自定义View
自定义一个继承WebView的pdfView控件。
public class PdfView extends WebView {
public PdfView(Context context) {
super(context);
}
public PdfView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public PdfView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void loadPDF(String path) {
//设置WebView支持javascript
getSettings().setJavaScriptEnabled(true);
//加载pdf
loadUrl("http://docs.google.com/gview?embedded=true&url=" + path);
}
}
Step 3:实现预览
在需要预览pdf的Activity中使用自定义的pdfView控件,调用loadPDF方法即可。
public class MainActivity extends AppCompatActivity {
private PdfView mPdfView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPdfView = findViewById(R.id.pdf_view);
//加载本地pdf文件
mPdfView.loadPDF("file:///sdcard/Download/test.pdf");
//加载网络pdf文件
//mPdfView.loadPDF("http://xxx/test.pdf");
}
}
以上就是使用第三方库和WebView加载pdf预览的详细实现步骤。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android实现pdf在线预览或本地预览的方法 - Python技术站