本文主要是操作如何将选取的图片生成一个PDF文件

/**转换的PDF的质量*/
private final int QualityHigh = 1;
private final int QualityMiddle = 2;
private final int QualitySmall = 3;
private List<LocalImageBean> imageArr=new ArrayList<>;
private String fileName;
private int quality = QualityMiddle;
private String UserBean user;
@OnClick(R.id.btn_generate)
@Override
public void onClick(View v) {super.onClick(v);switch (v.getId()) {case R.id.btn_generate:fileName = etFileName.getText().toString().trim();File[] files = new File(user.getUserFileSubPath() + "/" + FilePath.PDF).listFiles();for (File f : files) {if (f.getName().startsWith(fileName)) {showToast("文件已存在");return;}}generate();break;}
}
/**PDF转换*/private void generate(){Observable.just(imageArr).compose(this.<List<LocalImageBean>>bindUntilEvent(ActivityEvent.DESTROY)).observeOn(Schedulers.computation()).map(new Function<List<LocalImageBean>, PdfDocument>() {@Overridepublic PdfDocument apply(List<LocalImageBean> localImageBeans) throws Exception {// create a new documentPdfDocument document = new PdfDocument();for (int i = 0; i < localImageBeans.size(); i++) {LocalImageBean bean = localImageBeans.get(i);// crate a page descriptionBitmapFactory.Options options = new BitmapFactory.Options();options.inPreferredConfig = Bitmap.Config.RGB_565;float scale;switch (quality) {case QualityMiddle:
//                                            options.inPreferredConfig = Bitmap.Config.ARGB_4444;scale = 0.75f;break;case QualitySmall:
//                                            options.inPreferredConfig = Bitmap.Config.RGB_565;scale = 0.5f;break;default:
//                                            options.inPreferredConfig = Bitmap.Config.ARGB_8888;scale = 1f;break;}int screenW = (int) (Utils.getScreenWidth(getImplContext()) * scale);int screenH = (int) (Utils.getScreenHeight(getImplContext()) * scale);if (bean.getRotating() % 180 != 0) {//当前是否横向int temp = screenW;screenW = screenH;screenH = temp;}PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(screenW,screenH,i).create();// start a pagePdfDocument.Page page = document.startPage(pageInfo);// draw something on the pageWeakReference<Bitmap> wfb = new WeakReference<>(BitmapFactory.decodeFile(bean.getRawPath(), options));Bitmap bitmap = wfb.get();Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);int bitmapW = (int) (bitmap.getWidth() * scale);int bitmapH = (int) (bitmap.getHeight() * scale);Matrix matrix = new Matrix();matrix.postRotate(bean.getRotating());WeakReference<Bitmap> nwfb = new WeakReference<>(Bitmap.createScaledBitmap(bitmap, bitmapW, bitmapH, false));if (bean.getRotating() % 180 != 0) {int temp = bitmapW;bitmapW = bitmapH;bitmapH = temp;}Bitmap newBM = nwfb.get();Rect dst = new Rect(0, 0, bitmapW, bitmapH);page.getCanvas().drawBitmap(newBM, null, dst, paint);bitmap.recycle();wfb.clear();newBM.recycle();nwfb.clear();document.finishPage(page);}// write the document contentOutputStream out = new FileOutputStream(user.getUserFileSubPath() + "/" + FilePath.PDF + "/" + user.getFileName(fileName, "pdf"));document.writeTo(out);out.close();document.close();//close the documentreturn document;}}).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<PdfDocument>() {@Overridepublic void onSubscribe(Disposable d) {showLoading();}@Overridepublic void onNext(PdfDocument pdfDocument) {}@Overridepublic void onError(Throwable e) {hideLoading();LogUtils.e(e);}@Overridepublic void onComplete() {showToast("添加成功");hideLoading();finish();}});}

调用上述代码即可转换成PDF,imageArr是选中的要生成PDF的图片集合,UserBean是用户的实体类

Android生成PDF文件相关推荐

  1. Android生成pdf文件之PdfDocument及踩过的坑

    有时候项目中可能会遇到这样的需求,如何将android中界面显示的内容生成pdf,这里讲述的是使用android原生的PdfDocument,并没有使用框架,其一是使用起来非常的简单,但是也会也到一些 ...

  2. android 生成pdf文件

    由于项目需要将获取的数据文件导出为pdf文件格式,以前也没用过,毫无头绪,只能网上参考意见,找来找去,根据自己的测试,总算基本实现了文件的导出. 主要还是用到iText来生成的.我用的是itext-5 ...

  3. android pdfjet_GitHub - lnj721/PdfBuilder: Android端使用图片生成PDF文件

    PdfBuilder Android端使用图片生成PDF文件 一.应用场景 从本地选择图片生成pdf文件,由于Android本身并没有对pdf的支持,这里选择使用一个第三方的库来达成需求. 二.库的选 ...

  4. Android环境下生成PDF文件

    一.背景 公司需要一个从本地选择图片生成pdf文件并上传的功能,由于Android本身并没有对pdf的支持,这里选择使用一个第三方的库来达成需求. 二.库的选择 2.1 当前主流的库 在众多Java语 ...

  5. android 原生 bitmap 生成pdf文件

    写这篇文章,是因为我编写这块功能时,公司要求能用android原生代码就不要用第三方,所以,我找了好久都没找到谁在用原生代码生成pdf文件,尤其是把bitmap写入pdf中,所以,在这里,我把原生 生 ...

  6. Android 使用PdfDocument生成PDF文件及遇到的问题

    一.PdfDocument使用 PdfDocument是Android原生的生成pdf文件的类,这个类的使用可参考: https://developer.android.google.cn/refer ...

  7. Android使用iText7生成PDF文件

    一:添加依赖 implementation 'com.itextpdf:itext7-core:7.1.13' 二:清单文件AndroidManifest.xml 添加权限 <uses-perm ...

  8. 前端生成PDF 文件教程+在线demo案例

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 PDF 简介 PDF 全称Portable Document Format (PDF)(便携文档格式),该格式的显示与操作系统.分辨 ...

  9. python使用fpdf生成pdf文件章节(chapter),包含:页眉、页脚、章节主题、数据排版等;

    python使用fpdf生成pdf文件章节(chapter),包含:页眉.页脚.章节主题.数据排版等: #仿真数据 The year 1866 was marked by a bizarre deve ...

  10. python使用fpdf生成pdf文件:配置多种语言字体写入多种文字

    python使用fpdf生成pdf文件:配置多种语言字体写入多种文字 目录

最新文章

  1. Robot on the Board 1 思维,模拟
  2. hp服务器330g6怎么安装系统,Hp DL380 g6 安装WIN2003的图文方法
  3. mysql 数据趋势,2019年8月全球数据库流行度排行--oracle、mysql增长趋势明显
  4. P5074-Eat the Trees【插头dp】
  5. Hadoop随笔(一)
  6. python源码包安装_源码包安装python2.7.6和ipython1.2.1
  7. mysql操作库命令_MYSQL数据库------操作命令笔记
  8. iPhone质量成迷?被吴彦祖一箭射穿,却还能开机
  9. python中全部注释_python中的所有对象(学习注释1),Python,一切,皆,笔记
  10. 本博客体系系列篇(一)
  11. c matlab 引擎调用,将C/C++回调传递给matlab引擎
  12. Win10 通过注册表修改默认应用
  13. P,NP,NPC,NP-HARD 图片基于P!=NP
  14. 漏洞解决方案-敏感信息脱敏显示
  15. FIX协议教程1-什么是FIX会话和管理消息
  16. git删除远程的commit
  17. 获取当前日期只保留年月日
  18. 6.2 漫反射-半兰伯特
  19. Joshua Loth Liebman
  20. JAVA/C语言在线刷题-应声虫

热门文章

  1. 【每日一题】一起冲击蓝桥杯吧——Day5【蓝桥真题一起练】
  2. Openssl(版本1.1.1)源码中的RSA加解密算法实现分析
  3. git lfs mac 安装_GIT LFS 安装及使用
  4. Windows提权基本原理
  5. Cox与KM生存分析及结果解读 不同的生存分析方法 单因素和多因素生存分析的比较km cox回归分析差异 生存分析结果详解 结果解读 参数详细解释 全因死亡率
  6. 【目标检测】39、一文看懂计算机视觉中的数据增强
  7. pnp mysql_NPN和PNP三极管的区别
  8. 解决U盘复制拷贝文件过大不能超过4G的方法
  9. HTML5视频方案:支持iPad Safari、Firefox、Chrome、IE9876
  10. IDEA web.xml版本过低怎么生成新的