跳到内容
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 插件商店
  • 福昕首页
  • 开发中心
  • SDK文档资料
  • 插件商店
申请试用
  • 企业自动化
    • Compressor
  • 福昕CloudAPI
  • 福昕PDF SDK 软件开发工具包
    • 福昕PDF SDK(ActiveX)
    • 福昕PDF SDK(桌面/服务器)
    • 福昕PDF SDK(Plug-in)
    • 福昕 PDF SDK(安卓)
    • 福昕PDF SDK(iOS)
    • 福昕PDF SDK(Web)
  • 福昕管理控制台
    • 公有云
    • 私有云
    • 通用情况
  • 福昕阅读器
    • RMS插件
  • 福昕高级编辑器
    • AI助手
    • Mac版本
      • 常规问题
    • Windows版本
      • ECM集成
      • 互联PDF
      • 企业管理指南
      • 保护
      • 内容编辑
      • 创建PDF
      • 压缩
      • 图章
      • 安装与卸载
      • 常见问题
      • 打印
      • 注释/评论
      • 福昕插件
      • 翻译助手
      • 翻译助手教程
      • 试用与激活
      • 转换
      • 页面管理
    • 教育用户
      • 论文查重
      • 论文畅
      • 操作指南
    • 网页版
      • Foxit eSign
      • 电子签章
    • 订阅
    • 资源
  • 福昕高级编辑器Linux版本
  • 福船图纸管理系统
  • 福昕PDF SDK 软件开发工具包 > 福昕PDF SDK(Web)
  • 标签:

如何自定义按钮组件?

  • 福昕知识库
  • 2023-06-01

介绍

Foxit PDF SDK for Web 有一个功能齐全的查看器演示。 但有时,您可能希望定制演示 UI 以加载您所需的功能。 您可能只想加载带有自定义事件跟踪的按钮。 本文将指导您逐步完成所有阶段。

1.       添加一个简单的按钮到工具栏

1.1.    xbutton 组件属性

常用按钮属性

属性名称

描述

name

用于定义组件的名称

text

显示按钮文本

icon-class

设置按钮的图标样式

disabled

按钮禁用状态

isVisible

按钮可见性状态

更详细的信息请参考 API Reference 的 Component 和 Button Component。

1.2.    通过xbutton组件创建自定义按钮

基于 xbutton 组件创建自定义按钮模板。代码如下:

const newButton = `<xbutton name="xbtn-1" icon-class="fv__icon-toolbar-hand">simple button 1</xbutton>`;

1.3.     将按钮模板放入 PDFViewer 模板

*      创建 PDFViewer 模板

*      将自定义按钮放入 PDFViewer 模板

代码如下:

const template = `

  <webpdf>

    <toolbar name="toolbar">

      <div style="display: flex; flex-direction: row; padding: 6px;">

        <open-file-dropdown></open-file-dropdown>

        <!– here, xbtn-1 button –>

        ${newButton}

      </div>

    </toolbar>

    <div>

      <viewer></viewer>

    </div>

  </webpdf>

`;

1.4.    使用Fragments管理模板中按钮的配置项和交互逻辑

Fragments属性

属性名称

描述

目标

目标按钮的名称

配置

配置该按钮的调用功能

       代码如下:

const fragments = [

 {

   target: 'xbtn-1', // button name

   config: {

     callback: function () {

       alert('click xbtn-1!');

     }

   }

 }]

1.5.    构建 PDF 查看器

创建一个自定义的Appearance类,并在该类中创建PDF Viewer模板/Fragments的回调函数

初始化PDFUI,完成一个简单的PDF Viewer

代码如下:

var CustomAppearance = PDFViewCtrl.shared.createClass({

  getLayoutTemplate: function () {

    return template;

  },

  getDefaultFragments: function () {

    return fragments;

  }

}, UIExtension.appearances.Appearance);

 

var PDFUI = UIExtension.PDFUI;

var Events = UIExtension.PDFViewCtrl.Events;

var pdfui = new PDFUI({

  viewerOptions: {

    libPath: '../../../lib',

    jr: {

      readyWorker: readyWorker

    },

    defaultScale: 1

  },

  renderTo: '#pdf-ui',

  appearance: CustomAppearance,//UIExtension.appearances.adaptive,

  fragments: [],

  addons: UIExtension.PDFViewCtrl.DeviceInfo.isMobile ?

    '../../../lib/uix-addons/allInOne.mobile.js' :

    '../../../lib/uix-addons/allInOne.js'

});

