跳到内容
  • 福昕首页
  • 开发中心
  • 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
      • 压缩
      • 图章
      • 安装与卸载
      • 常见问题
      • 打印
      • 注释/评论
      • 福昕插件
      • 翻译助手
      • 翻译助手教程
      • 试用与激活
      • 转换
      • 页面管理
    • 教育用户
      • 论文查重
      • 论文畅
    • 网页版
      • 电子签章
    • 订阅
    • 资源
  • 福昕高级编辑器Linux版本
  • 福船图纸管理系统
  • 福昕高级编辑器
  • 标签:

GSDK如何添加一个可提交PDF表单域数据的按钮?

  • 福昕知识库
  • 2025-05-25

请参看以下代码:

                   // 添加一个提交按钮
                    Control btn_submit = null;
                    try {
                        btn_submit = form.addControl(page, "Push Button Submit", e_TypePushButton,
                                new RectF(50, 750, 150, 780));
                    } catch (PDFException e) {
                        e.printStackTrace();
                    }
                    // 设置默认外观
                    DefaultAppearance default_ap = new DefaultAppearance();
                    default_ap.setFlags(DefaultAppearance.e_FlagFont | DefaultAppearance.e_FlagFontSize
                            | DefaultAppearance.e_FlagTextColor);
                    try {
                        default_ap.setFont(new Font(Font.e_StdIDHelveticaB));
                    } catch (PDFException e) {
                        e.printStackTrace();
                    }
                    default_ap.setText_size(12f);
                    default_ap.setText_color(0x000000);
                    try {
                        form.setDefaultAppearance(default_ap);
                    } catch (PDFException e) {
                        e.printStackTrace();
                    }

                    // 设置提交按钮外观
                    Widget widget = null;
                    try {
                        widget = btn_submit.getWidget();
                        widget.setHighlightingMode(Annot.e_HighlightingPush);
                        widget.setMKBorderColor(0xFF0000);
                        widget.setMKBackgroundColor(0xF0F0F0);
                        widget.setMKNormalCaption("Submit");
                        widget.resetAppearanceStream();
                    } catch (PDFException e) {
                        e.printStackTrace();
                    }

                    // 设置提交动作
                    try {
                        SubmitFormAction submit_action = new SubmitFormAction(Action.create(form.getDocument(), e_TypeSubmitForm));
                        int count = form.getFieldCount(null);
                        WStringArray name_array = new WStringArray();
                        for (int i = 0; i < count; i++) {
                            name_array.add(form.getField(i, null).getName());
                        }

                        submit_action.setFieldNames(name_array);
                        submit_action.setFlags(e_FlagSubmitAsPDF|e_FlagExclude);
                        submit_action.setURL("http://www.foxitsoftware.com");
                        widget.setAction(submit_action);
                    } catch (PDFException e) {
                        e.printStackTrace();
                    }

                    System.out.println("Add button field.");

一、创建提交按钮控件

  1. 按钮初始化与位置设置
    代码通过 form.addControl() 方法在 PDF 页面中添加提交按钮,参数包括:目标页面 page、按钮名称 "Push Button Submit"、按钮类型 e_TypePushButton(推送按钮),以及坐标区域 new RectF(50, 750, 150, 780)。PDF 坐标系下,该区域表示按钮的左边界 50、下边界 750、右边界 150、上边界 780,实际宽度为 100(150-50)、高度为 30(780-750)。
  2. 异常处理
    由于 addControl() 可能抛出 PDFException,代码通过 try-catch 块捕获异常并打印堆栈信息,确保程序不因控件创建失败而中断。

二、配置按钮默认外观

  1. 外观属性定义
    创建默认外观对象 default_ap,通过 setFlags() 启用字体、字号、文本颜色等属性的配置权限(e_FlagFont、e_FlagFontSize、e_FlagTextColor)。
  2. 字体与文本样式设置
    • 字体设置:通过 setFont(new Font(Font.e_StdIDHelveticaB)) 指定按钮文本为 Helvetica 粗体(e_StdIDHelveticaB),异常捕获确保字体加载失败时不影响后续逻辑;
    • 字号设置:setText_size(12f) 将文本大小设为 12 磅;
    • 文本颜色:setText_color(0x000000) 设置为黑色(十六进制 0x000000)。
  3. 应用默认外观
    通过 form.setDefaultAppearance(default_ap) 将配置的外观应用于表单,使后续创建的控件默认继承该样式。

