Android pdf转换bitmap保存到本地

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();
  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android诚

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值