Android pdf转换bitmap保存到本地
PDF转换成图片保存到本地 Android有自带的API提供 首先要把PDF文件下载到本地,下载成功使用
下载就最简单的IO下载都行
例如:
try {
URL url = new URL(downUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
final int contentLength = connection.getContentLength();//文件大小
InputStream inputStream = connection.getInputStream();
File file = new File(saveFilePath);
if (!file.exists()) {
file.mkdir();
}
String newfile= saveFilePath+saveFileName;
File newFile = new File(newfile);
FileOutputStream fileOutputStream = new FileOutputStream(apkFile);
int count = 0;
int lenth = 0;
byte[] bytes = new byte[512];
while ((lenth = inputStream.read(bytes)) != -1) {
count += lenth;
fileOutputStream.write(bytes, 0, lenth);
fileOutputStream.flush();
}
fileOutputStream.close();
inputStream.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
一定不要忘记读写权限
利用API绘制图片
下载完成后可以用Android自带的API去做转换
File file = new File(filepath);
parcelFileDescriptor = ParcelFileDescriptor.open(file,ParcelFileDescriptor.MODE_READ_ONLY);
pdfRenderer = new PdfRenderer(parcelFileDescriptor);
PdfRenderer.Page page = pdfRenderer.openPage(0);
Bitmap bitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888);
page.render(bitmap,null,null,PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
MediaStore.Images.Media.insertImage(AppUtils.getApplication().getContentResolver(), bitmap, "发票"+System.currentTimeMillis(), "暂无");
这个是单独保存了第一页 如果想保存多页可以循环去做一下
//多页数PDF
int pageCount = pdfRenderer.getPageCount();
for (int i = 0; i < pageCount; i++) {
PdfRenderer.Page page = pdfRenderer.openPage(i);
Bitmap bitmap = Bitmap.createBitmap(page.getWidth(), page.getHeight(), Bitmap.Config.ARGB_8888);
page.render(bitmap,null,null,PdfRenderer.Page.RENDER_MODE_FOR_PRINT);
MediaStore.Images.Media.insertImage(AppUtils.getApplication().getContentResolver(), bitmap, "发票"+System.currentTimeMillis(), "暂无");
}
最后一定不要忘记内存的清除 (内存泄漏问题)
if (parcelFileDescriptor!=null){
parcelFileDescriptor.close();
parcelFileDescriptor = null;
}
if (pdfRenderer!=null){
pdfRenderer.close();
pdfRenderer = null;
}
然后删除掉下载的文件 就可以了
file.delete();