DocuSign SOAP API为PDF添加文本框/下拉列表报错求解
解决DocuSign SOAP API添加文本框和下拉列表的报错问题
嘿,这个坑我之前踩过!你之所以遇到那个'Text' is not a valid value for TabTypeCode的报错,核心原因是混淆了DocuSign REST API和SOAP API的Tab类型命名规则——REST里用的'Text'在SOAP API的TabTypeCode枚举里根本不是有效值,SOAP有自己的一套枚举常量。
正确的文本框(TextArea)代码实现
SOAP API中,文本框对应的Tab类型是'TextTab',而不是REST里的'Text'。下面是修正后的代码:
// 创建文本框Tab(对应TextArea) DocuSignAPI.Tab textTab = new DocuSignAPI.Tab(); textTab.Type_x = 'TextTab'; // 这里必须用TextTab,替换原来的'Text' textTab.RecipientID = '1'; // 建议用字符串类型,避免SOAP序列化时的类型问题 textTab.DocumentID = '1'; textTab.AnchorTabItem = new DocuSignAPI.AnchorTab(); textTab.AnchorTabItem.AnchorTabString = 'bio:'; // 可选:设置文本框的尺寸和必填属性 textTab.Width = 250; textTab.Height = 100; textTab.Require = 'true'; // 设置为必填项
正确的下拉列表(Picklist)代码实现
下拉列表在SOAP API中对应的类型是'ListTab',同时需要手动添加下拉选项的ListItem对象:
// 创建下拉列表Tab DocuSignAPI.Tab listTab = new DocuSignAPI.Tab(); listTab.Type_x = 'ListTab'; listTab.RecipientID = '1'; listTab.DocumentID = '1'; listTab.AnchorTabItem = new DocuSignAPI.AnchorTab(); listTab.AnchorTabItem.AnchorTabString = 'department:'; // 初始化下拉选项集合 listTab.ListItems = new DocuSignAPI.ArrayOfListItem(); listTab.ListItems.ListItem = new DocuSignAPI.ListItem[3]; // 添加第一个选项 listTab.ListItems.ListItem[0] = new DocuSignAPI.ListItem(); listTab.ListItems.ListItem[0].Text = '技术部'; // 显示给用户的文本 listTab.ListItems.ListItem[0].Value = 'tech'; // 后台存储的值 // 添加第二个选项 listTab.ListItems.ListItem[1] = new DocuSignAPI.ListItem(); listTab.ListItems.ListItem[1].Text = '市场部'; listTab.ListItems.ListItem[1].Value = 'marketing'; // 添加第三个选项 listTab.ListItems.ListItem[2] = new DocuSignAPI.ListItem(); listTab.ListItems.ListItem[2].Text = '人事部'; listTab.ListItems.ListItem[2].Value = 'hr'; listTab.Require = 'true'; // 设置为必填项
将Tabs添加到Envelope中
最后把这两个Tab放入Envelope的Tabs集合里:
// 初始化Tabs数组 envelope.Tabs = new DocuSignAPI.ArrayOfTab(); envelope.Tabs.Tab = new DocuSignAPI.Tab[2]; envelope.Tabs.Tab[0] = textTab; envelope.Tabs.Tab[1] = listTab;
额外注意事项
- 确保
RecipientID和DocumentID使用字符串类型:SOAP API对数据类型的校验很严格,用数字可能会导致XML序列化错误。 - 锚点字符串要准确:确认PDF中确实存在
'bio:'和'department:'这样的锚点文本,否则Tab会无法定位。 - 自定义其他属性:可以根据需求添加
TabLabel(用于后续识别Tab)、DefaultValue(文本框默认值或下拉列表默认选中项)等属性。
内容的提问来源于stack exchange,提问作者Amer Bearat
相关产品推荐
相关产品推荐

