预置多个签名域PDF模板批量文件签署

更新时间:2024-01-18 20:07:23

接口描述

对包含多个预置签名域的PDF模板文档进行所指定的关联账户进行批量签署。

注:文件一旦签名盖章就不可以再进行任何填写或修改操作,否则在验证签署文件有效性时会显示文件被篡改,请在签章前完成所有内容填充。

接口

TemplateSignService.timesSign(SignPDFFileBean fileBean, Map<String, Object> txtFields, Map<String, SignatureSettings> signatures)


请求参数

展开全部参数参数名称

类型

必选

长度

参数说明

示例值

txtFields

Map


模板中包含待填充文本域时,文本域Key-Value组合


signatures

Map


指定每个预置签名域签署所使用的账号、印章等信息。Map Key为预置签名域名称,ValueSignatureSettings,应包含账户IdsealData等信息,详见对象解释。



accountId

String


签署账户唯一标识,由账号创建接口返回


sealData

String


签署时印章图片字节流Base64编码值


注意:印章数据要和账户信息对应,否则会出现签署的印章和背后的数字证书不一致的情况,从而造成签署纠纷


fileBean

SignPDFFileBean


指定接口输入输出目标文件的对象封装



srcPdfFile

String

255

待签署PDF文档本地路径,含文档名(与bytes至少有一个不为空)


bytes

byte[]


待签署PDF文档本地二进制数据(与srcPdfFile至少有一个不为空)


dstPdfFile

String

255

签署后PDF文档本地路径,含文档名(为空时返回签署后的文件流)


fileName

String

255

文档名称,e签宝签署日志对应的文档名,若为空则取文档路径中的名称


ownerPassword

String

100

文档编辑密码,当目标PDF设置权限保护时必填


ShowImage

Boolean


是否增加e签宝logo图标


markBit

String

100

客户自由标示位,用于辨识文件


响应参数

展开全部参数参数名称

类型

必选

参数说明

示例值

FileDigestTimesSignResult

FileDigestTimesSignResult




errCode

int

错误码,0标识成功,其他均标识失败


msg

String

错误码对应的简要描述


signResult

Map

签署完成后返回的签署服务Id值,Map Key为签署接口指定的acountIdValue为该用户签署的所有signServiceId的列表信息


filePath

String

返回的签署源文件路径信息


dstFilePath

String

签署完成后输出的目标文件路径,当采用非文件流签署时不为空


stream

Byte[]

签署完成后输出的目标文件字节流信息,当采用文件流签署时不为空


请求示例  

其他示例语言请点击


		// 获取正式生成服务
		// 获取客户端的代码:ServiceClient getKHD = ServiceClientManager.get("您的pojectId");
		TemplateSignService templateSignService = getKHD.templateSignService();

		// 签署文档信息
		SignPDFFileBean file = new SignPDFFileBean();
		file.setSrcPdfFile("D:/test-template.pdf");// 待签署PDF文档本地路径,含文档名(与bytes至少有一个不为空)
		file.setDstPdfFile("D:/abc/e.pdf");// 签署后PDF文档本地路径,含文档名(为空时返回签署后的文件流)
		file.setFileName("e");// 文档名称,e签宝签署日志对应的文档名,若为空则取文档路径中的名称
		file.setShowImage(true);// 是否增加e签宝logo图标


		Map<String, Object> txtFields = new HashMap<>();// 模板中包含待填充文本域时,文本域Key-Value组合
		txtFields.put("user1", "杭州天谷");
		txtFields.put("user2", "芜浣");
		txtFields.put("year", "2019");
		txtFields.put("month", "09");
		txtFields.put("day", "19");

		Map<String, SignatureSettings> signatures = new HashMap<>();// 模板中包含待填充文本域时,文本域Key-Value组合
		SignatureSettings signatureSettings = new SignatureSettings();
		signatureSettings.setAccountId("34332DD1838842ACADEBDCD3D126B858");
		String sealData = "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";
		signatureSettings.setSealData(sealData);
		signatures.put("Signature1", signatureSettings);

		FileDigestTimesSignResult fileDigestTimesSignResult = templateSignService.timesSign(file, txtFields,
				signatures);
		if (fileDigestTimesSignResult.getErrCode() != 0)
			System.out.println("失败" + JSONObject.fromObject(fileDigestTimesSignResult));
		else
			System.out.println("成功" + JSONObject.fromObject(fileDigestTimesSignResult));



响应示例

{
    "dstFilePath":"D:\abc\e.pdf",
    "errCode":0,
    "errShow":false,
    "filePath":"",
    "msg":"成功",
    "signResult":{
        "34332DD1838842ACADEBDCD3D126B858":[
            "1174246692896198657"
        ]
    },
    "stream":[

    ]
}



错误码

错误码

错误描述

解决方案


我要纠错