Android显示PDF文件之iText

Android显示PDF文件

最近由于项目需要,大致了解了一下关于如何在Android端显示PDF文件的内容,因此在这里进行一下小小的总结,方便今后开发。我目前了解到并成功实现的有三种开源框架分别是:Android PdfViewer、MUpdf以及iText,

- Android PdfViewer

-MUpdf

- iText


其中Android PdfViewer、MUpdf是显示PDF文件中所有文件,而iText则主要是方便用于解析PDF文件中的文本信息,这里主要介绍的是解析与写入PDF文本信息第三方开源框架iText的使用方法:

jar包及源码在文末:

直接将jar包拷入工程目录即可
Android显示PDF文件之iText_第1张图片

添加完成后就可以直接使用了,下面直接给代码。

/**
     * 读取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)