window.pdfui = pdfui;

 

2.       使用 Controller对 UI和业务逻辑进行分离

2.1.    控制器常用方法

方法名称

描述

prelink

在组件预链接生命周期中调用

postlink

在组件链接后生命周期中调用

mounted

在组件插入DOM tree之后调用,在DOM tree中,您可以向组件添加一些事件侦听器或处理任何其他任务

destroy

在组件销毁后销毁此控制器

handle

由组件在用户交互期间触发。例如,单击按钮或用户通过文件选择器组件而选择的文件

2.2.    创建一个简单的控制器

*      通过承袭UIExtension.Controller;创建自定义的CustomController类

*      创建一个名为moduleA的模块;

*      将CustomController注册到moduleA;

       代码如下

class CustomController extends UIExtension.Controller {

  static getName() {

    return 'CustomController';

  }

  handle() {

    alert('click in CustomController')

  }

}

// create a module

const module = PDFUI.module('moduleA', []);

// Register Controller to moduleA

module.registerController(CustomController);

2.3.    清理1.4. 中xbtn-1 Fragments配置项

清除fragments中关于xbtn-1的配置项,代码如下:

fragments = [];

 

2.4.    附加CustomController 到自定义按钮

通过 @controller 指令将控制器类附加到组件。代码如下:

const newButton = `<xbutton name="xbtn-1" icon-class="fv__icon-toolbar-hand" @controller="moduleA:CustomController">simple button 1</xbutton>`;

 

3.       为什么要使用Controller来管理组件

3.1.    跟踪应用程序运行时事件

在Controller中配置事件跟踪更容易,比如:添加按钮点击的事件跟踪等。

3.2.    通过Controller处理UI与Data的复杂交互

*      Web SDK PDF UI是一个基于MVC构建的UI框架

*      控制器可用于响应视图组件生命周期函数和用户操作

比如:

按钮组件接收到点击事件时,默认会调用Controller的handle方法,在handle方法中会调用模型(PDFViewer)的方法更新模型上的数据

模型数据更新后,会发出事件通知

最后,视图组件在监听到模型的数据变化后更新页面的显示

3.3.    Demos

代码如下:

class ButtonController extends UIExtension.Controller {

  static getName() {

    return 'ButtonController';

  }

  prelink() {

    // send an event to server

  }

  postlink() {

    // send an event to server

  }

  mounted(){

   // send an event to server

  }

  async handle() {

   // send an event to server

    alert('click in  ButtonController')

    // get document object

   doc = await pdfui.getCurrentPDFDoc();

    ….

  }

}

相关内容

RDK Android 如何设置单页上下滑动翻页?

PDF转Word时,如何仅处理指定页面?

PDF和OFD如何批量互转?

Bitmap 类如何与其他的图像类互转?

打印管理PrintManager怎么判断文档打印是否完成?

软件如何打开嵌入在office文档中Adobe PDF图标

福昕高级PDF编辑器专业版如何在文档中嵌入一个3D模型

福昕高级PDF编辑器专业版如何实现对图片和文档内容添加马赛克

福昕高级PDF编辑器如何显示注释内容图标

福昕高级PDF编辑器如何添加和调整快速访问工具栏功能

推荐内容

RDK Android 如何设置单页上下滑动翻页?

PDF转Word时,如何仅处理指定页面?

PDF和OFD如何批量互转?

Bitmap 类如何与其他的图像类互转?

打印管理PrintManager怎么判断文档打印是否完成?

软件如何打开嵌入在office文档中Adobe PDF图标

福昕高级PDF编辑器专业版如何在文档中嵌入一个3D模型

福昕高级PDF编辑器专业版如何实现对图片和文档内容添加马赛克

福昕高级PDF编辑器如何显示注释内容图标

福昕高级PDF编辑器如何添加和调整快速访问工具栏功能

产品
  • 应用行业
  • 白皮书
开发支持
  • 开发中心
  • SDK文档资料

销售咨询:010-50951668

客服电话:0591-38509808

销售咨询
微信公众号

©2026 福建福昕软件开发股份有限公司 版权所有

隐私策略