Android根据界面View生成PDF,并在本地实现预览

PdfDocument类

Android API19中提供了PdfDocument类,实现了根据Android页面生成PDF文档。
API21中提供了PdfRenderer类,实现了渲染PDF文档。

实现页面生成PDF

首先新建PdfDocument对象。

PdfDocument document = new PdfDocument();

新建一个PageInfo对象,参数分别是,宽、高和页数。

这里view的getWidth()方法是获取控件的高度,使用getMeasuredHeight()方法是获取可视范围内的高度。

PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(scrollView.getWidth(), scrollView.getHeight(), 1).create();

同根document对象,新建第一页对象。

PdfDocument.Page page = document.startPage(pageInfo);

用View的draw()方法,page对象提供画笔绘制View。

scrollView.draw(page.getCanvas());

调用finishPage()方法表示绘制结束。

document.finishPage(page);

最后,将document对象输出为File即可。

document.writeTo(new FileOutputStream(file));

最后要将document关闭以免内存泄漏。

document.close();

这里有一个重点,在Android7.0及以下版本(版本节点可能上下有所浮动,测试不完全),会出现绘制速度慢导致线程阻塞,生成文件过大(中字导致),所以最好将执行方法放到子线程进行

Android PdfViewer进行本地预览

Github地址

集成

implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'

在XML中填充控件

<com.github.barteksc.pdfviewer.PDFView
        android:id="@+id/pdf_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

直接传入文件对象,可以直接加载本地文件

File file = new File(Environment.getExternalStorageDirectory() + "/计价器检定证书.pdf");
pdfView.fromFile(file).load();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容