介绍
本篇文章给大家分享的是有关如何在Android项目中将webview转换为PDF、小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
完整代码如下:
File File =, Environment.getExternalStoragePublicDirectory(时间+ Environment.DIRECTORY_DCIM “/PDFTest.pdf"); File 才能;dexCacheFile;//,才能获取需要打印的webview适配器 PrintDocumentAdapter 才能;printAdapter; PageRange才能[],范围; ParcelFileDescriptor 才能;描述符; ,/* * ,,一个*,@param webView ,,*/private 才能;void  printPDFFile (WebView webView), { ,,,if (android.os.Build.VERSION.SDK_INT 祝辞=,android.os.Build.VERSION_CODES.KITKAT), { ,,,,,/* * ,,,,,,*,android 5.0之后,出于对动态注入字节码安全性德考虑,已经不允许随意指定字节码的保存路径了,需要放在应用自己的包名文件夹下。 ,,,,,*/,,,,,//新的创建DexMaker缓存目录的方式,直接通过上下文获取路径 ,,,,,dexCacheFile =, getDir (“dex",, 0); ,,,,,if (! dexCacheFile.exists ()), { ,,,,,,,dexCacheFile.mkdir (); ,,,,,} ,,,,,try { ,,,,,,,//创建待写入的PDF文件,pdfFilePath为自行指定的PDF文件路径 ,,,,,,,if (file.exists ()), { ,,,,,,,,,file.delete (); ,,,,,,,} ,,,,,,,file.createNewFile (); ,,,,,,,descriptor =, ParcelFileDescriptor.open(文件,,ParcelFileDescriptor.MODE_READ_WRITE); ,,,,,,,//,设置打印参数 ,,,,,,,PrintAttributes attributes =, new PrintAttributes.Builder () ,,,,,,,,,,,.setMediaSize (PrintAttributes.MediaSize.ISO_A4) ,,,,,,,,,,,.setResolution (new PrintAttributes.Resolution (“id",, Context.PRINT_SERVICE,, 300,, 300)) ,,,,,,,,,,,.setColorMode (PrintAttributes.COLOR_MODE_COLOR) ,,,,,,,,,,,.setMinMargins (PrintAttributes.Margins.NO_MARGINS) ,,,,,,,,,,,.build (); ,,,,,,,//打印所有界面 ,,,,,,,ranges =, new PageRange [] {PageRange.ALL_PAGES}; ,,,,,,,printAdapter =, webView.createPrintDocumentAdapter (); ,,,,,,,//,开始打印 ,,,,,,,printAdapter.onStart (); ,,,,,,,printAdapter.onLayout(属性,属性,new CancellationSignal (),, getLayoutResultCallback (new InvocationHandler (), { ,,,,,,,,@Override ,,,,,,,,,public Object 调用(Object 代理,Method 方法,对象[],args), throws Throwable { ,,,,,,,,,,,if (method.getName () .equals (“onLayoutFinished")), { ,,,,,,,,,,,,,//,监听到内部调用了onLayoutFinished()方法,即打印成功 ,,,,,,,,,,,,,onLayoutSuccess (); ,,,,,,,,,,,},{else ,,,,,,,,,,,,,//,监听到打印失败或者取消了打印 ,,,,,,,,,,,} ,,,,,,,,,,,return 零; ,,,,,,,,,} ,,,,,,,},,dexCacheFile.getAbsoluteFile ()), new 包()); ,,,,,},catch (IOException e), { ,,,,,,,e.printStackTrace (); ,,,,,} ,,,} ,,} ,/* * ,,*,@throws IOException ,,*/private 才能;void  onLayoutSuccess (), throws IOException { ,,,if (Build.VERSION.SDK_INT 祝辞=,Build.VERSION_CODES.KITKAT), { null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何在Android项目中将webview转换为PDF