项目需求中需要把webview的网页内容导出为图片和PDF,方法如下
导出为PDF
注意: 该方法只能在API 19+可以使用
代码如下:
public void printPDF() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// Get a PrintManager instance
PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
// Get a print adapter instance
PrintDocumentAdapter printAdapter = webView.createPrintDocumentAdapter();
// Create a print job with name and adapter instance
String jobName = getString(R.string.app_name) + " Document";
printManager.print(jobName, printAdapter,
new PrintAttributes.Builder().build());
} else {
Toast.makeText(getApplicationContext(), "当前系统不支持该功能", Toast.LENGTH_SHORT).show();
}
}
导出为图片
代码如下:
需要权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
/**
* 保存图片
*
* @param view
*/
public void saveImage(View view) {
Picture picture = webView.capturePicture();
Bitmap b = Bitmap.createBitmap(
picture.getWidth(), picture.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
picture.draw(c);
File file = new File("/sdcard/" + "page.jpg");
if(file.exists()){
file.delete();
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file.getAbsoluteFile());
if (fos != null) {
b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.close();
Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "保存失败", Toast.LENGTH_SHORT).show();
}
}
我的github: https://github.com/a1018875550,欢迎follow;