Android生成PDF文件
本文主要是操作如何将选取的图片生成一个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文件相关推荐
- Android生成pdf文件之PdfDocument及踩过的坑
有时候项目中可能会遇到这样的需求,如何将android中界面显示的内容生成pdf,这里讲述的是使用android原生的PdfDocument,并没有使用框架,其一是使用起来非常的简单,但是也会也到一些 ...
- android 生成pdf文件
由于项目需要将获取的数据文件导出为pdf文件格式,以前也没用过,毫无头绪,只能网上参考意见,找来找去,根据自己的测试,总算基本实现了文件的导出. 主要还是用到iText来生成的.我用的是itext-5 ...
- android pdfjet_GitHub - lnj721/PdfBuilder: Android端使用图片生成PDF文件
PdfBuilder Android端使用图片生成PDF文件 一.应用场景 从本地选择图片生成pdf文件,由于Android本身并没有对pdf的支持,这里选择使用一个第三方的库来达成需求. 二.库的选 ...
- Android环境下生成PDF文件
一.背景 公司需要一个从本地选择图片生成pdf文件并上传的功能,由于Android本身并没有对pdf的支持,这里选择使用一个第三方的库来达成需求. 二.库的选择 2.1 当前主流的库 在众多Java语 ...
- android 原生 bitmap 生成pdf文件
写这篇文章,是因为我编写这块功能时,公司要求能用android原生代码就不要用第三方,所以,我找了好久都没找到谁在用原生代码生成pdf文件,尤其是把bitmap写入pdf中,所以,在这里,我把原生 生 ...
- Android 使用PdfDocument生成PDF文件及遇到的问题
一.PdfDocument使用 PdfDocument是Android原生的生成pdf文件的类,这个类的使用可参考: https://developer.android.google.cn/refer ...
- Android使用iText7生成PDF文件
一:添加依赖 implementation 'com.itextpdf:itext7-core:7.1.13' 二:清单文件AndroidManifest.xml 添加权限 <uses-perm ...
- 前端生成PDF 文件教程+在线demo案例
个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 PDF 简介 PDF 全称Portable Document Format (PDF)(便携文档格式),该格式的显示与操作系统.分辨 ...
- python使用fpdf生成pdf文件章节(chapter),包含:页眉、页脚、章节主题、数据排版等;
python使用fpdf生成pdf文件章节(chapter),包含:页眉.页脚.章节主题.数据排版等: #仿真数据 The year 1866 was marked by a bizarre deve ...
- python使用fpdf生成pdf文件:配置多种语言字体写入多种文字
python使用fpdf生成pdf文件:配置多种语言字体写入多种文字 目录
最新文章
- Robot on the Board 1 思维,模拟
- hp服务器330g6怎么安装系统,Hp DL380 g6 安装WIN2003的图文方法
- mysql 数据趋势,2019年8月全球数据库流行度排行--oracle、mysql增长趋势明显
- P5074-Eat the Trees【插头dp】
- Hadoop随笔(一)
- python源码包安装_源码包安装python2.7.6和ipython1.2.1
- mysql操作库命令_MYSQL数据库------操作命令笔记
- iPhone质量成迷?被吴彦祖一箭射穿,却还能开机
- python中全部注释_python中的所有对象(学习注释1),Python,一切,皆,笔记
- 本博客体系系列篇(一)
- c matlab 引擎调用,将C/C++回调传递给matlab引擎
- Win10 通过注册表修改默认应用
- P,NP,NPC,NP-HARD 图片基于P!=NP
- 漏洞解决方案-敏感信息脱敏显示
- FIX协议教程1-什么是FIX会话和管理消息
- git删除远程的commit
- 获取当前日期只保留年月日
- 6.2 漫反射-半兰伯特
- Joshua Loth Liebman
- JAVA/C语言在线刷题-应声虫
热门文章
- 【每日一题】一起冲击蓝桥杯吧——Day5【蓝桥真题一起练】
- Openssl(版本1.1.1)源码中的RSA加解密算法实现分析
- git lfs mac 安装_GIT LFS 安装及使用
- Windows提权基本原理
- Cox与KM生存分析及结果解读 不同的生存分析方法 单因素和多因素生存分析的比较km cox回归分析差异 生存分析结果详解 结果解读 参数详细解释 全因死亡率
- 【目标检测】39、一文看懂计算机视觉中的数据增强
- pnp mysql_NPN和PNP三极管的区别
- 解决U盘复制拷贝文件过大不能超过4G的方法
- HTML5视频方案:支持iPad Safari、Firefox、Chrome、IE9876
- IDEA web.xml版本过低怎么生成新的