package v2document_request import ( "encoding/json" "git.sxidc.com/student-physical-examination/contract_lock_sdk/http" "git.sxidc.com/student-physical-examination/contract_lock_sdk/model/common" "os" ) type V2DocumentCreatebyfileRequest struct { // core:true 【签署文档】签署文档 【作用】 用于上传本地文件,文件上传后系统将自动将文档转换为PDF格式,方便后续进行签署 【传参】 1、支持的文件格式:pdf,doc,docx,wps,rtf,png,gif,jpg,jpeg,tiff,xls,xlsx,txt,ofd,dwg,ppt,pptx。 2、若上传CAD图纸(dwg格式),请先开启【电子签章管理后台-自定义配置DWG_SWITCH】。 3、当上传的文档为PDF时,PDF的版本需要>1.3;上传签署文档大小限制可在【电子签章管理后台-电子用印设置-文件上传限制】进行配置。 4、签署文档(file)和base64字符串(base64Str)不能同时为空,均传入以签署文档为准。 【特殊说明】 若电子签章管理后台配置签署文件仅允许上传指定格式文件,则此参数对应仅允许传入限定格式的本地文件 File *os.File `json:"file,omitempty"` // core:true 【base64字符串】base64字符串 【作用】 用于传入base64字符串格式文件,系统将把base64字符串转换为PDF格式文件,方便后续进行签署 【传参方式】 签署文档(file)和base64字符串(base64Str)不能同时为空,均传入以签署文档为准。 Base64Str string `json:"base64Str,omitempty"` // core:true 【签署文档名称】签署文档名称 【作用】 用于传入上传的签署文档的名称 Title string `json:"title"` // core:true 【签署文档类型】签署文档类型 【作用】 不同类型的文件转换方式不一样,需要传入类型进行文件转换,传入的类型需要与本地文件一致 【传参】 取值范围:pdf,doc,docx,wps,rtf,png,gif,jpg,jpeg,tiff,tif,xls,xlsx,txt,ofd,dwg,ppt,pptx。 FileType string `json:"fileType"` // core:true 【文件宽度】文件宽度 【传参】 1、单位:毫米。 2、文件宽度和文件高度必须同时传入才能生效,传入后将按照传入的值生成文档 3、如果值为负数则生成的文件和原始文件相比会上下翻转 4、不传值时按照如下规则处理: (1)图片:按照A4(210mm,297mm)的尺寸生成文档,同时根据图片宽高比,决定横竖版。宽<高时为竖版;宽>高时为横版 (2)xls、xlxs格式:按照A4尺寸生成文档,同时根据表格整体内容宽高比,决定横竖版。宽<高时为竖版;宽>高时为横版 (3)txt格式:按照A4尺寸生成竖版文档 (4)pdf、doc、docx、wps格式:按照文件本身的尺寸和横竖样式生成文档 Width *float64 `json:"width,omitempty"` // core:true 【文档高度】文件高度 【传参】 1、单位:毫米。 2、传值不为空时(width同时不为空)按照传入的值生成文件 3、如果值为负数则生成的文件和原始文件相比会上下翻转 4、不传值时按照如下规则处理 (1)图片:按照A4的尺寸,同时根据图片宽高比,决定横竖版 宽<高:竖版;宽>高:横板
(2)txt格式:按照A4(210,297)竖版尺寸生成签署文档 (3)xls、xlxs格式:按照A4尺寸,根据表格内容宽高比,决定横竖版; 整体内容 宽<高:竖版;整体内容宽>高:横板 (4)pdf、doc、docx、wps格式:按照文件本身的尺寸和横竖样式生成签署文档 Height *float64 `json:"height,omitempty"` // inner-type:Json 【文件水印】文件水印 【作用】 1、可在签署文档上添加水印,允许传入多组水印 2、若新增的文件已添加数字签名,因添加文件水印会篡改文件导致数字签名失效,故文件水印不会生效 WaterMarks string `json:"waterMarks,omitempty"` // inner-type:Json 【印章水印】印章水印 【作用】 1、可在印章外观上添加水印,防止签署文件上的印章被抠章后二次使用,允许传入多组水印 2、印章水印将会与该签署文档绑定,后续在这份文档上进行签章时,发起方下的所有内部签署方使用的印章外观会自动添加水印 StampWaterMarks string `json:"stampWaterMarks,omitempty"` // inner-type:Json 【表单域】表单域 【作用】 1、进行过数字签名后的PDF文档,任何对内容的修改都会导致签名失效,从而保护数据不被篡改。但是在内部文件审批流程中,有时需要对已签名或盖章的文件添加额外的签署或审批意见。此时可利用PDF的表单域功能,在不破坏原有签名的情况下,对文件添加内容; 2、表单域是PDF文档中允许填写文本或进行选择操作的特定区域,创建文档时添加的表单域,即使文件已经添加了数字签名,用户仍然可以在表单域中添加或修改内容 【风险提示】 1、需注意,表单域不适用于签署合同等文件,接收方签署完成后,发起方对于合同的任何修改都可能会违背接收方的真实意愿,对合同的法律效力产生影响。(例如,劳动合同签署场景中,员工签字完成后,企业如果使用表单域修改“社保缴纳地”等信息,未经过员工的确认,违背了员工的真实意愿,影响了合同的法律效力,容易产生纠纷。) 2、因此,在使用表单域功能之前,请确保使用的场景符合法律法规要求,不会违背签署人的真实意愿,再开启并使用此功能。 Form string `json:"form,omitempty"` // 【旋转度】90表示顺时针旋转90°,-90表示逆时针旋转90° PageRolate *int64 `json:"pageRolate,omitempty"` // 【加密pdf文件的查看密码】加密pdf文件的查看密码 【作用】 若文件被加密导致无法上传签署,可传入查看密码,系统将自动解密文件,文件可正常上传 OpenPassword string `json:"openPassword,omitempty"` // 【加密pdf文件的编辑密码】加密pdf文件的编辑密码 【作用】 若文件被加密导致无法上传签署,可传入编辑密码,系统将自动解密文件,文件可正常上传 【特殊说明】 已有签名且有编辑密码的文件,若解密后原有文件签名将会失效 EditPassword string `json:"editPassword,omitempty"` // 【对文档加密限制文档编辑】对文档加密限制文档编辑 【作用】 1. 可选择对文档添加编辑口令进行加密,该文档进行签署后,可防止用户进行抠章或编辑操作,下载到本地也不能进行编辑或导出为Word 2. 仅在Office、WPS、福昕、adobe系列软件中才可限制不允许编辑,其余软件因产品自身功能规则不同,可能无法限制编辑 3. 已有数字签名的文件上传时不支持加密(加密将影响签名有效性) 4. 若后续需要获取文档的编辑口令,可调用/contract/getDocumentPassword 【传参】 取值范围:true(加密),false(不加密);不传值默认为:false(不加密)。 IsPassword *bool `json:"isPassword,omitempty"` // 【加密word文件的解密密码】加密word文件的解密密码 【作用】 若word文件因由wps或office等其他软件加密导致无法上传签署,可传入解密密码,系统将自动解密文件,文件即可正常上传签署 Password string `json:"password,omitempty"` // 【文件旋转角度】文件旋转角度 【作用】 1、可旋转文档角度,以文档页面中心进行旋转。 2、对于含有电子签名的pdf文件不做处理。 3、正数表示顺时针旋转,负数表示逆时针旋转。 【传参】 取值范围:90 ,180,270,-90,-180,-270。 Angle *int64 `json:"angle,omitempty"` // 【预览页展示下载按钮】预览页展示下载按钮 【传参】 取值范围:true(展示),false(不展示);不传值默认为:false(不展示)。 ViewDownload string `json:"viewDownload,omitempty"` // 【链接有效期】链接有效期 【作用】 1、用于设置获取到的链接在多长时间后过期 2、参数不传值时,链接有效期取电子签章管理后台设置的“接口页面默认有效期 3、参数传入时长超过电子签章管理后台设置的“接口页面最大有效期天数”时,将以后台设置的有效期为准 【传参】 最小值:1。单位:秒。 ExpireTime *int64 `json:"expireTime,omitempty"` FormObject *common.DocumentFormDto `json:"formObject,omitempty"` StampWaterMarksObject []*common.DocumentStampWaterMarkContent `json:"stampWaterMarksObject,omitempty"` WaterMarksObject []*common.DocumentWaterMarkContent `json:"waterMarksObject,omitempty"` } func (obj V2DocumentCreatebyfileRequest) GetUrl() string { return "/v2/document/createbyfile" } func (obj V2DocumentCreatebyfileRequest) GetHttpParameter() *http.HttpParameter { parameter := http.NewPostHttpParameter() parameter.AddParam("base64Str", obj.Base64Str) parameter.AddParam("title", obj.Title) parameter.AddParam("fileType", obj.FileType) parameter.AddParam("width", obj.Width) parameter.AddParam("height", obj.Height) parameter.AddParam("pageRolate", obj.PageRolate) parameter.AddParam("openPassword", obj.OpenPassword) parameter.AddParam("editPassword", obj.EditPassword) parameter.AddParam("isPassword", obj.IsPassword) parameter.AddParam("password", obj.Password) parameter.AddParam("angle", obj.Angle) parameter.AddParam("viewDownload", obj.ViewDownload) parameter.AddParam("expireTime", obj.ExpireTime) parameter.AddFiles("file", obj.File) if obj.FormObject != nil { jsonBytes, _ := json.Marshal(obj.FormObject) parameter.AddParam("form", string(jsonBytes)) } else { parameter.AddParam("form", obj.Form) } if obj.StampWaterMarksObject != nil { jsonBytes, _ := json.Marshal(obj.StampWaterMarksObject) parameter.AddParam("stampWaterMarks", string(jsonBytes)) } else { parameter.AddParam("stampWaterMarks", obj.StampWaterMarks) } if obj.WaterMarksObject != nil { jsonBytes, _ := json.Marshal(obj.WaterMarksObject) parameter.AddParam("waterMarks", string(jsonBytes)) } else { parameter.AddParam("waterMarks", obj.WaterMarks) } return parameter }