如何在Android项目中将webview转换为PDF

  介绍

本篇文章给大家分享的是有关如何在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