AndroID 本地预览Excel,Word,PPT,pdf
解决AndroID asposed转Excel乱码问题
近期获得一个需求, 要求做一个类似WPS的功能, 不过只需要预览不需要编辑
AndroID本身没有提供预览Office的组件, 百度后发现腾讯TBS可以做到这一点,试了下,效果不尽人意;
附腾讯TBS链接 : https://x5.tencent.com/tbs/index.HTML我采用的方案是首先通过aspose将excel,word,ppt转为pdf, 然后用pdfVIEwer打开;
aspose链接 : https://www.aspose.com/
pdfVIEwer链接 : https://github.com/barteksc/AndroIDpdfVIEwer
需要引入cells , slIDes ,words 三个jar包, 分别对应 Excel , PPT , Word ;
jar包连带源码都下最后附上链接, jar包也可以直接用aspose官网下载;
运行效果实例
部分代码实例 :
选择文件【调用系统的文件管理】
/** * 选择文件【调用系统的文件管理】 */private fun choosefile() { startActivityForResult(Intent().apply { action = Intent.ACTION_GET_CONTENT type = "*/*" addcategory(Intent.category_OPENABLE) }, REQUEST_CHOOSE_file)}
onActivityResult
// 选择文件返回 overrIDe fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == RESulT_OK) { if (requestCode == REQUEST_CHOOSE_file) { data?.let { val uri = it.data val path = fileChooseUtil.getInstance(this).getChoosefileResultPath(uri) openfile(path) } } } }
openfile
private fun openfile(path: String) { loading.visibility = VIEw.VISIBLE GlobalScope.launch { val realPath = getRealPath(path) runOnUiThread { loading.visibility = VIEw.INVISIBLE if (TextUtils.isEmpty(realPath)) { ToastUtils.showShort("格式不支持") return@runOnUiThread } pdfVIEw.fromfile(file(realPath)) .pages(0, 2, 1, 3, 3, 3) // all pages are displayed by default .enableSwipe(true) // allows to block changing pages using swipe .swipeHorizontal(false) .enableDoubletap(true) .defaultPage(0) .onError { ToastUtils.showLong("onError: ${it.message} ") } .onTap { false } .enableAnnotationRendering(false) // render annotations (such as comments, colors or forms) .password(null) .scrollHandle(null) .enableAntialiasing(true) // improve rendering a little bit on low-res screens // spacing between pages in dp. To define spacing color, set vIEw background .spacing(0) .autoSpacing(false) // add dynamic spacing to fit each page on its own on the screen .linkHandler {} .pageFitPolicy(FitPolicy.WIDTH) // mode to fit pages in the vIEw .fitEachPage(false) // fit each page to the vIEw, else smaller pages are scaled relative to largest page. .pageSnap(false) // snap pages to screen boundarIEs .pageFling(false) // make a fling change only a single page like VIEwPager .nightmode(false) // toggle night mode .load() } }}
getRealPath
/** * 获取pdf路径 */private fun getRealPath(path: String): String { // 首先需要判断 原始类型是否为pdf val type = getfileType(path) val filename = getfilename(path) // 如果是pdf 直接返回 if (type == "pdf") { return path } val realPath = tempDir + file.separator + filename + type + ".pdf" // 如果已存在 直接返回 if (file(realPath).exists()) { return realPath } // Word if (type == "doc" || type == "docx") { try { val document = document(path) document.save(realPath, SaveFormat.pdf) return realPath } catch (e: Exception) { e.printstacktrace() } // Excel } else if (type == "xlsx" || type == "xls") { try { AsposedUtils.excel2pdf(path, realPath) return realPath } catch (e: Exception) { e.printstacktrace() } // PPT } else if (type == "ppt" || type == "pptx") { try { AsposedUtils.ppt2pdf(path, realPath) return realPath } catch (e: Exception) { e.printstacktrace() } } return ""}
解决aspose excel转换后中文乱码问题
复制中文字体[随便选一个, 我选的微软雅黑]到assets中将assets中的字体拷贝到储存中转换Excel时, 将字体传给WorkbooktempDir 下有微软雅黑字体fun excel2pdf(sourcefilePath: String, desfilePath: String) { try { // 中文乱码处理 主要是设置微软雅黑字体 val configs = IndivIDualFontConfigs() configs.setFontFolder(tempDir, true) val loadOptions = LoadOptions() loadOptions.FontConfigs = configs // loadOptions.languageCode = CountryCode.CHINA val pdfSaveOptions = pdfSaveOptions() pdfSaveOptions.onePagePerSheet = true // 原始excel路径 val wb = Workbook(sourcefilePath, loadOptions) val fileOS = fileOutputStream(desfilePath) // 数组为几就展示几页 val showSheets = intArrayOf(wb.worksheets.count) // 隐藏workbook中不需要的sheet页。 // printSheetPage(wb, showSheets) wb.save(fileOS, pdfSaveOptions) fileOS.flush() fileOS.close() println("完毕") } catch (e: Exception) { e.printstacktrace() }}
总结 以上是内存溢出为你收集整理的Android 本地预览Excel,Word,PPT,PDF [ 解决Android asposed转Excel乱码问题 ]全部内容,希望文章能够帮你解决Android 本地预览Excel,Word,PPT,PDF [ 解决Android asposed转Excel乱码问题 ]所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)