三、定制提交按钮视觉效果

  1. 获取按钮控件的注释组件
    通过 btn_submit.getWidget() 获取按钮对应的注释组件 Widget,该组件负责控制按钮的外观和交互效果。
  2. 交互与样式设置
    • 高亮模式:setHighlightingMode(Annot.e_HighlightingPush) 定义按钮点击时的视觉反馈为 “按下效果”;
    • 边框与背景:setMKBorderColor(0xFF0000) 将边框设为红色(0xFF0000),setMKBackgroundColor(0xF0F0F0) 设置背景为浅灰色(0xF0F0F0);
    • 显示文本:setMKNormalCaption("Submit") 设置按钮正常状态下显示文本为 “Submit”;
    • 外观刷新:resetAppearanceStream() 重新生成外观流,确保样式更新生效。

四、设置按钮提交动作

  1. 创建提交表单动作
    通过 SubmitFormAction 构造函数创建提交动作,参数 Action.create(form.getDocument(), e_TypeSubmitForm) 指定动作为 “提交表单”(e_TypeSubmitForm)。
  2. 表单字段收集
    • 获取字段总数:form.getFieldCount(null) 统计表单中所有字段;
    • 构建字段名称数组:通过循环遍历 form.getField(i, null).getName() 收集所有字段名称,存入 WStringArray 对象 name_array。
  3. 提交动作配置
    • 字段范围:setFieldNames(name_array) 定义提交时包含的字段;
    • 提交参数:setFlags(e_FlagSubmitAsPDF|e_FlagExclude) 设置提交格式为 PDF 并排除特定字段(e_FlagExclude 需配合具体字段配置);
    • 目标 URL:setURL("http://www.foxitsoftware.com") 指定表单提交的目标地址;
    • 绑定动作:widget.setAction(submit_action) 将提交动作关联到按钮控件。

关键逻辑总结

  1. 核心流程:创建按钮 → 定义默认外观 → 定制按钮样式 → 配置提交动作(收集字段、指定目标 URL)。
  2. 技术要点:
    • 按钮外观通过 Widget 组件的 MK 属性(MKBorderColor、MKBackgroundColor 等)控制,对应 PDF 注释的 “外观属性”;
    • 提交动作通过 SubmitFormAction 实现,可指定提交格式、字段范围和目标地址,e_FlagSubmitAsPDF 表示以 PDF 格式提交表单数据。
  3. 注意事项:
    • 坐标值需根据 PDF 页面实际布局调整,避免按钮与其他元素重叠;
    • 提交 URL 需为有效地址,否则表单提交会失败;
    • 若只需提交部分字段,可在 name_array 中筛选特定字段名称,而非包含全部字段。

相关内容

【校园昕积分】邀请攻略:使用福昕合作高校发放教育专用激活码激活

【校园昕积分】邀请攻略:使用CARSI高校账户或高校EDU邮箱注册

在福昕高级PDF编辑器中如何自定义快速访问工具栏

在福昕高级PDF编辑器中如何设置常用图章

在对文件虚拟打印后如何设置文件不自动打开

通知消息关闭后如何开启

PDF文件奇偶页差异化页码添加

无法安装服务“Foxit Document Management”(FoxitAssistantSvcPlus)

将3D文件添加作为信任文件

GSDK如何向PDF添加隐藏的文本域?

推荐内容

【校园昕积分】邀请攻略:使用福昕合作高校发放教育专用激活码激活

【校园昕积分】邀请攻略:使用CARSI高校账户或高校EDU邮箱注册

在福昕高级PDF编辑器中如何自定义快速访问工具栏

在福昕高级PDF编辑器中如何设置常用图章

在对文件虚拟打印后如何设置文件不自动打开

通知消息关闭后如何开启

PDF文件奇偶页差异化页码添加

无法安装服务“Foxit Document Management”(FoxitAssistantSvcPlus)

将3D文件添加作为信任文件

GSDK如何添加一个可提交PDF表单域数据的按钮?

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

销售咨询:010-50951668

客服电话:0591-38509808

销售咨询
微信公众号

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

隐私策略