Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 覆盖签名图像时出错_Java_Digital Signature_Cosign Api - Fatal编程技术网

Java 覆盖签名图像时出错

Java 覆盖签名图像时出错,java,digital-signature,cosign-api,Java,Digital Signature,Cosign Api,我尝试为iPad应用程序使用SOAP API对PDF文件进行签名,每次我都使用特定的图形签名名称进行覆盖,并使用它对文档进行签名 对于某些图像,我无法覆盖它,因此 “未能创建图形签名90030704” 我必须先从web应用程序中删除它。 这是我的密码 String signDocumentSignatureType=”http://arx.com/SAPIWS/DSS/1.0/signature-field-create-sign"; // 这个 字符串签名类型=”http://arx.com

我尝试为iPad应用程序使用SOAP API对PDF文件进行签名,每次我都使用特定的图形签名名称进行覆盖,并使用它对文档进行签名

对于某些图像,我无法覆盖它,因此 “未能创建图形签名90030704”
我必须先从web应用程序中删除它。 这是我的密码

String signDocumentSignatureType=”http://arx.com/SAPIWS/DSS/1.0/signature-field-create-sign"; // 这个
字符串签名类型=”http://arx.com/SAPIWS/DSS/1.0/set-graphic-image";
字符串wsdlUrl=Settings.wsdlUrl();
////指向WSDL文件的URL
试一试{
//读取文件内容
FileInputStream docInputStream=新的FileInputStream(filePath);
byte[]fileBuffer=新字节[(int)docInputStream.getChannel().size()];
读取(文件缓冲区);
docInputStream.close();
//设置文件内容+MIME类型(SOAP库自动
//base64(对数据进行编码)
DocumentType document=新的DocumentType();
Base64Data Base64Data=新的Base64Data();
base64Data.setValue(文件缓冲区);
base64Data.setMimeType(fileMimeType);
文件.setbase64数据(base64数据);
//设置用户凭据。如果是Active Directory,则域
//名称应在NameQualifier属性中定义
ClaimedIdentity ClaimedIdentity=新ClaimedIdentity();
NameIdentifierType nameIdentifier=新的NameIdentifierType();
nameIdentifier.setValue(用户名);
nameIdentifier.setNameQualifier(域);
CoSignAuthDataType coSignAuthData=新的CoSignAuthDataType();
coSignAuthData.setLogonPassword(密码);
setName(nameIdentifier);
claimedIdentity.setSupportingInfo(coSignAuthData);
//定义签名字段设置
SAPISigFieldSettingsType sigFieldSettings=新SAPISigFieldSettingsType();
sigFieldSettings.setInvisible(false);
sigFieldSettings.setX(sigX);
sigFieldSettings.setY(sigY);
sigFieldSettings.setWidth(sigWidth);
sigFieldSettings.setHeight(sigHeight);
sigFieldSettings.setPage(sigPageNum);
sigFieldSettings.setAppearanceMask(appearanceMask);
TimeDateFormatType timeDateFormat=新的TimeDateFormatType();
timeDateFormat.setTimeFormat(timeFormat);
timeDateFormat.setDateFormat(dateFormat);
setExtTimeFormat(ExtendedTimeFormatEnum.GMT);
sigFieldSettings.setTimeFormat(timeDateFormat);
//设置图形图像
GraphicImageType sigImage=新的GraphicImageType();
setDataFormat(Integer.valueOf(8.longValue());
sigImage.setGraphicImageName(“iPadSignature”);
sigImage.setImageType(GraphicImageTypeEnum.GRAPHIC_IMAGE);
sigImage.setGraphicImage(signatureImage);
//将新创建的图像指定为要使用的图像
ArrayOfConfValueType confValArray=新的ArrayOfConfValueType();
ConfValueType confVal=新的ConfValueType();
confVal.setConfValueID(ConfIDEnum.GR_SIG_PREF_NAME);
确认设置字符串值(“iPadSignature”);
confValArray.getConfValue().add(confVal);
//optInputs.setConfigurationValues(confValArray);
//生成完整的请求对象
SignRequest SignRequest=新的SignRequest();
RequestBaseType.InputDocuments InputDocuments=新的RequestBaseType.InputDocuments();
inputDocuments.GetTransformedDataOrdDocumentsHasorother().add(document);
RequestBaseType.OptionalInputs OptionalInputs=新的RequestBaseType.OptionalInputs();
optionalInputs.setSignatureType(signatureType);
optionalInputs.setClaimedIdentity(claimedIdentity);
optionalInputs.setSAPISigFieldSettings(sigFieldSettings);
optionalInputs.setReturnPDFTailOnly(真);
optionalInputs.setGraphicImageToSet(sigImage);
optionalInputs.setConfigurationValues(confValArray);
signRequest.setOptionalInputs(optionalInputs);
signRequest.setInputDocuments(inputDocuments);
//启动服务客户端
DSS客户端=新DSS(新URL(wsdlUrl)、新QName(“http://arx.com/SAPIWS/DSS/1.0/“,“DSS”);
Common.logInfo(“DSS客户端启动”);
//发送创建签名请求
DssSignResult response=client.getDSSSoap().dssSign(signRequest);
//检查响应输出
if(“urn:oasis:names:tc:dss:1.0:resultmajor:Success.”等于(response.getResult().getResultMajor()){
//成功时-将请求类型更改为签署文档。
Common.logInfo(“创建Signaure图像”);
optionalInputs.setSignatureType(signDocumentSignatureType);
//发送签名请求
response=client.getDSSSoap().dssSign(signRequest);
Common.logInfo(“获取文档签名响应”);
if(“urn:oasis:names:tc:dss:1.0:resultmajor:Success.”等于(response.getResult().getResultMajor()){
//成功时-将签名对象附加到源PDF
//文档(SOAP库自动解码
//base64编码输出)
Common.logInfo(“成功签署文件”);
字节[]signatureObjectBuffer=response.getSignatureObject().getBase64Signature().getValue();
Common.logInfo(“写入文件路径-->”+filepath);
FileOutputStream fos=新的FileOutputStream(filePath,true);
fos.write(签名对象缓冲区);
fos.close();
}
}否则{
Common.logInfo(“创建签名图像时出错”);
Common.logInfo(“错误-->”+response.getResult().getResultMessage().getValue());
Common.logInfo(“字符串-->”错误+response.getResult().getResultMinor());
返回null;
}
来自:

0x90030704-中已存在同名的图形图像 用户帐户或具有相同名称的签名字段已存在 存在于文档中


图形签名不应被覆盖。如果您希望为该图像使用相同的名称,则必须先删除旧的图像。

在API中,它表示可以覆盖该图像。确实可以。但在某些情况下,它不是。90%的覆盖次数,其余5%的覆盖次数表示该名称已存在。知道原因吗?!!正确。使用