问题描述
这是我在 git 中的项目:https://github.com/phuclv3/sign_nature.git 请帮帮我!!!
// Generate pdf hash file
public static byte[] getPdfBytesToSign(File pdf,PDSignature signature,HashAlgorithm hashAlg,String password,PDVisibleSigProperties visibleSignatureProperties) throws Exception {
PDDocument doc = null;
File pdfTempFile = null;
try {
if (password == null) {
doc = PDDocument.load(pdf);
} else {
doc = PDDocument.load(pdf,password);
}
final MessageDigest digest = MessageDigest.getInstance(hashAlg.getValue());
SignatureInterface signatureInterface = new SignatureInterface() {
@Override
public byte[] sign(InputStream content) throws IOException {
digest.update(IoUtils.toByteArray(content));
return digest.digest();
}
};
SignatureOptions signatureOptions = new SignatureOptions();
if (visibleSignatureProperties != null) {
signatureOptions.setVisualSignature(visibleSignatureProperties);
signatureOptions.setPage(visibleSignatureProperties.getPage() - 1);
}
// Add signature
doc.addSignature(signature,signatureInterface,signatureOptions);
// Create output stream
pdfTempFile = File.createTempFile("chars",String.valueOf(Calendar.getInstance().getTimeInMillis()));
OutputStream fos = new FileOutputStream(pdfTempFile);
if (doc.getDocumentId() == null) {
doc.setDocumentId(0L);
}
// Fire method in signature inteface
doc.saveIncremental(fos);
return digest.digest();
} catch (Exception ex) {
ex.printstacktrace();
throw ex;
} finally {
doc.close();
if (pdfTempFile != null)
FileUtils.deleteQuietly(pdfTempFile);
}
}
这是剩下的
// this method attachedPdfSignature
public static void attachPdfSignature(File pdfInput,byte[] signedByte,PDVisibleSigPropertiesvisibleSignatureProperties,OutputStream pdfOutput) 抛出异常 { PDDocument 文档 = 空; 尝试 { 如果(密码==空){ doc = PDDocument.load(pdfInput); } 别的 { doc = PDDocument.load(pdfInput,密码);
}
doc.getDocument().getTrailer().removeItem(COSName.TYPE);
SignatureInterface signatureInterface = new SignatureInterface() {
@Override
public byte[] sign(InputStream content) throws IOException {
return signedByte;
}
};
// register signature dictionary and sign interface
SignatureOptions signatureOptions = new SignatureOptions();
if (visibleSignatureProperties != null) {
signatureOptions.setVisualSignature(visibleSignatureProperties);
signatureOptions.setPage(visibleSignatureProperties.getPage() - 1);
}
// Assign signature
doc.addSignature(signature,signatureOptions);
// Fire method in signature interface
doc.setDocumentId(0L);
doc.saveIncremental(pdfOutput);
} catch (Exception ex) {
ex.printstacktrace();
throw ex;
} finally {
doc.close();
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)