用android自带的类库,可以将界面直接打印成PDF文件
//创建PDF文档对象
PdfDocument doc = new PdfDocument();
//设置文档大小,页面位置,内容区域
Size ss = ViewUtil.getScreenSize(this);
PdfDocument.PageInfo.Builder builder = new PdfDocument.PageInfo.Builder(ss.w + 20, ss.h + 40, 1);
Rect rect = new Rect(0, 0, ss.w, ss.h);
builder.setContentRect(rect);
//创建配置信息
PdfDocument.PageInfo info = builder.create();
//创建页面对象
PdfDocument.Page page = doc.startPage(info);
//向页面绘制内容
View rootView = ViewUtil.getRootView(this);
rootView.draw(page.getCanvas());
doc.finishPage(page);
//将PDF文档写入到存储卡Documents公共目录下面
String fileName = "/" + DateUtil.formatDate(new Date(), "yyyy-MM-dd-hhmmss") + ".pdf";
String path = FileUtil.getAndroidPublicDocumentDirectory() + fileName;
doc.writeTo(new FileOutputStream(path));
//关闭文档对象,结束
doc.close();
使用过程中有几点要注意: 1. ScrollView只会打印可见区域 2. ViewGroup会根据总大小打印,即使看不见也会打印 3. 控件必须绘制完成才能打印,否则会打印成空白 4. 如果在onCreate中直接打印,需要延时执行,等待界面加载完成