Android实现pdf在线预览或本地预览的方法

yizhihongxing

方案说明:
Android实现pdf在线预览或本地预览的方法一般有两种方案:

  1. 使用第三方库方式,如mupdf、vudroid等;
  2. 使用WebView加载pdf预览。

下面分别列出这两种方案的详细实现。

第一种方案:使用第三方库方式
Step 1:导入库文件
下载对应的pdf库文件,以mupdf为例,将库文件导入到工程目录中。

Step 2:添加依赖
在工程目录中的gradle文件中添加对应的依赖。

compile 'com.artifex.mupdf:android-ndk:1.9a'
compile 'com.artifex.mupdf:android:1.9a'

Step 3:实现预览
实现pdf在线预览或本地预览需要进行以下操作:

  1. 获取pdf文件的路径
  2. 将pdf文件解析成bitmap格式
  3. 使用java或者NDK将pdf文件解析成bitmap格式
  4. 将bitmap绘制到Canvas中
  5. 在View中显示Canvas
/**
 * 将pdf文件解析成bitmap格式
 * @param path 文件路径
 * @param pageNum 页面数
 * @return P对应页数的bitmap
 */
public static Bitmap getPDFBitmap(String path,int pageNum)
{
    Bitmap bitmap=null;
    try {
        //打开文件
        RandomAccessFile raf = new RandomAccessFile(path, "r");
        FileChannel channel = raf.getChannel();
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
        //打开文档-对象方式
        MuPDFCore pdfCore = new MuPDFCore(buf);
        //获取总页数
        int pageCount = pdfCore.countPages();
        //获取对应的page
        MuPDFPage page = pdfCore.loadPage(pageNum);
        //解析page成bitmap
        bitmap=page.toBitmap();
    }catch (Exception e)
    {
        e.printStackTrace();
    }
    return bitmap;
}

第二种方案:使用WebView加载pdf预览
Step 1:添加支持库
在gradle文件中添加支持库。

compile 'com.github.barteksc:android-pdf-viewer:2.8.2'

Step 2:自定义View
自定义一个继承WebView的pdfView控件。

public class PdfView extends WebView {

    public PdfView(Context context) {
        super(context);
    }

    public PdfView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public PdfView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public void loadPDF(String path) {
        //设置WebView支持javascript
        getSettings().setJavaScriptEnabled(true);
        //加载pdf
        loadUrl("http://docs.google.com/gview?embedded=true&url=" + path);
    }
}

Step 3:实现预览
在需要预览pdf的Activity中使用自定义的pdfView控件,调用loadPDF方法即可。

public class MainActivity extends AppCompatActivity {

    private PdfView mPdfView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPdfView = findViewById(R.id.pdf_view);

        //加载本地pdf文件
        mPdfView.loadPDF("file:///sdcard/Download/test.pdf");

        //加载网络pdf文件
        //mPdfView.loadPDF("http://xxx/test.pdf");
    }
}

以上就是使用第三方库和WebView加载pdf预览的详细实现步骤。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android实现pdf在线预览或本地预览的方法 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Jira 任务管理系统项目总结讲解

    Jira 任务管理系统项目总结讲解 Jira是一款专业的任务管理系统,目前广泛应用于软件开发企业、大型组织和个人开发者等领域。使用Jira进行任务管理可以帮助我们提高工作效率、优化项目进度管理和质量控制等方面。下面是Jira任务管理系统的完整攻略,包含以下内容: 1. 注册Jira账号 访问Jira官网(https://www.atlassian.com/s…

    GitHub 2023年5月16日
    00
  • VScode中集成Git命令详解

    VScode中集成Git命令详解 为什么要集成Git命令? Git是开源代码管理工具,为开发者提供了强大的版本控制工具,可以在多人协作开发、开发过程中做出版本回退、分支切换等操作,是现代软件开发不可或缺的工具。而VScode是多人开发中最常用的代码编辑器,在VScode中集成Git命令,可以方便的进行版本管理,达到高效开发工作的目的。 如何集成Git命令? …

    GitHub 2023年5月16日
    00
  • goland 搭建 gin 框架的步骤详解

    下面是 “goland 搭建 gin 框架的步骤详解”的完整攻略。 步骤一:安装 Go 和 Goland 安装 Go 和 Goland 可以参考官方文档: Go 安装指南 Goland 下载链接 步骤二:创建一个空项目 在 Goland 中创建一个新的项目,选择 “Create New Project”,然后选择 “Go Modules”,再输入项目名称。 …

    GitHub 2023年5月16日
    00
  • android studio 新手入门教程(三)Github( ignore忽略规则)的使用教程图解

    Android Studio 新手入门教程(三)Github( ignore 忽略规则)的使用教程图解 在使用 Git 版本控制工具时,通常需要对某些文件或文件夹进行忽略,以便不被 Git 跟踪。这就是 ignore 忽略规则的作用。本教程将详细讲解 ignore 忽略规则的使用方法。 1. 常用的 ignore 规则 以下是常用的 ignore 规则: 忽…

    GitHub 2023年5月16日
    00
  • 从零开始构建docker基础镜像的方法

    下面我会分享一下从零开始构建Docker基础镜像的方法,过程中我会包含两条示例说明。 准备工作 在开始构建Docker基础镜像前,需要先准备好以下环境: 安装Docker。 创建一个文件夹,在其中编写基础镜像的Dockerfile文件。 构建Docker基础镜像 我们可以按照以下的步骤来构建Docker基础镜像: 编写Dockerfile文件 在创建的文件夹…

    GitHub 2023年5月16日
    00
  • 详解基于vue-cli3快速发布一个fullpage组件

    让我来为您详细讲解“详解基于vue-cli3快速发布一个fullpage组件”的完整攻略。本攻略主要分为以下几个部分: 环境准备 项目创建 fullpage组件编写 项目打包与发布 下面我将通过两个示例,详细讲解完整的攻略过程。 环境准备 首先,您需要在本地安装node.js和vue-cli脚手架工具。具体可以参考node.js官网和vue-cli官网进行下…

    GitHub 2023年5月16日
    00
  • Go项目配置管理神器之viper的介绍与使用详解

    Go项目配置管理神器之viper的介绍与使用详解 介绍 Viper是一个Go语言的配置管理库,它可以帮助我们轻松管理应用程序的配置,包括从各种源加载配置信息,例如环境变量、命令行标志、配置文件和远程配置储存库。 使用Viper可以轻松地处理各种不同的配置需求,例如: 应用程序所需的默认配置值 各种环境中的配置(开发、测试、生产等) 从外部源(例如etcd、z…

    GitHub 2023年5月16日
    00
  • 详解Spring Cloud Config采用Git存储时两种常用的配置策略

    下面开始详细讲解”详解Spring Cloud Config采用Git存储时两种常用的配置策略”。 什么是Spring Cloud Config Spring Cloud Config 是一个分布式系统中的外部配置管理工具,它支持客户端和服务器端的各种对象(例如称为“资源”的文本文件、Java属性文件或XML文件)的外部化存储,可以实现应用程序的配置和部署的…

    GitHub 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部