如何在含表单域PDF中嵌入JavaScript/Action Wizard实现填写完自动保存或发邮件?
PDF表单自动保存/自动提交邮箱实现方案
可行性结论
可以实现,无需用户本地安装Action Wizard。所有逻辑可以直接嵌入PDF文件本身,仅要求填写用户使用Acrobat Reader即可正常运行,制作阶段需要你使用Adobe Acrobat Pro完成配置。
具体实现步骤
所有逻辑通过嵌入PDF的JavaScript实现,不需要用到Action Wizard(Action Wizard是Acrobat本地批量工具,无法随PDF分发):
- 触发逻辑配置:可以给最后一个表单字段绑定
blur事件,或者在表单末尾添加提交按钮绑定Mouse Up事件,触发时先做表单必填项校验,确认所有字段填写完成后再执行后续动作。校验逻辑示例代码如下:
// 遍历所有表单字段校验必填项 var allFilled = true; for (var i = 0; i < this.numFields; i++) { var field = this.getField(this.getNthFieldName(i)); if (field.required && field.value === "") { allFilled = false; break; } } if (allFilled) { // 校验通过后执行保存/发邮件逻辑 }
- 自动保存功能实现:在上述校验通过的逻辑分支中调用
saveAs方法即可。注意你需要在导出PDF时开启扩展阅读器功能(Acrobat Pro操作路径:文件→另存为其他→阅读器扩展的PDF),否则Acrobat Reader默认没有修改保存PDF的权限。保存代码示例:
// 自定义保存路径和文件名,示例为保存到用户桌面 this.saveAs("/c/Users/"+identity.name+"/Desktop/已提交表单_"+this.getField("姓名").value+".pdf");
- 自动发邮件功能实现:调用
mailDoc方法即可实现携带PDF作为附件发送到指定邮箱,更推荐唤起系统默认邮箱客户端的实现方案,兼容性更高无需额外配置SMTP权限。代码示例:
// bUI设为true会先弹出邮箱编辑窗口让用户确认发送,避免误发 this.mailDoc({ bUI: true, cTo: "你的接收邮箱地址@xxx.com", cSubject: "表单提交:"+this.getField("表单编号").value, cMsg: "表单已填写完成,内容详见附件。" });
注意事项
- 部分高版本Acrobat Reader默认会阻止JavaScript运行,你可以在表单开头加一行文字提示,让用户打开PDF时选择允许运行JavaScript即可,无需安装任何额外组件。
- 如果不需要用户确认发送,可以将
mailDoc的bUI参数设为false,但部分安全设置较高的Reader版本可能会拦截静默发信的请求。
内容的提问来源于stack exchange,提问作者rawdata
相关产品推荐
相关产品推荐

