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中填充控件


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

File file = new File(Environment.getExternalStorageDirectory() + "/计价器检定证书.pdf");
pdfView.fromFile(file).load();

你可能感兴趣的:(Android根据界面View生成PDF,并在本地实现预览)