Android显示PDF文件之iText
16lz
2021-01-23
Android显示PDF文件
最近由于项目需要,大致了解了一下关于如何在Android端显示PDF文件的内容,因此在这里进行一下小小的总结,方便今后开发。我目前了解到并成功实现的有三种开源框架分别是:Android PdfViewer、MUpdf以及iText,
- Android PdfViewer
-MUpdf
- iText
其中Android PdfViewer、MUpdf是显示PDF文件中所有文件,而iText则主要是方便用于解析PDF文件中的文本信息,这里主要介绍的是解析与写入PDF文本信息第三方开源框架iText的使用方法:
jar包及源码在文末:
直接将jar包拷入工程目录即可
添加完成后就可以直接使用了,下面直接给代码。
/** * 读取Pdf文件的内容 * @param path :文件地址 */ public String readPdfContent(String path){ String content = ""; File file = new File(path); if (file.exists()){ try { PdfReader pr = new PdfReader(path); int page = pr.getNumberOfPages(); for(int i = 1 ;i1;i++){ //遍历页码,读取Pdf文件内容 content += PdfTextExtractor.getTextFromPage(pr, i); } } catch (IOException e) { e.printStackTrace(); } }else { Toast.makeText(MainActivity.this,"文件不存在!",Toast.LENGTH_SHORT).show(); } return content; }
/** * 写入PDF内容 */ public void writePdfContent(final String path, final String content){ //因为是耗时操作所以要在子线程中进行 new Thread(){ @Override public void run() { super.run(); Document doc = new Document();//创建一个document对象 FileOutputStream fos; try { fos = new FileOutputStream(new File(path)); //pdf_address为Pdf文件保存到sd卡的路径 PdfWriter.getInstance(doc, fos); doc.open(); doc.setPageCount(1); doc.add(new Paragraph(content, setChineseFont())); //result为保存的字符串 ,setChineseFont()为pdf字体 // 一定要记得关闭document对象 doc.close(); fos.flush(); fos.close(); handler.sendEmptyMessage(123);//操作完毕后进行提醒 } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }.start(); }
/** * 设置PDF字体(较为耗时) */ public Font setChineseFont() { BaseFont bf = null; Font fontChinese = null; try { // STSong-Light : Adobe的字体 // UniGB-UCS2-H : pdf 字体 bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); fontChinese = new Font(bf, 12, Font.NORMAL); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return fontChinese; }
记得添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
如果系统是Android6.0版本以上的话不要忘了获取动态权限,附带获取动态权限代码:
参考文章:http://blog.csdn.net/xuwenneng/article/details/52995392
这里是我自己的源码下载地址:
http://download.csdn.net/detail/buddy_ling/9913920
更多相关文章
- Android中解析doc、docx、xls、xlsx格式文件
- Android中除了利用VideoView、Mediaplayer播放视频文件外,还可以
- Android 布局文件属性讲解
- Android - AutoCompleteTextView (输入框动态匹配内容)
- (Android)JavaSocket编程,文件上传到服务器,客户端Android,服务器端J2
- 读取local.properties文件
- 开始Android,Android studio 中部分文件目录的含义与作用
- Android的编译时遇到 gcc: error trying to exec 'cc1plus': exe