更新记录

0.3.7(2026-06-10)

  • feat: APP端组件增加加载失败状态提示
  • docs: 新增PDF转图片API文档、自定义基座说明

0.3.6(2026-06-09)

  • feat: 新增 PDF 转图片 API:getPDFInforenderPagerenderPages
  • feat: uniapp app 使用缓存

0.3.5(2026-06-04)

  • feat: uniapp app 使用缓存
查看更多

平台兼容性

uni-app(4.76)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- 5.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(4.76)

Chrome Safari Android iOS 鸿蒙 微信小程序
- - 5.0 -

lime-pdf PDF预览组件

UTS原生PDF预览器,支持本地和网络PDF文件预览,提供页面跳转、滑动切换等功能,兼容web、安卓、iOS、鸿蒙Next。组件使用原生能力渲染PDF文件,性能优异,支持密码保护的PDF文件,并提供丰富的事件回调。

插件依赖:lime-shared

安装方法

  1. 在uni-app插件市场中搜索并导入lime-pdf
  2. 导入后可能需要重新编译项目
  3. 需要在自定义基座中使用
  4. 安卓本地运行还需配置 gradle
  5. 在页面中使用l-pdf组件或调用openPDF API

自定义基座说明

  • 本插件使用 UTS 原生能力,必须在自定义基座中运行,标准基座无法使用
  • CLI 项目特别注意:请检查根目录 package.json,确保所有 @dcloudio/* 相关包的版本号一致,且与当前 HBuilderX 版本对齐。版本不一致会导致自定义基座编译失败或运行异常 使用说明
  • 组件方式(l-pdf):在uniapp中只能源码运行,不支持试用;在uniappx支持普通授权和试用
  • API方式(openPDF):支持uniapp和uniappx的安卓、iOS平台,暂不支持鸿蒙、WEB平台

代码演示

方式一:组件方式(l-pdf)

通过l-pdf组件在页面中嵌入PDF预览。在uniapp中只能源码运行,uniappx中支持普通授权和试用,uniappx鸿蒙需要真机

基础使用

通过url可以设置pdf的路径,支持网络或本地。

<l-pdf 
    ref="pdfRef"
    url="/static/shareSDK.pdf"  
    @load="load"
    @fail="fail"
    @pageChanged="pageChanged"
    style="height:500px;width: 100%;">
</l-pdf>
<button @click="onClick">跳转指定页面</button>
// 组合式
const pdfRef = ref<LPdfComponentPublicInstance|null>(null)

const load = (info: UTSJSONObject)=>{
    // INFO 包含 页数,作者,标题,目录等
    console.log('info', info)
}

const fail = (err: UTSJSONObject)=>{
    // 发生错误时
    console.log('err', err)
}

const pageChanged = (info: UTSJSONObject)=> {
    // 切换页面时 
    console.log('pageChanged', info)
}

const onClick = ()=> {
    // 跳转到指定页面
    pdfRef.value?.jumpTo(3)
}

动态渲染

<l-pdf 
    ref="pdfRef"
    @load="load"
    @fail="fail"
    @pageChanged="pageChanged"
    style="height:500px;width: 100%;">
</l-pdf>
<button @click="render">render</button>
import type { RenderOptions } from '@/uni_modules/lime-pdf'
export default {
    data() {
        return {

        }
    },
    methods: {
        load(info: UTSJSONObject) {
            // INFO 包含 页数,作者,标题,目录等
            console.log('info', info)
        },
        fail(err: UTSJSONObject) {
            // 发生错误时
            console.log('err', err)
        },
        pageChanged(info: UTSJSONObject) {
            // 切换页面时
            console.log('pageChanged', info)
        },
        render() {
            // 调用渲染函数
            (this.$refs['pdfRef'] as LPdfComponentPublicInstance | null)?.render?.({
                url: "/static/shareSDK.pdf",
                page: 0,
                swipeHorizontal: false,
                password: 'password'
            } as RenderOptions) 
        }
    }
}

方式二:API方式(openPDF)

通过openPDF API在新页面打开PDF,带有标题栏和关闭按钮。支持uniapp和uniappx的安卓和iOS平台。

openPDF 打开PDF

<button @click="openPDF">打开PDF</button>
import { openPDF, type OpenPDFOptions } from '@/uni_modules/lime-pdf'

const openPDF = () => {
    openPDF({
        url: '/static/shareSDK.pdf',
        page: 0,
        swipeHorizontal: false,
        password: '',
        success: (res) => {
            console.log('加载成功', res)
        },
        fail: (err) => {
            console.log('加载失败', err)
        },
        complete: () => {
            console.log('完成')
        }
    } as OpenPDFOptions)
}

PDF 控制函数

通过导入以下函数控制已打开的PDF:

import { jumpToPage, nextPage, prevPage, renderPDF } from '@/uni_modules/lime-pdf'

jumpToPage(5)      // 跳转到第5页
nextPage()          // 下一页
prevPage()          // 上一页
renderPDF(options)   // 重新渲染PDF

快速预览

导入插件后,可以直接使用以下标签查看演示效果:

<!-- 代码位于 uni_modules/lime-pdf/components/lime-pdf -->
<lime-pdf />

插件标签说明

标签名 说明
l-pdf 组件标签
lime-pdf 演示标签

Vue2使用说明

main.js中添加以下代码:

// vue2项目中使用
import Vue from 'vue'
import VueCompositionAPI from '@vue/composition-api'
Vue.use(VueCompositionAPI)

详细配置请参考官方文档:Vue Composition API

API文档

组件方式 API(l-pdf)

组件 Props 属性

属性名 说明 类型 默认值
url PDF文件地址,支持本地、网络路径 string -
page 当前页面索引(从0开始) number 0
swipeHorizontal 是否允许水平滑动切换页面,false为垂直滑动(仅对uniappx 安卓/ios有效) boolean false
password PDF密码,如果文件有密码保护 string -
scrollView 是否内部使用scrollView滚动(仅对安卓有效) boolean false
backTop 是否显示右下角回到顶部按钮(仅uniapp有效) boolean false
zoomEnable 是否允许pdf手势缩放(仅uniapp有效) boolean true
scrollEnable 是否允许pdf滚动(仅uniapp有效) boolean true
spacing 页间隔(仅uniappx 鸿蒙和安卓有效) number -
renderType 渲染方式,svg,canvas(仅uniapp有效) string canvas

组件 Events 事件

事件名 说明 回调参数
load PDF加载成功时触发 info: {page, pageCount, category, meta}
fail PDF加载失败时触发 err: {errMsg}
pageChanged PDF页面切换时触发 info: {page, pageCount}

组件方法 API

通过组件实例调用方法:

// uniapp
const pdfRef = this.$refs.pdfRef

// uniappx (TypeScript)
const pdfRef = this.$refs["pdfRef"] as LPdfComponentPublicInstance
方法名 说明 参数
jumpTo 跳转到指定页面 page: number
nextPage 下一页 -
prevPage 上一页 -
render 动态渲染PDF文件 options: RenderOptions

API方式 API(openPDF)

openPDF 打开PDF

在新页面打开PDF,带有标题栏和关闭按钮。支持安卓和iOS平台。

import { openPDF } from '@/uni_modules/lime-pdf'

openPDF({
    url: '/static/shareSDK.pdf',
    page: 0,
    swipeHorizontal: false,
    password: '',
    success: (res) => {
        console.log('加载成功', res)
    },
    fail: (err) => {
        console.log('加载失败', err)
    },
    complete: () => {
        console.log('完成')
    }
} as OpenPDFOptions) 

参数说明

参数名 说明 类型 默认值
url PDF文件地址,支持本地、网络路径 string -
page 默认页面索引(从0开始) number 0
swipeHorizontal 是否允许水平滑动切换页面,false为垂直滑动 boolean false
password PDF密码,如果文件有密码保护 string -
scrollView 是否内部使用scrollView滚动(仅对安卓有效) boolean false
backTop 是否显示右下角回到顶部按钮 boolean false
zoomEnable 是否允许pdf手势缩放 boolean true
scrollEnable 是否允许pdf滚动 boolean true
spacing 页间隔 number -
renderType 渲染方式,svg,canvas(仅对安卓有效) string canvas
success 加载成功回调 (res: {page, pageCount}) => void -
fail 加载失败回调 (err: {errMsg}) => void -
complete 完成回调 () => void -

PDF 控制函数

通过导入以下函数控制已打开的PDF:

import { jumpToPage, nextPage, prevPage, renderPDF } from '@/uni_modules/lime-pdf'

jumpToPage(5)      // 跳转到第5页
nextPage()          // 下一页
prevPage()          // 上一页
renderPDF(options)   // 重新渲染PDF
函数名 说明 参数
jumpToPage 跳转到指定页面 page: number
nextPage 下一页 -
prevPage 上一页 -
renderPDF 重新渲染PDF文件 options: OpenPDFOptions

PDF 转图片 API

将 PDF 页面渲染为图片,支持 APP 端原生渲染。可用于自定义 PDF 展示、分页加载等场景。

getPDFInfo 获取PDF信息

获取 PDF 文件的基本信息(页数等)。

import { getPDFInfo } from '@/uni_modules/lime-pdf'

getPDFInfo({
  url: '/static/shareSDK.pdf',
  success: (res) => {
    console.log('PDF页数:', res.pageCount)
  },
  fail: (err) => {
    console.log('获取失败:', err.errMsg)
  }
})
参数名 说明 类型 默认值
url PDF文件地址,支持本地、网络路径 string -
success 成功回调 (res: {pageCount}) => void -
fail 失败回调 (err: {errCode, errMsg}) => void -
complete 完成回调 () => void -

renderPage 渲染单页

将 PDF 指定页面渲染为图片。

import { renderPage } from '@/uni_modules/lime-pdf'

renderPage({
  url: '/static/shareSDK.pdf',
  page: 0,           // 页码,从0开始
  dpi: 150,          // 渲染DPI,默认150
  format: 'jpg',     // 输出格式 'png' | 'jpg',默认 'png'
  quality: 90,       // jpg质量 0-100,默认90
  asBase64: false,  // 是否返回base64 dataurl,默认false返回文件路径
  success: (res) => {
    console.log('图片路径:', res.path)
    console.log('图片尺寸:', res.width, 'x', res.height)
    console.log('页码:', res.page, '/', res.pageCount)
  },
  fail: (err) => {
    console.log('渲染失败:', err.errMsg)
  }
})
参数名 说明 类型 默认值
url PDF文件地址,支持本地、网络路径 string -
page 页码,从0开始 number -
dpi 渲染DPI number 150
format 输出格式 'png' \| 'jpg' string png
quality jpg质量 0-100 number 90
asBase64 是否返回base64 dataurl,默认false返回文件路径 boolean false
success 成功回调 (res: {path, width, height, page, pageCount}) => void -
fail 失败回调 (err: {errCode, errMsg}) => void -
complete 完成回调 () => void -

renderPages 渲染多页

将 PDF 多个页面渲染为图片。

import { renderPages } from '@/uni_modules/lime-pdf'

// 渲染指定页面
renderPages({
  url: '/static/shareSDK.pdf',
  pages: [0, 1, 2],  // 指定页码数组,不传则渲染全部页
  dpi: 150,
  format: 'jpg',
  quality: 90,
  asBase64: false,
  success: (res) => {
    console.log('渲染完成,共', res.images.length, '张图片')
    res.images.forEach((img, index) => {
      console.log(`第${index}张:`, img.path)
    })
  },
  fail: (err) => {
    console.log('渲染失败:', err.errMsg)
  }
})

// 渲染全部页面
renderPages({
  url: '/static/shareSDK.pdf',
  success: (res) => {
    console.log('PDF总页数:', res.pageCount)
  }
})
参数名 说明 类型 默认值
url PDF文件地址,支持本地、网络路径 string -
pages 指定页码数组,不传则渲染全部页 number[] -
dpi 渲染DPI number 150
format 输出格式 'png' \| 'jpg' string png
quality jpg质量 0-100 number 90
asBase64 是否返回base64 dataurl,默认false返回文件路径 boolean false
success 成功回调 (res: {images: [], pageCount}) => void -
fail 失败回调 (err: {errCode, errMsg}) => void -
complete 完成回调 () => void -

PDF 转图片使用示例

import { getPDFInfo, renderPage, renderPages } from '@/uni_modules/lime-pdf'

// 1. 先获取PDF信息
getPDFInfo({
  url: '/static/shareSDK.pdf',
  success: (res) => {
    console.log('PDF共有', res.pageCount, '页')
  }
})

// 2. 渲染封面页作为缩略图
renderPage({
  url: '/static/shareSDK.pdf',
  page: 0,
  dpi: 72,
  asBase64: true,
  success: (res) => {
    // 可用于显示缩略图
    console.log('封面图base64:', res.path)
  }
})

// 3. 批量渲染指定页面
renderPages({
  url: '/static/shareSDK.pdf',
  pages: [0, 1, 2, 3, 4],
  dpi: 150,
  format: 'jpg',
  success: (res) => {
    console.log('前5页渲染完成')
  }
})

使用注意事项

  1. 组件需要在自定义基座中使用,普通编译环境可能无法正常运行
  2. 安卓平台需要额外配置gradle,详见安装方法
  3. 组件高度需要通过style属性设置,否则可能无法正常显示
  4. 对于密码保护的PDF文件,需要提供正确的密码才能正常显示
  5. 页面索引从0开始计算,例如第一页的索引为0

文档链接

📚 组件详细文档请访问以下站点:

支持与赞赏

如果你觉得本插件解决了你的问题,可以考虑支持作者:

支付宝赞助 微信赞助

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: