平台自身PDF文件签署

更新时间:2025-01-20 11:34:02

接口描述

当平台自身企业(应用ID所属的企业主体)需要自动落章时,可以直接通过该接口加盖自身印章。

注:

  • 文件一旦签名盖章就不可以再进行任何填写或修改原文的操作,否则在验证签署文件有效性时会显示文件被篡改,请在签章前完成所有内容填充。
  • 请妥善保管签署前后的文件原文,当涉及2个及以上签署方签署时,中间过程产生的文件要用于下次签署的待签署文件传入继续盖章/签字。

接口

PlatformSignService.platformSign(PlatformSignParam platformSignParam)

请求参数

展开全部参数参数名称

类型

必选

参数说明

platformSignParam(点击“+”展开详情)

PlatformSignParam

平台自身签署传入参数信息类

sealData

String

印章Base64数据(与sealId二选一方式传值,两者都传优先取sealData)
【注意】:印章数据要和开发者自身平台的企业名称(当前应用ID所属企业主体)对应,否则会出现签署的印章和背后的数字证书不一致的情况,从而造成签署纠纷

sealId

String

平台自身企业在e签宝官网-企业控制台-印章管理中的印章编号(与sealData二选一方式传值

signType

SignType

签章类型,枚举:

  • Single,单页签章
  • Multi,多页签章
  • Edges,签骑缝章
  • Key,关键字签章

【补充说明】:

  • 关键字签章是全文检索合同中存在的文字,例如:keyWord=“甲方盖章”。就会在合同中检索存在“甲方盖章”这几个字的地方盖章

file

SignFilePdfParam

签署PDF文件信息

fileName

String

文件名称

【补充说明】:

  • 该文件名称会显示在套餐消费账单里,后续对接方可以根据该名称和签署记录ID对账使用

srcPdfFile

String

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

streamFile

byte[]

待签署PDF文件本地二进制数据(与srcPdfFile至少有一个不为空,两者都传优先取streamFile)

dstPdfFile

String

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

password

String

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

posBeans

List<PosBean>

签章位置信息

posPage

String

签署页码(除关键字签章外,页码均不可为空)

若为多页签章,支持指定多个页码,例如格式:“1-3,5,8“

posX

float

签署位置X坐标,默认0

【补充说明】:

  • 若为单页/多页签章,则X是以页面左下角为原点,坐标向右偏移量X
  • 若为关键字签章,则X是相对于关键字左下角为原点,坐标向右偏移量X

posY

float

签署位置Y坐标,默认0

【补充说明】:

  • 若为单页/多页签章,则Y是以页面左下角为原点,坐标向上偏移量Y
  • 若为关键字签章,则X是相对于关键字左下角为原点,坐标向上偏移量Y

keyWord

String

关键字

【补充说明】:

  • 关键字签章时,不可空
  • 关键字建议不要设置特殊字符,因Adobe无法识别部分符号,某些特殊字符会因解析失败从而导致搜索不到

width

float

印章展现宽度,将以此宽度对印章图片做同比缩放。

【补充说明】:

  • 若该字段为空:若图片宽度超过159,印章宽度等比缩小至159;若图片宽度小于159,印章尺寸默认以图片大小为准
  • 若该字段不为空:印章宽度以传入参数为准

addSignTime

boolean

是否显示本地签署时间,需要width设置92以上才可以看到时间,时间格式:yyyy-MM-dd HH:mm:ss

  • true - 显示签署时间
  • false - 不显示签署时间

sealSpec

SealSpecEnum

印章规格,默认:IMAGE

  • IMAGE - 图片base64
  • GB_SEAL - 国标印章

响应参数

展开全部参数参数名称

类型

必选

参数说明

fileDigestSignResult(点击“+”展开详情)

FileDigestSignResult

响应结果类

errCode

int

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

msg

String

错误信息,错误码对应的说明信息

errorShow

boolean

错误信息是否建议显示

signServiceId

String

签章记录ID

filePath

String

签署文件源路径

dstFilePath

String

签署后文件的目标路径

stream

byte[]

签署后文件的二进制数据

请求示例  

//获取客户端的代码:
ServiceClient getKHD = ServiceClientManager.get("您的pojectId");

// 平台签署服务
PlatformSignService platformSignService = getKHD.platformSignService();

/**
* 平台自身PDF文件签署
*/

// 签署文件信息
SignFilePdfParam file = new SignFilePdfParam();
file.setFileName("XXX的个人签署文件.pdf");// 文件名称
file.setSrcPdfFile("D:/test-template.pdf");// 待签署PDF文件本地路径,含文件名(与bytes至少有一个不为空)
file.setDstPdfFile("D:/signed.pdf");// 签署后PDF文件本地路径,含文件名(为空时返回签署后的文件流)

// 签章位置信息
List<PosBean> posBeans = new ArrayList<>();
PosBean signPos = new PosBean();
signPos.setPosPage("1");// 签署页码(除关键字签章外,页码均不可为空)若为多页签章,支持指定多个页码,例如格式:“1-3,5,8“
signPos.setPosX(150);// 签署位置X坐标,若为关键字定位,相对于关键字的X坐标偏移量,默认0
signPos.setPosY(0);// 签署位置Y坐标,若为关键字定位,相对于关键字的Y坐标偏移量,默认0
signPos.setKeyWord("甲方盖章");// 关键字,仅限关键字签章时有效,若为关键字定位时,不可空
signPos.setWidth(159);// 印章展现宽度,将以此宽度对印章图片做同比缩放。
signPos.setAddSignTime(true);// 是否显示本地签署时间,需要width设置92以上才可以看到时间
posBeans.add(signPos);

//印章二选一传入
//印章Base64数据
String sealData = "AF+CAMAAACyBIHOAAADAFBMVEX/////AAAAAP8AAAAAAABLakbNAAAAAXRSTlMAQObYZgAABRZJREFUeNrt3dmS2zgMBVDDrf//ZcxDMpO0N8kWQInT5zylK1VarkCK1ObLBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGYhgg/SSvEfW6pFB2CR6pGFGlNnkUelnz86/ijP4b2Ypur760s1LkPzvw0pL9PEH91Fk8PTnyf+pkYbl3H53ydUuMJl7JZPdXrJZ+nXDf9jyrqJS3f5x+8FP9iHyp5vUfovNj7W9it25n8dmX5ZmY4ebratbxlY+jlrW8iYK/5oDj/Okv4Z+/7BpZ9358uu5dfv0TJd5a+fLnOePYr+9LO3fWXLTCzGnPmXCcMfUUaN/X3fZseg8G8vufWsd8A5rPWiw6iRZgxbcfWCl8nDz7Zh6JB+9Gu6ieJdMj13Ace0qGXGkl9LP8+3yFPMH8dsdNYv/NcJPmeKv+92eNegPF4ss6dXXf5fxZ/964ycqvrrI4m28GPTHCx/dvX3lf7juW5GW9c6YfVHb78Tv5cWm6caqfqH3kmL2z/zx8Qfx083/txWiL2n46vSf3cVf93U2b3eyeKPh7c+hqaff/+Z548/ondJOaR5RcsIZkjfHyUZNY94Xg03c3vjOEv1F1+WjMHpP9ubLN2tYc/57JirH3GRYVuyu4vqetimT51+1ZPbHfE/7ifmurS9qevcv0vLsLJpqNQcVvvxxvng0OofWOTj0v+2zn/nuxV3AK7nT/8U9y9bar/xMauM9hDjmINTmH7buD9HLStiQPHn87/27eh1UEnUP3ecXQcgBpbZtav2oyXqx3vePs1ou7056Ipn7j4AmXdtvin/+22++Vfh2q4dhdPf9fQNuGJ1mZWv1E96u+Xubkc0HsdsOtLV8Xe+hrNWddFygO9WFrXfM7gO6A1GvNZVlH+sDOJidUBwZPw55tJD9uW/vUWXFNW1Y2NbHgpb/4ZPlLbZJyeZ2p3qv97f+w5gXtrrv630G+If+tBB+/n38RMNhU9WfHUWfn/x3/5PNG171+ezui9Y1X9CJvtWGGvpl7ftSR4yfFUlWfqJl+fDuI5+dZmi+N9po0X5jwi/+6MCDV+vyr7zzaPxWlu30xP/s/R37cbqOLYm//uDHFsvcuQ54o/VgcMHm7o+iyh6CTcezx5zS2h5gvgfxbz/7fANo76a/L/l/fTOXeXTjo03irKoUDZNoWs+AfDfzfvn49x4und5qvizqE42XsDYtiNrq4583driUed0kvjj+Wi8Jv7cuSe5c31xeZH+R/kvXV1Pw+2n0V/LzrfC/2jzzj7r3X4UK772eHOsI1dHRacZ929dUhYV4wdbkB8tIO8PS9nIZxma/p7uo+Cd9c/24LYEKl8w+xqWfu7vDFqbcmw8gKVfuVpGpF8wJS847ebuOcuj9DOyu8/Yt5iKl7qyezO2XS0pv5fUPvIp+brR2Kfk8tFp924WmRVXtr8aqz8vRQ0zuxvzposHHY8uLa1lPzr9DxvhhvTjz8yisikujeHXtKe3lpSfjApj09ZkVYfTf+ot/IRA7t6h3L/p0XXy6XgyOC/Hpf9uJfT9ItpRnc+x6X8bHuYR235E9Zc+ERDD0ohj0z/lq/7j0h/wA2DzxX+JYWHEoeH7teo4NH2/Vn1k+Kp/YEeHCgQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACY3z+dHFbPWssjxQAAAABJRU5ErkJggg==";
//印章也可以直接传入平台在e签宝官网的印章编号
//String sealId = "985ec1e1-1111-0000-2222-123456789"

//传入平台自身签署参数内
PlatformSignParam platformSignParam = new PlatformSignParam();
platformSignParam.setSealData(sealData);//印章Base64
//platformSignParam.setSealId(sealId);//印章ID数据
platformSignParam.setPosBeans(posBeans);//签章位置信息
platformSignParam.setSignType(SignType.Key);//签章类型:Single,单页签章; Multi,多页签章; Edges,签骑缝章; Key,关键字签章
platformSignParam.setFileBean(file);//签署文件信息

//开始平台自身签署
FileDigestSignResult fileDigestSignResult = platformSignService.platformSign(platformSignParam);

if (fileDigestSignResult.getErrCode() != 0)
    System.out.println("签署失败:" + JSONObject.fromObject(fileDigestSignResult));
else
    System.out.println("签署成功" + JSONObject.fromObject(fileDigestSignResult));

响应示例

{
    "msg": "成功",
    "dstFilePath": "D:\\signed.pdf",
    "stream": null,
    "errCode": 0,
    "filePath": null,
    "errShow": false,
    "signServiceId": "1754751111168904451",
    "authId": null
}
我要纠错