如何解决pdfbox 标志错误文档已被更改或损坏
这是我在 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 举报,一经查实,本站将立刻删除。