Python docusignapi:填充模板时';s PDF表单字段的标签,为什么文本标签会在每个文档的左上角重复?
我们的团队已经使用docusignpythonapi大约一年了,我们一直注意到这个问题,然后消失了几个星期,现在又回来了。每次我们生成一个新模板,其中文本选项卡锚定在文档的某个位置,这些选项卡就会复制到文档的左上角。生成的文档在第一页的角落有一堆重叠的文本字段,看起来非常不专业和混乱 下面是模板的外观。这两个字段堆叠在一起很难看到,因为它们已缩小到最小大小,但如果我单击它们,我可以看到它们的选项卡标签与页面上的两个字段(broker\u name和sign\u date)匹配 然后,在根据该模板构建信封的签名仪式上,空字段将填充数据,并显示在角落中 我们使用以下代码生成Tabs对象:Python docusignapi:填充模板时';s PDF表单字段的标签,为什么文本标签会在每个文档的左上角重复?,python,docusignapi,Python,Docusignapi,我们的团队已经使用docusignpythonapi大约一年了,我们一直注意到这个问题,然后消失了几个星期,现在又回来了。每次我们生成一个新模板,其中文本选项卡锚定在文档的某个位置,这些选项卡就会复制到文档的左上角。生成的文档在第一页的角落有一堆重叠的文本字段,看起来非常不专业和混乱 下面是模板的外观。这两个字段堆叠在一起很难看到,因为它们已缩小到最小大小,但如果我单击它们,我可以看到它们的选项卡标签与页面上的两个字段(broker\u name和sign\u date)匹配 然后,在根据该模
# Returns a Tabs object with name and date tabs. For envelopes that only contain those two fields.
def generate_name_date_tabs(name, date):
name = Text(document_id = '1', page_number = '1', recipient_id = '1', value=name, tab_label = 'eh_broker_name')
date = Text(document_id = '1', page_number = '1', recipient_id = '1', value=date, tab_label = 'eh_sign_date')
return Tabs(text_tabs=[name, date])
我们在这里生成模板和信封:
def create_application_envelope(destination_email, base64_file_content, signer_name="PlanProvide", signer_tabs=None, is_embedded_signing=False):
# Create an application envelope
# docusign_auth.DSClient.login("jwt")
account_id = session["ds_account_id"]
envelope_api = docusign_api_handler.get_envelope_api()
templates_api = docusign_api_handler.get_templates_api()
access_code = generate_access_code()
signer = Signer(
email=destination_email,
name=signer_name,
recipient_id="1",
routing_order="1",
role_name="signer",
# Use a six-character access code so URL doesn't expire
access_code=access_code,
tabs=signer_tabs
)
doc = Document(
document_base64 = base64_file_content,
name = "Your application generated by PlanProvide",
file_extension = "pdf",
document_id = 1,
# Detect Adobe form field names
transform_pdf_fields = True
)
documents = [doc]
template_req_object = EnvelopeTemplate(
documents=documents, email_subject="Please sign this document",
recipients=Recipients(signers=[signer]),
description="Template created via the API",
name="Application Template",
shared="false",
status="created"
)
try:
res = templates_api.create_template(account_id=account_id, envelope_template=template_req_object)
except Exception as e:
raise DocusignError(e)
try:
template_id = res.templates[0].template_id
except:
template_id = res.template_id
envelope_definition = EnvelopeDefinition(
email_subject="Please sign this document sent from the Python SDK",
template_id=template_id,
template_roles=[signer],
status="sent" # requests that the envelope be created and sent.
)
# Send it to an email
try:
results = envelope_api.create_envelope(account_id=account_id, envelope_definition=envelope_definition)
except Exception as e:
raise DocusignError(e)
return {
"envelope_id": results.envelope_id,
"access_code": access_code
}
据我所知,制表符对象在创建模板之前仍然只有两个文本字段,所以我不知道为什么会出现重复的内容。任何关于这个问题的帮助或想法都将不胜感激
编辑:
这里我们称之为generate_name_date_tabs():
我想我看到了问题所在 您通过提供
tabs
字段来定义signer
中的选项卡。稍后,在创建信封时,在templateRoles
中再次提供相同的signer
:
except:
template_id = res.template_id
envelope_definition = EnvelopeDefinition(
email_subject="Please sign this document sent from the Python SDK",
template_id=template_id,
template_roles=[signer],
status="sent"
我要将template\u角色=[signer]
更改为templateRoles=[{“email”:”email@domain.com“,”姓名“:”姓名“,”角色名称“:”签名者“}]
和更新
signer = Signer(
recipient_id="1",
routing_order="1",
role_name="signer",
# Use a six-character access code so URL doesn't expire
access_code=access_code,
tabs=signer_tabs
)
不包括姓名和电子邮件
如果这不起作用,我们需要进一步挖掘。您能告诉我您在哪里调用生成\u name\u date\u选项卡吗
您还可以在下面的代码中显示分配给签名者选项卡的内容吗
signer = Signer(
email=destination_email,
name=signer_name,
recipient_id="1",
routing_order="1",
role_name="signer",
# Use a six-character access code so URL doesn't expire
access_code=access_code,
**tabs=signer_tabs**
)
如果您看到这个问题在不同版本中消失和出现,我很可能是一个bug。让我们知道上述任何一项是否有助于缩小问题的范围。首先,如果您想要签名的日期/时间,请不要使用文本选项卡,而是使用日期签名选项卡。在签署文件时自动填写日期/时间
其次,您正在使用一个模板。如果您的模板中有选项卡define,那么除了代码中的选项卡之外,它们还会出现
第三,如果不提供位置(X/Y坐标)和noanchorText,选项卡将被放置在位置0/0或左上角,如您所见
因此,右边的一个可能来自模板,代码中的一个显示在左上角,因为没有指定位置。我们使用tab_标签匹配现有PDF表单字段的位置,而不是使用X/Y坐标或anchorText(Python中的anchor_字符串),并用数据填充这些字段。我确实认为这个问题与为模板创建选项卡,然后将它们分配到信封有关,但这是我获取字段以填充数据的唯一方法。从代码中删除选项卡,看看发生了什么我编辑了我的帖子,以包含生成_name _date _选项卡的调用。我尝试更改模板角色和签名者,虽然这确实删除了重复的字段,但它也使名称和日期选项卡不会填充我传入的值。如果有一种方法可以使用默认值填充PDF表单字段,而无需先创建模板,这可能会修复它,但我找不到一种方法。事实上,我在模板\u req\u对象中尝试了您对签名者的修复,并且成功了!我将收件人更改为recipients=recipients(签名者=[{“email”:destination\u email,“name”:signer\u name,“roleName”:“signer”,“recipientId”:“1”,“routingOrder”:“1”}])
并删除了重复的选项卡,但仍然填充了信封选项卡。
signer = Signer(
email=destination_email,
name=signer_name,
recipient_id="1",
routing_order="1",
role_name="signer",
# Use a six-character access code so URL doesn't expire
access_code=access_code,
**tabs=signer_tabs**
)