Appearance
使用方法
安卓PDF生成UTS原生插件是一款支持复杂格式的UTS插件,插件支持插入图片、支持插入段落、插入图文混排、插入表格等可以满足大部分需求场景,插件支持uniapp和uniapp x
插件使用注意事项
- 插件中包含了ttf文件,文件比较大,如果您生成的PDF不需要中文的话可以删除掉ttf文件
- 如果你需要自定义ttf文件的话可以删除掉插件中包含的ttf文件,ttf文件的具体引用可以参考生成pdf的接口
- 如果您在使用插件的过程中有任何问题,可以联系作者,作者将全力协助您只用插件
- 本文档同时提供了uniapp的用法示例和uniappx的用法示例,插件市场导入的示例项目仅为uniapp的用法示例,如果您需要uniappx的示例项目可以联系作者提供
- 关于uniappx用到的pdf.uts文件,可以将uniapp中示例项目导出后把pdf.js文件名改成pdf.uts即可
联系作者

关注微信公众号可联系作者
插件地址
https://ext.dcloud.net.cn/plugin?id=26116
权限
- android.permission.WRITE_EXTERNAL_STORAGE
- android.permission.READ_EXTERNAL_STORAGE
- android.permission.MANAGE_EXTERNAL_STORAGE
用法
在需要使用插件的页面加载以下代码
js
import * as module from "@/uni_modules/leven-uts-makePdf"js
import * as module from "@/uni_modules/leven-uts-makePdf"页面内容
vue
<template>
<view>
<button type="primary" @click="requestPermissions">申请插件所需权限</button>
<button type="primary" @click="checkAllFilesPermission">检查是否有所有文件访问权限</button>
<button type="primary" @click="toAllFilesPermissionPage">跳转到所有文件访问权限页面</button>
<button type="primary" @click="savePdf">保存PDF</button>
</view>
</template>
<script>
//pdf标题
import {
pdfTitle,
pdfSubTitle,
userInfo,
newLine,
matchResult,
remark,
sign
} from "@/utils/pdf.js"
// const module = uni.requireNativePlugin("leven-makePdf-pdfModule");
import * as module from "@/uni_modules/leven-uts-makePdf"
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {
},
methods: {
//生成PDF
savePdf() {
//pdf数据内容
let list = [];
//标题
list.push(pdfTitle)
//报告名称
list.push(pdfSubTitle)
//个人信息
list.push(userInfo)
//换行
list.push(newLine);
//匹配结果
list.push(matchResult);
//换行
list.push(newLine);
//备注
list.push(remark);
//换行
list.push(newLine);
//签名
list.push(sign);
module.savePdf({
//接口参数
params: {
//纸张大小,可选值:A0~A10,B0~B10
pageSize: "A4",
//文件保存路径,不传或为空则插件默认保存到项目目录中
// path: "/storage/emulated/0/Download/DingTalk/诊断报告_1.pdf",
//中文字体文件,需放置到assets目录下,可以不传该参数,但是如果遇到中文不会显示
ttf: "STKAITI.TTF",
//保存内容
list: list
},
//成功返回函数
success: (res) => {
console.log(res);
},
//失败返回函数
fail: (res) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
complete: (res) => {
console.log(res)
}
})
},
requestPermissions() {
module.requestPermissions({
//接口参数
params: {
//申请权限列表
permissions: [
'android.permission.WRITE_EXTERNAL_STORAGE',
'android.permission.READ_EXTERNAL_STORAGE'
]
},
//成功返回函数
success: (res) => {
console.log(res);
},
//失败返回函数
fail: (res) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
complete: (res) => {
console.log(res)
}
})
},
//检查所有文件访问权限
checkAllFilesPermission() {
module.checkAllFilesPermission({
//成功返回函数
success: (res) => {
console.log(res);
},
//失败返回函数
fail: (res) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
complete: (res) => {
console.log(res)
}
})
},
//跳转到所有文件访问权限页面
toAllFilesPermissionPage() {
module.toAllFilesPermissionPage({
//成功返回函数
success: (res) => {
console.log(res);
},
//失败返回函数
fail: (res) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
complete: (res) => {
console.log(res)
}
})
}
}
}
</script>
<style>
</style>vue
<template>
<!-- #ifdef APP -->
<scroll-view style="flex:1">
<!-- #endif -->
<button type="primary" @click="requestPermissions">申请插件所需权限</button>
<button type="primary" @click="checkAllFilesPermission">检查是否有所有文件访问权限</button>
<button type="primary" @click="toAllFilesPermissionPage">跳转到所有文件访问权限页面</button>
<button type="primary" @click="savePdf">保存PDF</button>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
</template>
<script setup>
//pdf标题
import {
pdfTitle,
pdfSubTitle,
userInfo,
newLine,
matchResult,
remark,
sign
} from "@/utils/pdf.uts"
import * as module from "@/uni_modules/leven-uts-makePdf"
import { LevenResult } from "@/uni_modules/leven-uts-makePdf";
//生成PDF
function savePdf() {
//pdf数据内容
let list : UTSJSONObject[] = [];
//标题
list.push(pdfTitle)
//报告名称
list.push(pdfSubTitle)
//个人信息
list.push(userInfo)
//换行
list.push(newLine);
//匹配结果
list.push(matchResult);
//换行
list.push(newLine);
//备注
list.push(remark);
//换行
list.push(newLine);
//签名
list.push(sign);
module.savePdf({
//接口参数
params: {
//纸张大小,可选值:A0~A10,B0~B10
pageSize: "A4",
//文件保存路径,不传或为空则插件默认保存到项目目录中
// path: "/storage/emulated/0/Download/DingTalk/诊断报告_1.pdf",
//中文字体文件,需放置到assets目录下,可以不传该参数,但是如果遇到中文不会显示
ttf: "STKAITI.TTF",
//保存内容
list: list
},
//成功返回函数
success: (res : LevenResult) => {
console.log(res);
},
//失败返回函数
fail: (res : LevenResult) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
complete: (res : LevenResult) => {
console.log(res)
}
})
}
//跳转到所有文件访问权限页面
function toAllFilesPermissionPage() {
module.toAllFilesPermissionPage({
//成功返回函数
success: (res : LevenResult) => {
console.log(res);
},
//失败返回函数
fail: (res : LevenResult) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
complete: (res : LevenResult) => {
console.log(res)
}
})
}
//检查所有文件访问权限
function checkAllFilesPermission() {
module.checkAllFilesPermission({
//成功返回函数
success: (res : LevenResult) => {
console.log(res);
},
//失败返回函数
fail: (res : LevenResult) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
complete: (res : LevenResult) => {
console.log(res)
}
})
}
//申请插件所需权限
function requestPermissions() {
module.requestPermissions({
//接口参数
params: {
//申请权限列表
permissions: [
'android.permission.WRITE_EXTERNAL_STORAGE',
'android.permission.READ_EXTERNAL_STORAGE'
]
},
//成功返回函数
success: (res : LevenResult) => {
console.log(res);
},
//失败返回函数
fail: (res : LevenResult) => {
console.log(res)
},
//接口调用完成返回函数,不管成功还是失败都会返回
complete: (res : LevenResult) => {
console.log(res)
}
})
}
</script>
<style>
</style>