Skip to content

使用方法

安卓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>