使用Groovy 1.8.6和Grails 2.1.0
使用嵌入式API,在用户签署文档后,浏览器会重定向回我的应用程序。使用"Get Envelope Documents and Certificate"
API将文档下载到服务器。网址格式:
"${baseUrl}/envelopes/${envelopeId}/documents/combined"
代码段(删除了少量详细信息):
private void getDocument(requestUrl) {
def connection = urlConnect(requestUrl, null, "GET")
if (connection.responseCode == 200) {
savePDF(envelopeId, connection.inputStream)
}
}
private void savePDF(envelopeId, inputStream) {
String filePath = getSavedPDFPath(envelopeId)
def pdfWriter = new File(filePath).newWriter()
pdfWriter << inputStream
pdfWriter.close()
}
结果文件不是100%正确,Adobe Reader会抱怨"at least one signature is invalid"
。读者至少知道该文件是由DocuSign,Inc。签署的,并且可以显示有关证书的详细信息。
答案 0 :(得分:1)
根据问题的评论主题,问题是由文件的保存方式引起的。使用此代码,文件正确保存/打开:
private void savePDF(envelopeId, connection)
{
FileOutputStream fop = null;
File file;
String filePath = getSavedPDFPath(envelopeId);
try {
file = new File(filePath);
fop = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int numRead;
while((numRead = connection.getInputStream().read(buffer)) > 0)
{
fop.write(buffer, 0, numRead);
}
fop.flush();
fop.close();
}
catch (Exception e)
{
throw new RuntimeException(e);
}
}